簡體   English   中英

在 SELECT 語句中將兩個子查詢合並為一個?

[英]Merge two subqueries into one in a SELECT statement?

有沒有最好的方法用這兩個子查詢來制作這個 SELECT 語句?

SELECT N.ID, N.NAME 
   (SELECT TR.PUZZLE 
    FROM puzzles TR
    WHERE TR.TEAMID = "152" 
      AND TR.NID= N.ID) AS PUZZLE_OK,
   (SELECT TR.PUZZLE_BIS 
    FROM puzzles TR
    WHERE TR.TEAMID = "152" 
      AND TR.NID= N.ID) AS PUZZLE_BIS_OK
FROM news N
WHERE N.SERIESID = "1"

您可以改用JOIN重寫查詢:

SELECT N.ID, N.NAME, TR.PUZZLE AS PUZZLE_OK, TR.PUZZLE_BIS AS PUZZLE_BIS_OK
FROM news N
JOIN puzzles TR ON TR.NID = N.ID
WHERE N.SERIESID = "1"
  AND TR.TEAMID = "152"

請注意,如果對於來自news的給定ID值可能不存在puzzles條目,您應該使用LEFT JOIN並將puzzles上的WHERE條件移動到JOIN 然后,這將以與您的子查詢相同的方式返回PUZZLE_OKPUZZLE_BIS_OK NULL值:

SELECT N.ID, N.NAME, TR.PUZZLE AS PUZZLE_OK, TR.PUZZLE_BIS AS PUZZLE_BIS_OK
FROM news N
LEFT JOIN puzzles TR ON TR.NID = N.ID AND TR.TEAMID = "152"
WHERE N.SERIESID = "1"

注意我已將news上的別名更改為N以保持SELECT子句與您問題中子查詢中的內容一致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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