簡體   English   中英

子查詢返回多行

[英]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行”

我已嘗試子查詢之前使用ANYIn ,但它顯示語法錯誤,我的問題是我應該在什么時候正確使用它們?

你可以嘗試限制

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM