我有两张桌子 带有列名的TABLE_A COLUMN1 COLUMN2 COLUMN3 COLUMN4 COLUMN5 并且有数据
abc def ghi jkl mno
123 456 789 001 121
TABLE_B with columnname COLUMN6 COLUMN7 ,其数据为
COLUMN5 124
COLUMN4 bca
COLUMN3 aaa
COLUMN5 bbb
所以我将Table_A的列名作为table_B中的数据
所以我想在一个查询中做这样的事情
$ query1 =从TABLE_B中选择COLUMN6,其中COLUMN7 ='aaa';
$ query2 =从TABLE_A中选择$ query1,其中COLUMN1 ='123';
由于
答案 0 :(得分:0)
您需要有一个值来匹配表a - >到表B. 如果它看起来像这样:
表A - > id,名称
表B - > id,table_a_id,name
此查询将起作用:
SELECT a.name, b.name
FROM tableA as a
JOIN tableB as b ON a.id=b.table_a_id AND b.name='123'
WHERE a.name='aaaa'
获取表A和B的名称。我在这里使用表名的别名,以便于阅读。我希望,通过这个例子,这将回答你的问题。
如果您没有任何匹配的值,但希望跨越所有列,则可以执行以下操作:
SELECT a.name, b.name
FROM tableA a, tableB b
WHERE a.name='aaa' AND b.name='123'
答案 1 :(得分:0)
您可以使用CASE或DECODE来执行此操作:
select a.* from tableA a, tableB b
WHERE
b.column7 = 'aaa'
and case
when b.column6 = 'COLUMN1' then a.column1
when b.column6 = 'COLUMN2' then a.column2
when b.column6 = 'COLUMN3' then a.column3
when b.column6 = 'COLUMN4' then a.column4
when b.column6 = 'COLUMN5' then a.column5
else null end = '123' -- condition for tableA
您可以将此语句最多填充1000列(ORACLE硬限制):)