我需要一個針對PHP的查詢或一個想法。SQL QUERY(在兩個表之間刪除)
我有兩個表:
新聞
ID MAME
--------
1 Test
2 Test1
3 Test2
4 Test3
7 Test3
產品
ID NAME PRICE
-------------
1 Test 11
9 Test2 22
8 Test4 122
我需要從產品,其中ID不存在新聞刪除記錄。
有人可以幫我一些想法嗎?
謝謝你的時間!
我需要一個針對PHP的查詢或一個想法。SQL QUERY(在兩個表之間刪除)
我有兩個表:
新聞
ID MAME
--------
1 Test
2 Test1
3 Test2
4 Test3
7 Test3
產品
ID NAME PRICE
-------------
1 Test 11
9 Test2 22
8 Test4 122
我需要從產品,其中ID不存在新聞刪除記錄。
有人可以幫我一些想法嗎?
謝謝你的時間!
DELETE Products
FROM Products
LEFT JOIN News
USING (ID)
WHERE News.ID IS NULL;
如果你想檢查從產品中刪除了什麼,請使用Paul首先使用select的優秀建議。
因此,與
SELECT *
FROM Products
LEFT JOIN News
USING (ID)
WHERE News.ID IS NULL;
檢查並切換回
DELETE Products
FROM Products
LEFT JOIN News
USING (ID)
WHERE News.ID IS NULL;
如果您滿意的結果。這是重要你DELETE Products FROM
而不是DELETE FROM
,否則將從兩個表中刪除。
他想刪除FROM產品,而不是新聞。這會繼續嗎? –
是的,DELETE Products FROM [table_reference]意味着它只會刪除products表中的行。基本上,來自加入的結果集合中的產品的所有行將被刪除,新聞中的任何內容都將被刪除。 – JustDanyul
http://dev.mysql.com/doc/refman/5.0/en/delete.html,查看在DELETE語句中執行連接的示例:)查找「對於第一個多表語法,只匹配從FROM子句之前列出的表中的行將被刪除。「在頁面上:) – JustDanyul
嘗試SELECT * FROM PRODUCTS WHERE ID NOT IN (SELECT ID FROM NEWS)
,如果這個工程然後更改SELECT *
到DELETE
這是很好的做法,嘗試選擇,以確保您得到正確的數據在刪除之前。
在'Products'表的'News'表上做一個RIGHT JOIN,並檢查'News.ID = Null'。另見http://stackoverflow.com/questions/2973558/select-a-value-where-it-doesnt-exist-in-another-table –
好的,謝謝。我現在就試試 –