鑑於以下數據:
CREATE TABLE table1
(
colID INTEGER NOT NULL,
col1 INTEGER NOT NULL,
col2 INTEGER NOT NULL,
col3 INTEGER NOT NULL,
PRIMARY KEY(colID, col1, col2, col3)
);
INSERT INTO table1 VALUES(1, 1, 1, 1);
INSERT INTO table1 VALUES(1, 2, 1, 1);
INSERT INTO table1 VALUES(1, 1, 2, 1);
INSERT INTO table1 VALUES(1, 1, 1, 2);
INSERT INTO table1 VALUES(2, 2, 1, 1);
INSERT INTO table1 VALUES(2, 1, 2, 1);
CREATE TABLE db1.tb90
(
colID INTEGER NOT NULL,
col4 INTEGER NOT NULL,
PRIMARY KEY(ColID, Col4)
);
INSERT INTO db1.tb90 VALUES(1, 1);
INSERT INTO db1.tb90 VALUES(1, 2);
INSERT INTO db1.tb90 VALUES(1, 3);
INSERT INTO db1.tb90 VALUES(1, 4);
INSERT INTO db1.tb90 VALUES(1, 5);
您的疑問:
SELECT t1.colId, t1.col1, t1.col2, t1.col3, COUNT(t2.colId)
FROM table1 t1
LEFT OUTER JOIN (SELECT colId FROM db1.tb90) t2
ON t1.colId = t2.colId
GROUP BY 1, 2, 3, 4;
產生輸出:
colid col1 col2 col3 (count)
1 1 1 1 5
1 1 1 2 5
1 1 2 1 5
1 2 1 1 5
2 1 2 1 0
2 2 1 1 0
時對IBM Informix Dynamic Server的11.70.FC2在Mac OS上運行X 10.7.5。
如果這是Teradata爲相同數據提供的答案,那麼查詢計劃執行重複消除的事實並非探針;答案是正確的。如果這不是Teradata針對相同數據提供的答案,Teradata可能存在一個錯誤(IMNSHO,儘管自從我爲IBM工作在Informix上之後,我必須小心地將錯誤散佈到其他人的DBMS上)。
如果我誤解了這個問題,那麼請提供示例表格模式和值以及實際和預期輸出,以便我們可以更清楚地回顧發生的情況。您可能也想提供解釋輸出。
需要注意的是,你可以重寫查詢,如:
你可以看到,有在此再形成table1
不同的操作; Teradata可能會自動爲您進行轉換。
您是否試圖在t1.colId = t2.colID的每一行顯示相同的總計數t2.colId? –