我有以下查询工作:
SELECT DISTINCT table1.field1, table1.field2
FROM table1
WHERE table1.field3 IN (1,2,3)
Run Code Online (Sandbox Code Playgroud)
结果:
field1 field2
Data1 60
Data2 61
Data3 62
Run Code Online (Sandbox Code Playgroud)
以下查询只给出第一行,它应该给出与第一个查询完全相同的结果.
SELECT DISTINCT table1.field1, table1.field2
FROM table1
WHERE table1.field3 IN (SELECT table2.field1 FROM table2 WHERE table2.field2 = 100)
Run Code Online (Sandbox Code Playgroud)
结果:
field1 field2
Data1 60
Run Code Online (Sandbox Code Playgroud)
如果我执行subquery (SELECT table2.field1 FROM table2 WHERE table2.field2 = 100),结果是"1,2,3",就像第一个查询一样.
我错过了什么?
你缺少的是带有值的字符串'1,2,3'不是三个整数的列表.这是一个字符串.
如果你想x IN (SELECT y FROM z)以同样的方式表现为x IN (1,2,3),那么你的子查询必须返回三个项目,与价值观1,2和3.
Web上
有Split()函数,它们接受一个字符串并返回一个由多个整数组成的记录集.这可能会解决您的问题.
但是,如果您有一个包含多个值的单个字段的记录,则表明存在更深层次的问题.您永远不应将关系数据库中的多个值存储为单个字符串.而是存储多个记录或多个字段.
| 归档时间: |
|
| 查看次数: |
1780 次 |
| 最近记录: |