我有两张桌子说ABC和XYZ,
表ABC:
B C ID ABC_ID
====================
50 30 10 2
60 31 11 3
注意:所有值字段都是整数。
表XYZ:
group condition value ID
================================
B = 50 10
C > 30 11
注意:
我正在根据列ID加入这两个表。 表XYZ中的组有许多值,这些值是表ABC中的列。
所以,我的问题是:
一旦ID匹配,我将从表XYZ获得上述情况中group的值为B.然后使用该值,我应该如何从表ABC中获取B的值?
我想做类似的事情:
select A.(X.group) from ABC A join XYZ X on A.ID = X.ID;
一旦我能够使用步骤1(如上所述)获得列B的值,我需要形成类似于(组条件值)的表达式,例如:在有效情况下B = 50并从表达式中的表ABC中替换B的值。需要评估形成的表达式,如果为true,则需要从表ABC返回ABC_id。我该如何评估表达式?
我正在做这样的事情:
select A.ABC_ID from XYZ X join ABC A on A.ID = X.ID where X.(A.group) A.condition A.value;
我尝试过使用PREPARE'ing和EXECUTE'ing但ABC和XYZ的连接会给出多行作为一组。它不起作用。
SELECT X.group, X.condition, X.value
from XYZ X join ABC A
on X.ID = A.ID
into @colname, @condition, @value;
SET @qry = CONCAT('SELECT * from ABC WHERE ',@colname,@condition,@value);
PREPARE stmt FROM @qry;
EXECUTE stmt;
感谢。
答案 0 :(得分:0)
我在这里创建了一个这样的平台:http://sqlfiddle.com/#!2/15e205/5
请注意,我更改了group
和condition
的名称,因为它们是reserved words,并且对列名称来说确实不是很好的选择。
我正在使用CONCAT()根据在XYZ中检索到的值构建查询。
SELECT grp, cndition, value
from XYZ
where id = 10
into @colname, @condition, @value;
SET @qry = CONCAT('SELECT * from abc WHERE ',@colname,@condition,@value);
PREPARE stmt FROM @qry;
EXECUTE stmt;