我正在尝试创建一个查询,其中根据位于另一个表上的数据选择了选定的行。本质上,一个表具有我们要匹配的列名以及我们要获取的值。
例如,说这些是我的桌子:
TABLE_1
TABLE_2_COL | VALUE
--------------------
COL_1 | dog
COL_2 | cat
COL_3 | fish
TABLE_2
id | COL_1 | COL_2 | COL_3
------------------------
1 | cow | seal | snake
2 | cow | cat | snake
3 | cow | seal | dog
4 | fish | seal | snake
我想做类似的事情
select t2.*
from TABLE_1 t1
left join TABLE_2 t2
on t2[t1.TABLE_2_COL] = t1.VALUE <- this line obviously not correct, but it's the line that respresents what I'm trying to do
将会返回
id | COL_1 | COL_2 | COL_3
----------------------------
2 | cow | cat | snake
表1的“ TABLE_2_COL”列将始终包含TABLE_2列之一的名称。由于TABLE_2中唯一要满足查询条件的行是2(其中COL_2是'cat'),因此返回的行。
答案 0 :(得分:1)
这不是很好的数据格式,但是您可以这样做:
select t2.*
from table_2 t2 join
table_1 t1
on (t1.TABLE_2_COL = 'col1' and t1.value = t2.col1) or
(t1.TABLE_2_COL = 'col2' and t1.value = t2.col2) or
(t1.TABLE_2_COL = 'col3' and t1.value = t2.col3);