我有以下兩個SQL查詢:如何將SELECT和DELETE語句與相同的條件結合使用?
SELECT u.user FROM
mcmmo_skills AS s,
mcmmo_users AS u
WHERE s.user_id = u.id
AND (s.taming+s.mining+s.woodcutting+s.repair+s.unarmed+s.herbalism+s.excavation+s.archery+s.swords+s.axes+s.acrobatics+s.fishing) = 0;
DELETE FROM u, e, h, s, c USING mcmmo_users u
JOIN mcmmo_experience e ON (u.id = e.user_id)
JOIN mcmmo_huds h ON (u.id = h.user_id)
JOIN mcmmo_skills s ON (u.id = s.user_id)
JOIN mcmmo_cooldowns c ON (u.id = c.user_id)
WHERE (s.taming+s.mining+s.woodcutting+s.repair+s.unarmed+s.herbalism+s.excavation+s.archery+s.swords+s.axes+s.acrobatics+s.fishing) = 0;
數據庫架構如下圖所示:http://sqlfiddle.com/#!2/298cc
這些聲明的目的是去除什麼也沒有做任何的用戶,並得到了他們的用戶名一些額外的清理Java端。作爲我們在JDBC中運行PreparedStatement
的一部分,我看到了這一點,並認爲如果我們可以運行一個PreparedStatement,它會刪除用戶,並將用戶列表全部返回到一個整齊的包中,這將更加簡潔。
當我研究這個時,我遇到SELECT FROM OLD TABLE (DELETE ....)
- 但是it appears this is only available in DB/2,而且你知道它是如何發生的 - 無法切換。
那麼,如何讓我的DELETE語句在MySql中返回用戶名呢?
(要說它的另一種方式,我想要一些SQL一個刪除,我可以把一個Statement
,運行並有getResultSet()
沒有返回null行。)