mysql - 删除除具有最大日期的行之外的所有行
问题描述
如果我的架构是一个带有 id、uid 和日期的表,比如..
id uid date
1 10 2019-01-01 10:50:40
2 10 2019-01-02 09:20:20
3 11 2019-01-04 11:00:00
4 11 2019-01-04 08:30:30
查询看起来像SELECT id, max(date) FROM table GROUP BY id;
我返回 2 列,所以Operand should contain 1 column(s)
按预期出现错误。
如何返回单列,然后删除所有其他行,如DELETE FROM table WHERE id NOT IN (SELECT id, max(date) FROM table GROUP BY id)
.
谢谢
编辑:
我以为我可以DELETE from table where id not in (SELECT id from (SELECT id, max(date) from table) a)
????
解决方案
你可以使用subquery
withNOT IN
语句
delete from tableA where id not in
(select t.id
from (select id, max(date) maxd from tableA group by id)t)
推荐阅读
- java - 拼写检查有问题
- spring-boot - 添加到模型后,Thymeleaf 页面上的字符串为空
- powershell - 如何在脱机计算机上安装适用于 PowerShell 的 Nuget 提供程序?
- julia - Julia:如何设置包开发路径?
- python - 同名的变量和模块
- javascript - 在文本框中输入值后,如果我按回车键,应该会看到一个带有输入值的新芯片
- python - 字典到 Pandas Dataframe Python
- r - 如何在 R 中使用无预测功能来修复 predict.naive_bayes
- python-3.x - Mypy 不兼容类型不将数据类对象的 Union 识别为键
- javascript - Vuejs中使用v-for显示动态幻灯片