我不是一个查询高手,所以我需要一些帮助。。。我得到以下查询:
SELECT u.id, device_id, profit
FROM device d
JOIN user u ON d.user_id = u.id
WHERE day = '2017-12-20' and u.id= '22'
现在又回来了
--------------------------------------------------
| u.id| device_id |profit |
--------------------------------------------------
| 22 |1 |200 |
--------------------------------------------------
| 22 |2 |600 |
-------------------------------------------------
| 22 |4 |400 |
--------------------------------------------------
| 22 |5 |650 |
--------------------------------------------------
如您所见,设备id丢失(3),我希望结果如下:
--------------------------------------------------
| u.id| device_id |profit |
--------------------------------------------------
| 22 |1 |200 |
--------------------------------------------------
| 22 |2 |600 |
-------------------------------------------------
| 22 |3 |0 (or null) |
-------------------------------------------------
| 22 |4 |400 |
--------------------------------------------------
| 22 |5 |650 |
--------------------------------------------------
因为当我跑的时候
SELECT DISTINCT device_id
FROM device
我明白了
---------------
|device_id |
---------------
|1 |
---------------
|2 |
---------------
|3 |
---------------
|4 |
---------------
|5 |
---------------
基本上我想要的是显示用户的每一个设备,不管这个用户在这个设备上有没有利润,我在考虑在同一个表上加入一个连接,这在某种程度上是可能的吗?
编辑
“user”表如下所示:
------------
|id | name |
------------
“设备”表如下所示:
-------------------------------
|user_id | device_id | profit |
-------------------------------
3条答案
按热度按时间pvabu6sv1#
这是我的工作
LEFT JOIN
代替JOIN
. 你可能想。。。或者也许
6tqwzwtp2#
这应该起作用:
如果这不回来
3
那么必须是设备表上的2个过滤器中的1个排除了它。ruyhziif3#
嗯。我想你想要:
确切地说有点困难,因为您没有指定表的外观。
编辑:
以上内容将返回
NULL
设备ID。因此,如果列分配正确,那么这个更简单的查询将起作用: