我有兩個表:tableA和tableB。我如何獲得tableA中的所有記錄,但不是tableB中的記錄?我對正確的方式感興趣,而不是解決方法。我嘗試使用左連接,然後添加where ID is not null
。它有效,但我不確定這是否是正確的做法。2個SQL表之間的區別
2
A
回答
4
select * from tableA
where id not in (select id from tableB)
或
select * from tableA a
left join tableB b on a.id = b.id
where b.id is null
兩者都是以獲取你的要求完全可以接受的方式。
0
如果需要在頁面上顯示數據(編程),如果需要將數據從一個表移動到另一個表進行備份或其他類似目的,則必須使用連接,則需要sql比較工具。 首先你需要sql左連接。讓你的表格中的左一個,並把和爲B
select * from A
left join B on A.id = B.id
where b.id is null
0
可以使用NOT EXISTS
加入。我傾向於使用NOT EXISTS
,因爲當列允許空值但沒有空值時,NOT IN
的性能明顯劣於NOT EXISTS
。
Select * from table1 a
Where not exists (Select ID from table2 b where a.ID = b.ID)
在non-nullable
列,您可以使用其中的哪個適合於您的情況作爲的行爲和NOT IN
性能和NOT EXISTS是一樣的。
0
的Sql小提琴[] [1]
Demohttp://www.sqlfiddle.com/#!3/10300/2
select * from table1 where id not in(select id from table2)
0
因爲你沒有給表架構讓我們假設有每個table.id1主鍵,ID2
你可以在左連接的幫助下完成。
SELECT * FROM表1左連接表2,其中ID2是空
注意,這不是一個實際的查詢只是一個提示讓你先走。
相關問題
- 1. 2個數據表之間的區別
- 2. 2個solr查詢之間的區別
- 3. 2個JUnit Assert類之間的區別
- 4. 使2個按鈕之間的區別
- 5. 2個exe文件之間的區別
- 6. SQL - SPACE(2)+'|'之間的區別+空格(2)和'| 「?
- 7. 在MS Access或SQL Server中查找2個表之間的區別
- 8. 2個變量之間的區別列表TIBCO BW
- 9. 找到2個Excel工作表之間的區別?
- 10. 2個Xpath表達式之間的區別
- 11. 2個正則表達式字符串之間的區別
- 12. MySQL選擇2個表之間的所有區別?
- 13. 兩個表之間的基本區別
- 14. 2 jquery綁定之間的區別
- 15. 2小時之間的區別jquery
- 16. Long.toBinaryString()和Long.toString(num,2)之間的區別?
- 17. MS Excel:2列之間的區別。
- 18. [Object,Object]和Array之間的區別(2)
- 19. 如何檢查sql中兩個表之間的區別?
- 20. 2個表之間的SQL查詢
- 21. 'OR'和'||'之間的區別在SQL中?
- 22. SQL關鍵字之間的區別
- 23. PDO:rowCount()和SQL COUNT(col)之間的區別
- 24. .SQL和.DUMP文件之間的區別
- 25. Apache Spark SQL和MongoDB之間的區別?
- 26. SQL - COALESCE和ISNULL之間的區別?
- 27. PROC SQL和sqldf之間的區別
- 28. 兩個時間戳之間的區別
- 29. 兩個時間項之間的區別
- 30. 臨時表和表變量之間的區別在SQL 2005中
沒有加入的人應該會更快嗎?或者他們完全一樣?我總是被告知連接應該幾乎只用於顯示來自2個表格的數據,否則,使用select .. from ..在哪裏選擇... – Pacane 2012-08-06 17:14:58
我認爲這取決於。我在我的數據庫的表上做了兩個查詢的'select select ...',第一個語句對'null'鍵做了全表掃描。第二個沒有。但是,如果性能是一個問題,我會建議使用'explain'運行這兩個查詢並查看差異。 – 2012-08-06 17:19:23