MySQL - 如何只删除一个组的一个寄存器?

时间:2014-08-07 19:08:40

标签: mysql delete-row

我有一个或多个寄存器作为选择的结果,我需要删除其中一个.... 怎么做?

从xxx删除id [[1 of]] (SELECT id FROM xxx WHERE usuario_id = 1 AND disco_id = 1)

3 个答案:

答案 0 :(得分:0)

DELETE 
  FROM xxx 
 WHERE usario_id=1 
   AND disco_id=1
 LIMIT 1

N.B。这将删除与条件匹配的未确定行。

如果您想选择删除的内容,可以使用ORDER BY,例如删除最早创建的记录:

  DELETE 
    FROM xxx 
   WHERE usario_id=1 
     AND disco_id=1
ORDER BY created_temporal_field ASC /* Or an auto_incremented id */  
   LIMIT 1

答案 1 :(得分:0)

试试这段代码:

DELETE FROM xxx WHERE id =(SELECT id FROM xxx WHERE usuario_id=1 AND disco_id=1 order by id desc limit 1)

作为选择的结果,您有一个或多个寄存器,并且您希望删除其中一个。只需通过limit来研究一行,就可以得到上面的代码。

答案 2 :(得分:-1)

通常TOP 1是个好主意。

SELECT TOP 1表示只要找到一个项目,表扫描就会停止。

DELETE FROM xxx WHERE id =(SELECT TOP 1 id FROM xxx WHERE usuario_id=1 AND disco_id=1)