我對SQL有相當新的想理解下面的邏輯。在INNER JOIN中使用AND
SELECT *
FROM Table A A1
INNER JOIN TABLE B B1 ON B1.ID = A1.ID AND A1 = 'TASK';
不知道這是否是一個明確的細節,但請讓我知道。謝謝!
我對SQL有相當新的想理解下面的邏輯。在INNER JOIN中使用AND
SELECT *
FROM Table A A1
INNER JOIN TABLE B B1 ON B1.ID = A1.ID AND A1 = 'TASK';
不知道這是否是一個明確的細節,但請讓我知道。謝謝!
SELECT *
FROM Table A A1
INNER JOIN TABLE B B1 ON B1.ID = A1.ID AND A1.Column = 'TASK'
相同
SELECT *
FROM Table A A1
INNER JOIN TABLE B B1 ON B1.ID = A1.ID
WHERE A1.Column = 'TASK'
它甚至相同的性能明智的,它只是編寫查詢的方式不同。在非常大的查詢中,直接在INNER JOIN
上使用AND
而不是將其隱藏在WHERE
部分中可以更易讀。
這將無法運行在所有
SELECT *
FROM Table A A1 INNER JOIN
TABLE B B1
ON B1.ID = A1.ID AND A1 = 'TASK';
這將運行,因爲我加了一個列名(SomeColumn
):
SELECT *
FROM Table A A1 INNER JOIN
TABLE B B1
ON B1.ID = A1.ID AND A1.SomeColumn = 'TASK';
而且是相同的,因爲這
SELECT *
FROM Table A A1 INNER JOIN
TABLE B B1
ON B1.ID = A1.ID
WHERE A1.SomeCoumn = 'TASK';
每當你加入一個常量,它就像在where子句中增加一個額外的標準一樣。加入聯合的唯一原因是代碼清晰。
當你說'WHERE [Table Name] ='TASK''時,這意味着什麼? – SandPiper
是的,我剛剛注意到OP的錯誤並編輯了我的答案, –
你不明白什麼?這似乎很清楚。 –
'AND A1 ='TASK''我相信應該有列名 – lad2025
這似乎很清楚,直到我到了AND不知道該邏輯是如何工作的,謝謝@ lad2025捕捉,但我想了解如何使用AND INNER JOIN。 – sonnymoon