繁体   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