我需要连接/循环一些数据,但不知道如何仅使用 Mysql 嵌套/WHERE IN 类型查询来做到这一点。我有一张看起来像这样的 table
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)
从我的谷歌搜索看来,通配符是不可能的,但这里有人可能知道一个技巧。如何将第一个表中的所有值作为列表,对其运行查询以将每个代码的定义作为单独的行返回?
最佳答案
不,您不能使用通配符。这是你的数据结构的问题。每当您有仅通过数字区分的列时,您可能会遇到数据模型问题。
相反,您应该有一个表,其中每个 id
和每个 code
一行。
你可以这样做:
select t2.description
from table2 t2
where exists (select 1
from table1 t1
where t2.code in (t1.code1, t1.code2, . . . )
);
性能不会很好。为此,请参阅修复数据模型的第一个建议。
关于mysql - 将结果从单行循环到 JOIN 表以进行多个定义匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48455451/