【发布时间】:2017-08-26 17:39:03
【问题描述】:
这是我的程序中的一段 sql:
....
SET @list := (
SELECT
`i`.`id`
FROM
`Item` AS `i`
Order by RAND()
LIMIT 10
);
RETURN CONCAT_WS( '-', @list );
在程序内部,我需要将查询的结果(是的,查询返回多行作为结果)设置为某个变量。
然后作为第二个变量,我需要将之前的结果连接成一个字符串。
但是当我这样做时,我收到以下错误:
Sub-query returns more than 1 row
所以问题是,我做错了什么?
顺便说一句,我知道group_concat。在程序的第二部分中,需要检查此@list 变量上是否存在某些 id:find_in_set(item_id, @list )
每次我调用它时,查询都会返回随机结果。
这就是为什么,调用子查询 2 次:1 次作为组连接字符串,第二次作为结果列表对我来说不是解决方案。所以,我需要将它们作为一组存储在变量中。
【问题讨论】:
标签: mysql sql variables stored-procedures