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

标签 mysql sql

我需要连接/循环一些数据,但不知道如何仅使用 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/

相关文章:

多态关联连接的 MySQL 错误 id 返回

mysql - R或Mysql : Change values of a column to null if they are not present in another row of the same dataframe

php - CakePHP:如何包含所有顶级关联

php - 从 android 连接到数据库 mySQL 失败

php - 使用 Symfony 表单上传多个文件

mysql - SQL 查询 : deleting duplicate rows from different tables with same columns

sql - 如何从 cfquery 检索 SQL 变量?

java - SQL ORDER BY 子句可以与数据源中的任何列一起使用吗?

mysql - 如何对多个 NULLABLE 列进行唯一索引约束?

java - Android Room - 处理对象中的对象列表和查询结果