Mysql 子查询inside-IN子句

Mysql 子查询inside-IN子句,mysql,sql,Mysql,Sql,我有以下查询正在运行: SELECT DISTINCT table1.field1, table1.field2 FROM table1 WHERE table1.field3 IN (1,2,3) 结果: field1 field2 Data1 60 Data2 61 Data3 62 field1 field2 Data1 60 下面的查询只给出了第一行,它应该给出与第一个查询完全相同的结果 SELECT DISTINCT table1.field1, table1

我有以下查询正在运行:

SELECT DISTINCT table1.field1, table1.field2
FROM table1
WHERE table1.field3 IN (1,2,3)
结果:

 field1 field2
 Data1  60
 Data2  61
 Data3  62
 field1 field2
 Data1  60
下面的查询只给出了第一行,它应该给出与第一个查询完全相同的结果

SELECT DISTINCT table1.field1, table1.field2
FROM table1
WHERE table1.field3 IN (SELECT table2.field1 FROM table2 WHERE table2.field2 = 100)
结果:

 field1 field2
 Data1  60
 Data2  61
 Data3  62
 field1 field2
 Data1  60
如果执行子查询,从table2中选择table2.field1,其中table2.field2=100,结果是1,2,3,与第一个查询完全相同

SELECT DISTINCT table1.field1, table1.field2
FROM table1
WHERE table1.field3 IN (SELECT table2.field1 FROM table2 WHERE table2.field2 = 100)

我缺少什么?

您缺少的是值为“1,2,3”的字符串不是三个整数的列表。一根绳子

如果希望SELECT y FROM z中的x的行为方式与1,2,3中的x相同,则子查询必须返回三个值为1、2和3的项

web上有拆分函数,它接受字符串并返回由多个整数组成的记录集。这可能会解决你的问题


但事实上,您有一条记录,其中一个字段包含多个值,这是一个更深层次问题的迹象。决不能将多个值作为单个字符串存储在关系数据库中。而是存储多个记录或多个字段。

您可以发布一些示例数据吗?请在您的帖子中复制粘贴查询结果,并在表descr中复制。发布数据时,在select子句中包含字段3。子查询返回的是三个单独的行,还是一个单一字符串1、2、3?子查询的结果是一个值为“1、2、3”的字符串,还是三个值为1、2和3的记录?因为1,2,3[三个整数的列表]中的x与'1,2,3'[一个字符串的列表]中的x有根本不同,所以子查询返回一行,一个字符串