如何将MySQL结果转换为字符串?

时间:2010-01-25 14:14:38

标签: mysql query-performance

有一个查询:

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)

现在这不起作用了。我只是通过分别执行这些查询来设法让它工作。我该怎么做才能将它保存在一个查询中?

3 个答案:

答案 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