我必須選擇一個計數列,按兩個數據源中的日期分組。我將結果集作爲子查詢加入。然而,結果是假的。正如我所看到的,這個問題與JOIN .. ON
條款有關。此查詢工作正常:連接子查詢的列範圍
SELECT id
FROM pu a
LEFT JOIN (
SELECT
COUNT(pd.id) AS c_id1,
NULL AS c_id2,
LEFT(pd.start_date, 10) AS date,
pd.pid
FROM
p_d pd
**WHERE pd.pid = 111**
GROUP BY date
UNION
SELECT
NULL AS c_id1,
COUNT(pd.id) AS c_id2,
LEFT(pd.inactivation_date, 10) AS date,
pd.pid
FROM
p_d pd
**WHERE pd.pid = 111**
GROUP BY date
) x
ON x.pid = a.id;
但是這一個(不WHERE
子句)返回一個錯誤的結果集:
SELECT id
FROM pu a
LEFT JOIN (
SELECT
COUNT(pd.id) AS c_id1,
NULL AS c_id2,
LEFT(pd.start_date, 10) AS date,
pd.pid
FROM
p_d pd
GROUP BY date
UNION
SELECT
NULL AS c_id1,
COUNT(pd.id) AS c_id2,
LEFT(pd.inactivation_date, 10) AS date,
pd.pid
FROM
p_d pd
GROUP BY date
) x
ON x.pid = a.id;
很可能在不知何故加入子查詢使用a.id
?現在是「未知專欄」。
後一個結果有什麼問題?有點難以猜測你期待的結果。 –
Joachim,第二個查詢僅返回帶有僞造數字的前3-4行(日期)。第一個返回所有的行(在這種情況下,〜80)與正確的計數。 – Eduard7