我有以下两个 SQL 查询:
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 端清理。作为我们PreparedStatement
在 JDBC 中向 s 迈进的一部分,我看到了这一点,并认为如果我们可以运行一个 PreparedStatement,它会删除用户,并将用户列表全部返回到一个整洁的包中,这样会更干净。
当我研究这个时,我遇到了SELECT FROM OLD TABLE ( DELETE .... )
- 但它似乎只在 DB/2 中可用,而且你知道它是怎么回事 - 无法切换。
那么,如何让我的 DELETE 语句返回 MySql 中的用户名?
(换句话说,我想要一些 SQL 来删除我可以放入 a 中的行Statement
,运行execute()
并且getResultSet()
没有返回 null。)