[英]Subquery returns more than 1 row
我有以下查詢
SELECT Group_concat(employeename) AS name
FROM employee
WHERE Find_in_set(Find_in_set(employeeid,
(SELECT participantsids
FROM schedule
WHERE validfrom = '2016-04-21 17:00:00'
AND validto = '2016-04-21 17:30:00')
), '1,2');
這給我一個正確的價值..但現在我必須檢查
SELECT participantsids
FROM schedule
WHERE validfrom <= '2016-04-21 17:00:00'
AND validto >= '2016-04-21 17:30:00';
這會返回更多行,但我想在第一個查詢中包含這個,所以我嘗試了這個
SELECT Group_concat(employeename) AS name
FROM employee
WHERE Find_in_set(Find_in_set(employeeid,
(SELECT participantsids
FROM schedule
WHERE validfrom <= '2016-04-21 17:00:00'
AND validto >= '2016-04-21 17:30:00')
), '1,2');
這將返回錯誤“子查詢返回超過1行”
我已嘗試在子查詢之前使用ANY和In ,但它顯示語法錯誤,我的問題是我應該在什么時候正確使用它們?
你可以嘗試限制
SELECT participantsids
FROM schedule
WHERE validfrom <= '2016-04-21 17:00:00'
AND validto >= '2016-04-21 17:30:00'
LIMIT 1;
在你的情況下,我認為你以不正確的方式使用Find_in_set你應該使用這樣的集合表示法
SELECT Group_concat(employeename) AS name
FROM employee
WHERE ( employeeid,
(SELECT participantsids
FROM schedule
WHERE validfrom <= '2016-04-21 17:00:00'
AND validto >= '2016-04-21 17:30:00'
LIMIT 1) = (1,2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.