sql - 抓取表格中的所有行并抓取条件所在的一行
问题描述
我有一个整数列,表中几乎所有行都设置为 1,大约 10 行设置为 2,6 行设置为 3。我想从我的表中选择该列不等于 3 的所有行,但获取它等于 3 的最近更新的行。我还有一个 updated_at 列,它是一个日期列。
这是我到目前为止提出的sql。
SELECT *
FROM mytable
LEFT JOIN (SELECT *
FROM mytable
WHERE spec_id=3
ORDER BY updated_at DESC LIMIT 1) mytable2
ON mytable.id=mytable2.id
但是,此语句会抓取我的所有 6 行,其中 spec_id 设置为 3。
请帮忙。
解决方案
只需使用union all
(SELECT * FROM mytable WHERE spec_id=3 ORDER BY updated_at DESC LIMIT 1)
UNION ALL
SELECT * FROM mytable WHERE spec_id!=3
推荐阅读
- android - 使用 MVVM 的视图上未解决的参考
- antlr - 无法从对象数组加载,因为“this.decisionToDFA”为空
- docker - 来自不安全注册表的 Dockerfile
- python - tkinter 画布和 matplotlib 图形调整大小的问题
- angular - 自定义组件接收布尔变量但不更新 HTML 中的 NgIf
- c# - 更新表中的数据时,Winforms 界面冻结
- ios - 查找集合视图单元内的视图位置
- python - 缩短多头 Python 指标
- ios - 将 TOCropViewController 与 SwiftUI 接口
- javascript - 创建代表员工集合的类