[英]Merge two subqueries into one in a SELECT statement?
Is there a best way to make this SELECT statement with these two subqueries ?有没有最好的方法用这两个子查询来制作这个 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"
You can rewrite your query using a JOIN
instead:您可以改用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"
Note that if it's possible no entry in puzzles
exists for a given ID
value from news
, you should use a LEFT JOIN
and move the WHERE
condition on puzzles
into the JOIN
.请注意,如果对于来自news
的给定ID
值可能不存在puzzles
条目,您应该使用LEFT JOIN
并将puzzles
上的WHERE
条件移动到JOIN
。 This will then return NULL
values for PUZZLE_OK
and PUZZLE_BIS_OK
in the same way as your subqueries will:然后,这将以与您的子查询相同的方式返回PUZZLE_OK
和PUZZLE_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"
Note I've changed the alias on news
to N
to keep the SELECT
clause consistent with what was in the subqueries in your question.注意我已将news
上的别名更改为N
以保持SELECT
子句与您问题中子查询中的内容一致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.