将结果从单行循环到JOIN表以进行多个定义匹配

时间:2018-01-26 03:36:25

标签: mysql sql

我需要加入/循环一些数据,但不知道如何只使用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)

看起来不像我的谷歌搜索通配符,但这里有人可能知道一个技巧。如何将第一个表中的所有值作为列表,对其运行查询以将每个代码的定义作为单独的行返回?

1 个答案:

答案 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, . . . )
             );

表现不会很好。为此,请参阅修复数据模型的第一个建议。