假设我有两个表,patients
和rooms
,而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;
答案 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
干杯!!