2 回答

TA貢獻1859條經驗 獲得超6個贊
你的 SQL 有點亂;ORDER BY 會在 WHERE 之后
INSERT INTO database.wp_usermeta(user_id, meta_key, meta_value)
SELECT user_id, 'ur_form_id' , 210
FROM database.wp_usermeta
WHERE NOT EXISTS (SELECT 1 FROM v.wp_usermeta);
ORDER BY user_id DESC LIMIT 1
您不需要內部排序依據 - 存在查詢只是用于確定 v.wp_usermeta 中是否存在任何行 - 它不需要排序。反過來,這會導致外部查詢僅在 v.wp_usermeta 中沒有行時才返回行,并且僅當表中已有行時才會插入行。如果表是空的,它將永遠是空的。如果不為空,則具有最高 ID 的用戶將與這些固定屬性重復。這真的是你想要的嗎?
如果您的需求是“查找database.wp_usermeta表中沒有'ur_form_id'/210鍵值對的所有用戶,并給他們一個”,它可能更簡單地表達為:
INSERT INTO database.wp_usermeta(user_id, meta_key, meta_value)
SELECT DISTINCT user_id, 'ur_form_id' , 210
FROM database.wp_usermeta
WHERE user_id NOT IN (SELECT user_id FROM database.wp_usermeta WHERE meta_key = 'ur_form_id' and meta_value = 210);

TA貢獻1963條經驗 獲得超6個贊
ORDER BY 位于 WHERE 子句之后:
INSERT INTO database.wp_usermeta(user_id, meta_key, meta_value)
SELECT user_id, 'ur_form_id' , 210
FROM database.wp_usermeta
WHERE NOT EXISTS (SELECT user_id, 'ur_form_id' , 210
FROM v.wp_usermeta
ORDER BY user_id DESC
LIMIT 1)
ORDER BY user_id DESC
LIMIT 1;
- 2 回答
- 0 關注
- 144 瀏覽
添加回答
舉報