mariadb 在同一个表中选择+更新查询

bqf10yzr  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(174)

我正在使用MariaDB,我试图创建一个查询,更新我的照片表的布尔列is_popular,名为Pics
为了找出哪些照片是“流行”的,我从整个表中选择前10名。然后,我希望将前10名的照片设置为is_popular字段的true
我能想到的方法是这样的:

UPDATE Pics 
SET is_popular=true 
WHERE id=(
   SELECT p.id 
   FROM Pics p 
   WHERE p.approved=true 
   ORDER BY p.points 
   DESC LIMIT 10);

字符串
但是我得到一个这样的错误:ERROR 1242 (21000): Subquery returns more than 1 row
我应该如何创建查询?

2lpgd968

2lpgd9681#

  • MySQL* 和 MariaDB 都支持ORDER BYLIMIT子句进行 * 单表 * 更新。因此,您可以编写简单的查询:
UPDATE Pics 
SET is_popular = true 
WHERE approved = true 
ORDER BY points DESC
LIMIT 10

字符串

cfh9epnr

cfh9epnr2#

以下是使用INNER JOIN的方法:

UPDATE Pics p
INNER JOIN (
   SELECT id 
   FROM Pics
   WHERE approved=true 
   ORDER BY points DESC 
   LIMIT 10
) as s on s.id = p.id
SET is_popular=true;

字符串
Demo here

相关问题