题
我试图使用IN内的另一个字段的值。
SELECT types.id, title, auth_users.types
FROM types
LEFT JOIN auth_users ON auth_users.id IN (8,9)
WHERE types.id IN (1,2,3)
GROUP BY types.id
作品
SELECT types.id, title, auth_users.types
FROM types
LEFT JOIN auth_users ON auth_users.id IN (8,9)
WHERE types.id IN (auth_users.types)
GROUP BY types.id
不工作
http://pastebin.com/m76ae0596 更多信息可以在这里找到
auth_users.types = 1,2,3
解决方案
您需要使用FIND_IN_SET
- 看这个问题: MySQL的:使用IN操作符Select语句
其他提示
不幸的是,IN (...)
不会尝试解析VARCHAR字段的值来提取您要匹配的值。
它基本上只检查如果 “types.id” 是 “1,2,3”(即,不为1,2或3,但实际单值 “1,2,3”。)
要解决这将是具有在返回一个结果数据库的函数,并且需要在VARCHAR值,解析它,并为您的示例返回3行。单程
除此之外,你需要或者改写用LIKE(将可怕执行),或者您需要解析自己的那些值,并将结果置于直接的SQL。
尝试行子查询:
SELECT column1,column2,column3
FROM t1
WHERE (column1,column2,column3) IN
(SELECT column1,column2,column3 FROM t2);
编辑:
其实,看你的引擎收录,你存储“1,2,3”中单列为VARCHAR?这是行不通的。
我想他正在寻找一个简单的加入
LEFT JOIN auth_users ON types.id = auth_users.types
WHERE auth_users.id IN(8,9)
不隶属于 StackOverflow