我希望从表中排序一个用户从来没有与0不同的注释 然后更新记录, 然后插入一个新行
user note
12 1
23 0
88 0
45 0
12 0
23 0
12 0
88 2
对除用户12和用户88之外的用户进行排序,因为已经在某处已经有了注释 想想
SELECT * FROM table WHERE note=0 ORDER BY rand() LIMIT 1
问题是我有很多用户重复,所以我不知道如何排除... 让我们说我随机选择了用户23 该表应该成为
user note
12 1
23 0
88 0
45 0
12 0
23 X <--- mark the random user choosen
12 0
88 2
23 0 <--- add a new line
在下一次随机提货中只有45号可以使用,因为其他用户有某处注意!= 0
对于最后一个请求,我要做2个查询UPDATE然后INSERT,或者我只能做一个查询?
答案 0 :(得分:1)
您可以使用嵌套选择:
SELECT * FROM table WHERE note=0 and user not in (select user from table where note>0) ORDER BY rand() LIMIT 1
但是你应该真正使用用户的主要唯一索引
答案 1 :(得分:1)
您可以避免使用子查询来提高性能,如下所示:
SELECT *
FROM YourTable
GROUP BY name
HAVING SUM(note)=0 ORDER BY rand() LIMIT 1;