mysql - SQL:列出没有任何事务的行
问题描述
我有一个定义表 - def
Id Device Location
1 GGHY199 USA
12 DFGHY71 India
145 APPHY75 USA
并且它的交易记录在一个差异表中 - 事件
eventid deviceid event date
123 12 Login 12-01-2019
32 12 Unreachable 18-02-2019
223 145 Unreachable 19-02-2019
334 1 DOWN 01-03-2019
我想要一个每天的输出,所有三个设备都应该显示,如果它没有事务,它应该显示为空,我假设是日期列中月份的第一个日期。喜欢,
eventid deviceid event date
null 1 null 01-01-2019
123 12 Login 12-01-2019
null 145 null 01-01-2019
null 1 null 01-02-2019
32 12 Unreachable 18-02-2019
223 145 Unreachable 19-02-2019
334 1 DOWN 01-03-2019
null 12 null 01-03-2019
null 145 null 01-03-2019
目前我在做:
select * from def
left join
event on def.id=event.deviceid
我显然没有得到我想要的。
谢谢!
解决方案
你似乎在追求这样的事情......
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(event_id SERIAL PRIMARY KEY
,device_id INT NOT NULL
,event VARCHAR(12) NOT NULL
,date DATE NOT NULL
);
INSERT INTO my_table VALUES
(123, 12,'Login','2019-01-12'),
( 32, 12,'Unreachable','2019-02-18'),
(223,145,'Unreachable','2019-02-19'),
(334, 1,'DOWN','2019-03-01');
SELECT DISTINCT z.event_id
, x.device_id
, z.event
, y.date
FROM my_table x
JOIN my_table y
LEFT
JOIN my_table z
ON z.device_id = x.device_id
AND z.date = y.date
ORDER
BY date
, device_id;
+----------+-----------+-------------+------------+
| event_id | device_id | event | date |
+----------+-----------+-------------+------------+
| NULL | 1 | NULL | 2019-01-12 |
| 123 | 12 | Login | 2019-01-12 |
| NULL | 145 | NULL | 2019-01-12 |
| NULL | 1 | NULL | 2019-02-18 |
| 32 | 12 | Unreachable | 2019-02-18 |
| NULL | 145 | NULL | 2019-02-18 |
| NULL | 1 | NULL | 2019-02-19 |
| NULL | 12 | NULL | 2019-02-19 |
| 223 | 145 | Unreachable | 2019-02-19 |
| 334 | 1 | DOWN | 2019-03-01 |
| NULL | 12 | NULL | 2019-03-01 |
| NULL | 145 | NULL | 2019-03-01 |
+----------+-----------+-------------+------------+
推荐阅读
- grafana - 如何使用 Graphite 将 Linux 内核版本添加到 Grafana 仪表板?
- api - 按日期订购 StackExchange API 响应并指定最少 # 票
- angular - 访问数据的 Angular Firebase 权限错误
- maven - Maven Dependency 版本解析问题
- vba - 使用 Sub 与使用 FollowHyperlink 在 VBA 中打开文件有什么好处吗
- c++ - 用类和模板扩展模板类
- python - 使用 pip (TLSV1_ALERT_PROTOCOL_VERSION) 安装 python 包时出错
- python - 如何删除列表开头和结尾处的空白元素Python
- source-insight - SourceInsight 宏在当前缓冲区中键入文本?
- mysql - 你能避免在 MySQL 上使用子查询以获得更好的性能吗?