我有以下数据库表(人员):
+--------+--------+--------+--------+
| Name |Building| Nr | Time |
+--------+--------+--------+--------+
| Tim | House | 30 | 10:10 |
| Jill | House | 31 | 10:20 |
| Tim | Flat | 31 | 10:30 |
| NULL | Tower | NULL | NULL |
| Jack | Hut | 32 | 10:50 |
| Jane | Cabin | 35 | 10:60 |
| Susan | Cabin | 35 | 11:70 |
+--------+--------+--------+--------+
现在我想显示 Tim 拥有的所有建筑物(以及随之而来的数据)。我是这样做的:
SELECT * FROM `People` WHERE Name="Tim"
结果:
+--------+--------+--------+--------+
| Name |Building| Nr | Time |
+--------+--------+--------+--------+
| Tim | House | 30 | 10:10 |
| Tim | Flat | 31 | 10:30 |
到目前为止一切顺利。问题是,有更多的建筑物(塔楼、小屋和小屋)。我也想展示这些,但将数据(接受建筑类型)留空。
这个结果就是我需要的:
+--------+--------+--------+--------+
| Name |Building| Nr | Time |
+--------+--------+--------+--------+
| Tim | House | 30 | 10:10 |
| Tim | Flat | 31 | 10:30 |
| NULL | Tower | NULL | NULL |
| NULL | Hut | NULL | NULL |
| NULL | Cabin | NULL | NULL |
+--------+--------+--------+--------+
由于 Tower 已经是 NULL,我可以使用以下方法轻松提取它:
SELECT * FROM `People` WHERE Name="Tim" OR Name is NULL
结果:
+--------+--------+--------+--------+
| Name |Building| Nr | Time |
+--------+--------+--------+--------+
| Tim | House | 30 | 10:10 |
| Tim | Flat | 31 | 10:30 |
| NULL | Tower | NULL | NULL |
+--------+--------+--------+--------+
问题是,我仍然想念小屋和小木屋。这甚至可以通过查询来完成吗?还尝试了一些选项,如 GROUP BY 等,但这给出了混合数据作为返回。还使用 Google 进行了搜索,但没有成功。
希望有人能帮帮我!
附言。作为解决方法,我可以在数据库中添加:
| NULL | Hut | NULL | NULL |
| NULL | Cabin | NULL | NULL |
但是当您添加更多建筑物时,包含这张 table 将是一项艰巨的工作
最佳答案
有点像
select * from people where Name = 'Tim'
union
select 'NULL', Building, NULL, NULL from people where Name != 'Tim';
可以为所欲为吗?
关于mysql - 查询未显示我需要的所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866110/