我有以下mysql查询:
SELECT u.name AS nume, p.premiu AS premiu
FROM fbusers AS u, premii AS p
ORDER BY RAND( )
LIMIT 1
我想要的是选择一个随机用户来提供奖品,然后我想从奖品表中删除该奖品。
可以在同一个查询中完成吗?我应该如何进行?
编辑:逻辑是显示获胜者和奖品,如果可能,将结果插入其他表格,然后从表格中删除奖品,因为其他人不可能赢得相同的奖品。
不:您不能在一个查询中执行 SELECT、INSERT 和 DELETE。如果您希望以原子方式处理所有这三个操作(即它们都将被执行,或者如果任何一个失败,其他的将被回滚),请使用事务
当然可以,但我在这里看不到逻辑,因为没有关于谁赢了的信息:
DELETE price FROM price
JOIN (SELECT u.name AS nume, p.premiu AS premiu
FROM fbusers AS u, premii AS p
ORDER BY RAND( )
LIMIT 1) a
ON price.premiu = a.premiu