有一个查询:
SELECT blalist FROM blatable WHERE blafield=714
返回一个类似于“2,12,29,714,543,1719”的字符串。还有另一个问题:
SELECT userid, name, surname, creditcardnum, items
FROM stolencards WHERE userid IN
(SELECT blalist FROM blatable WHERE blafield=714)
现在这不起作用了。我只是通过分别执行这些查询来设法让它工作。我该怎么做才能将它保存在一个查询中?
答案 0 :(得分:4)
您不应该在一个单元格中存储多个值。 blatable
中的每个值都应该在自己的行中,然后您的IN
子句就像魅力一样。看一下数据库规范化,特别是First normal form关于如何设计表的方法。
由于您拥有一个单元格中的所有值,因此执行IN
比较会导致所有用户标识与字符串“2,12,29,714,543,1719”进行比较,这显然是不匹配的。您的查询实际上如下所示:
...FROM stolencards WHERE userid IN ("2,12,29,714,543,1719")
答案 1 :(得分:0)
检查blalist和userid的数据类型是否相同,或blalist真的返回userid?
答案 2 :(得分:0)
如果您指定了正确的数据类型和pk和fk关系,请尝试以下操作:
SELECT s.userid, s.name, s.surname, s.creditcardnum, s.items
FROM stolencards s inner join blatable b on s.userid = b.blafield
where b.blafield = 714