所以我对mySQL有点新意,可以弄清楚如何做到这一点。我有一张桌子,上面有工人的栏目,他们工作的建筑物以及他们工作的办公室。
我尝试进行查询,返回此表格,并附上一栏,说明有多少人在同一个房间工作。所以在这个例子中Paul和Tim都在xxx1中工作,所以专栏会说2,但对于John来说它会说1并且他是那个房间里唯一的人。
| worker | office building | room number |
------------------------------------------------
| john | xxx | 0 |
| paul | xxx | 1 |
| tim | xxx | 1 |
| Dave | yyy | 0 |
| Ty | yyy | 1 |
| Luke | yyy | 1 |
答案 0 :(得分:1)
试试这个:
SELECT t1.*,
(SELECT COUNT(1)
FROM mytable t2
WHERE t2.`room number` = t1.`room number`
)
FROM mytable t1
我建议您不要使用带有空格的字段名称,而使用下划线代替空格。
答案 1 :(得分:1)
这些问题通过分析函数解决。
所以在这里看一下分析函数。
这里你需要的是使用count(*)over,如下所示;
select t.*, count(1) OVER (PARTITION BY office_building, room_number) from t
修改强>
很抱歉,刚刚注意到您正在使用MYSQL,似乎没有可用于MYSQL的分析函数
所以试试这个;
select t.*, wcounts.worker_count
from t,
(select office_building, room_number count(1) as worker_count
from t
group by office_building, room_number) wcounts
where t.office_building = wcounts.office_building
and t.room_number = wcounts.room_number