這裏面是從我的程序塊的sql:指定查詢的結果爲可變的MySQL程序
....
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
變量上的某個標識:find_in_set(
item_id , @list)
並且查詢每次調用它時都會返回隨機結果。 這就是爲什麼,調用子查詢2次:1次作爲組concat字符串,第二次就像結果列表不是我的解決方案。所以,我需要它們作爲一個存儲在變量中的集合。
先生,你看,這個程序生成隨機組合代碼。並且在生成後,我將檢查此組合的ID是否存在於先前生成的組合上,因此我需要使用相同的組合來生成串聯和檢查。如果我找對了,你建議多次調用該查詢。但這不是我的情況的解決方案 – demonoid
爲了說清楚,我正在粘貼完整的程序的sql:https://pastebin.com/dj4RNXkX – demonoid
問題的根源在這裏:https://stackoverflow.com/q/45057324/971388由於答案之一,我正在處理這個問題:https://stackoverflow.com/a/45878858/971388 – demonoid