1

有一个查询:

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)

现在那行不通了。
我只能通过单独执行这些查询来使其工作。我应该怎么做才能将其保留在单个查询中?

4

3 回答 3

4

您永远不应在一个单元格中存储多个值。每个值都blatable应该在它自己的行中,然后你的IN子句就会像一个魅力一样工作。看看数据库规范化,尤其是关于如何设计表的第一范式。

由于您在一个单元格中拥有所有值,因此进行IN比较会导致所有用户 ID 与字符串“2,12,29,714,543,1719”进行比较,这显然不匹配。您的查询实际上如下所示:

...FROM stolencards WHERE userid IN ("2,12,29,714,543,1719")
于 2010-01-25T14:22:13.733 回答
0

检查 blalist 和 userid 的数据类型是否相同,或者 blalist 是否真的返回 userid?

于 2010-01-25T14:17:09.097 回答
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
于 2010-01-25T14:18:52.493 回答