计算MySQL中select的列

时间:2013-10-17 21:11:05

标签: mysql sql database

假设我有两个表,patientsrooms,而patients

CREATE TABLE patient (
    id int,
  room int,
  FOREIGN KEY (room) REFERENCES room (id)
);

room

CREATE TABLE rooms (
    id int,
);

我想创建一个rooms的视图,其中包括该房间内有多少患者。

我可以计算房间里的病人数量
select count(1) from patients where room = N;

适用于任何现有会议室N。 我如何撰写我需要的SELECT声明?


我最好的解决方案:

select *,
       count(1) as patients_in_room
                from patients
                where patients.room = rooms.id
       from rooms;

3 个答案:

答案 0 :(得分:3)

这将带来所有房间,当patientsCount = 0为空时。

SELECT r.id roomId, coalesce(count(p.room),0) patientsCount
FROM room r left join patients p on r.id = p.room
GROUP BY r.id

答案 1 :(得分:1)

SELECT room, COUNT(*) patients_in_room
FROM patient
GROUP BY room

答案 2 :(得分:1)

您可以使用MySQL Aggregate函数,请参阅documentation

对于您上面提到的内容,您可以使用以下查询:

SELECT room, COUNT(*) FROM patient GROUP BY room

干杯!!