我有一個包含聯系人詳細資訊的 MySQL 表,我需要將列“PHONE1”的重復項標記到另一個名為“DUPLICATE”的標志列中(忽略第一行,原始行)。
我在這里找到了一個帶有示例 SQL 查詢的 SQL 教程,幾乎完全符合我的要求:https ://www.sqlservertutorial.net/sql-server-basics/sql-server-update-join/ 。
我修改了教程示例,并且可以使用以下查詢正確“選擇”重復行:
SELECT t1.ID, t1.`Contact Name`, t1.PHONE1
FROM new_leads_test2 AS t1
INNER JOIN new_leads_test2 AS t2
ON (t1.PHONE1 = t2.PHONE1
AND t1.ID > t2.ID)
此“SELECT”查詢 100% 有效,但是當我嘗試更改此查詢以實際更新行時(根據教程),我收到 SQL 語法錯誤。這是我產生錯誤的查詢:
UPDATE t1
SET t1.duplicate = t2.ID
FROM new_leads_test2 AS t1
INNER JOIN new_leads_test2 AS t2
ON (t1.PHONE1 = t2.PHONE1
AND t1.ID > t2.ID)
這會導致 SQL 錯誤:
#1064 - 您的 SQL 語法有錯誤;檢查與您的 MySQL 服務器版本相對應的手冊,以在“FROM new_leads_test2 AS t1
INNER JOIN new_leads_test2 AS t2
ON t1.PHONE1 = t2”附近使用正確的語法。在第 3 行
誰能幫我解決這個問題?
uj5u.com熱心網友回復:
我們可能會放在SET之后,INNER JOIN因為UPDATE 陳述句,table_reference使用之前SET
順便說一句,也許你可能不需要FROM
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
所以我們可以像下面這樣使用。
UPDATE new_leads_test2 AS t1
INNER JOIN new_leads_test2 AS t2
ON (t1.PHONE1 = t2.PHONE1
AND t1.ID > t2.ID)
SET t1.duplicate = t2.ID
uj5u.com熱心網友回復:
您的示例是 SQL Server 語法,而不是 MySQL。
嘗試:
UPDATE new_leads_test2 t1
INNER JOIN new_leads_test2 t2
ON (t1.PHONE1 = t2.PHONE1 AND t1.ID > t2.ID)
SET t1.duplicate = t2.ID
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/467197.html
