【问题标题】:DELETE From table Group By从表组中删除
【发布时间】:2017-11-15 06:15:51
【问题描述】:

SQL查询:

`SELECT * FROM `adl_auth_user` WHERE `user_id` = 1919`

结果是

id  user_id     type_id     type       auth_    role_id     
66428   1919     1                97    103     6

66429   1919    1                 97    104     6

66430   1919    1                 97    105     6

66431   1919    1                 97    106     6

当我添加分组时

SELECT * FROM `adl_auth_user` WHERE `user_id` = 1919 group by type,type_id

结果是

id  user_id     type_id     type    auth_item_id    role_id     

66428   1919    1   97                103             6

我不需要查询的所有详细信息

`SELECT * FROM `adl_auth_user` WHERE `user_id` = 1919` (its simple)

如何删除以下表格的详细信息

SELECT * FROM `adl_auth_user` WHERE `user_id` = 1919 group by type,type_id

注意:所有细节均为编辑格式...

【问题讨论】:

  • 您以不正确的方式使用 group by .. 在 SQL 中不推荐使用没有聚合函数(如 min, max .. )的 group by .. 在大多数数据库中不起作用并且在哪里起作用not group by column 的结果是不可预测的.. 所以.. 你应该在 select 中使用 DISTINCT 而不是 group by 子句
  • 我在选择中得到了答案...我需要一个查询来删除选定的详细信息
  • 你在选择中的答案错误..如果你想我可以发布一个删除的答案,但你可以删除磨损的行......你以错误的方式使用 group by

标签: php mysql sql yii


【解决方案1】:

这个查询:

DELETE adl_auth_user
FROM adl_auth_user
LEFT JOIN adl_auth_user t2 
   ON adl_auth_user.type_id = t2.type_id AND
      adl_auth_user.type = t2.type AND
      adl_auth_user.id > t2.id
WHERE adl_auth_user.user_id = 1919 AND t2.id IS NOT NULL

删除具有相同type_idtype 值的所有记录,但具有最小 id 值的记录除外。

Demo here

【讨论】:

  • 40 行已删除。 (查询耗时 2.9477 秒)....我只需要按 group by 找到的一行
  • @Rinshantechintl 该查询应该删除所有行。你的情况到底发生了什么?
  • @Rinshantechintl 您无需在查询中添加GROUP BY。它已经删除了除一条以外的所有记录。
猜你喜欢
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 2015-01-23
  • 2018-03-17
  • 1970-01-01
相关资源
最近更新 更多