簡體   English   中英

MYSQL從同一個表中選擇不同的記錄

[英]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
=====     ===   ===   ===

我想獲得所有符合以下條件的孩子:

  • 僅在第二周預訂(這是 ChildId 2,我可以從以下查詢中獲得)
 SELECT DISTINCT b.childid FROM booking b where b.childid NOT IN (SELECT childid FROM bookingtemplate WHERE weekno = 1)

我也需要

  • 第二周所有與第一周不同的孩子。 那將是 ChildID 3,因為他在第 1 周的周一和周二以及第 2 周的周一被預訂。

我無法得到這兩個星期的日子不同的孩子:

謝謝

您可以使用聚合和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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM