我需要加入/循环一些数据,但不知道如何只使用Mysql嵌套/ WHERE IN类型查询。我有一个看起来像这样的表
id, code1, code2, code3, code4........... code20
1 12 41 1 55
所以很多列,它们都没有值,但是那些列的值,我需要获取每个代码并从表中返回一行代码,如下所示:
codeid, description
1 item1
12 item12
13 item13
41 item41
...
我希望我可以在我的选择中使用通配符,例如
SELECT description FROM table2 WHERE IN(SELECT code* FROM table1)
看起来不像我的谷歌搜索通配符,但这里有人可能知道一个技巧。如何将第一个表中的所有值作为列表,对其运行查询以将每个代码的定义作为单独的行返回?
答案 0 :(得分:1)
不,您不能使用通配符。这是您的数据结构的问题。只要您的列只有数字区分,您可能会遇到数据模型的问题。
相反,您应该有一个每id
和每code
一行的表格。
您可以执行以下操作:
select t2.description
from table2 t2
where exists (select 1
from table1 t1
where t2.code in (t1.code1, t1.code2, . . . )
);
表现不会很好。为此,请参阅修复数据模型的第一个建议。