mysql - 两个查询到一个有两列的表

标签 mysql sql aggregate-functions

我有一个名为 Rooms 的表,看起来像这样

房间

id    name   room number 
-------------------------
1     Dave   Room 100  
2     NULL   ROOM 101    
3     Scott  Room 100    

我需要检查哪个房间是空的,哪个房间有人与之关联,因此结果将是:

Room name  Count        
-----------------
Room 100   2      -- Because Dave and Scott is in the room
Room 101   0      -- No name is associated with the room 

刚开始学SQL,知识有限,能看到的是

SELECT Count(room_number) 
  FROM rooms 
 WHERE name != NULL 

...将根据 room_number 出现在列表中的次数返回 2 和 0,并且与之关联的名称不是 0,而且

SELECT DISTINCT(room_number) 
  FROM rooms 

...将返回 Room 100 和 Room 101 一次

我怎样才能结合这两个查询来得到我想要的结果表?

最佳答案

SELECT RoomNumber, COUNT(Name)
FROM rooms
GROUP BY RoomNumber

我建议添加一个Room 表并将RoomNumber 更改为外键关系。规范化该列。

关于mysql - 两个查询到一个有两列的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6077772/

相关文章:

php - 如何在mysql表中存储json字符串

mysql - 从数据库中获取所有订单 - 只返回一行

sql - 将货币换算添加到 SQL 查询

sql - TSQL:无法对 COUNT(*) 执行聚合函数 AVG 来查找一天中最繁忙的时间

mysql - MySQL 中的成本总和

PHP PDO MS Access 如何读取 blob 图像?

mysql - 如何知道mysql中的列何时创建?

php - 使用表 B 中的信息更新表 A(其中包含重复信息)

sql - ZF 子查询问题

mysql - 不同组的聚合函数