[英]MYSQL Select different records from same table
我正在研究小型學校數據庫,我需要一些幫助來選擇僅在第 1 周和第 2 周的不同日期預訂的學生。
我的表結構如下:
ChildId Day Room Week
======= === ==== ====
1 1 20 1
1 2 20 1
2 1 20 2
3 1 20 1
3 2 20 1
3 1 20 2
===== === === ===
我想獲得所有符合以下條件的孩子:
SELECT DISTINCT b.childid FROM booking b where b.childid NOT IN (SELECT childid FROM bookingtemplate WHERE weekno = 1)
我也需要
我無法得到這兩個星期的日子不同的孩子:
謝謝
您可以使用聚合和HAVING
子句中的條件來做到這一點:
SELECT ChildId
FROM booking
WHERE Week IN (1, 2)
GROUP BY ChildId
HAVING MIN(Week) = 2
OR GROUP_CONCAT(DISTINCT CASE WHEN Week = 1 THEN Day END ORDER BY Day) <>
GROUP_CONCAT(DISTINCT CASE WHEN Week = 2 THEN Day END ORDER BY Day);
請參閱演示。
您可以自行加入表格並過濾天數不同的情況。
SELECT DISTINCT
b1.ChildId
FROM
booking b1
INNER JOIN
booking b2
ON
b1.ChildId = v2.ChildId
AND b1.Week = 1 AND b2.Week = 2
AND b1.Day <> b2.Day
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.