[英]How to write a mysql query to return result comparing rows of same table?
請試試...
SELECT tblExams.srNum AS srNum,
tblExams.user_id AS user_id,
tblExams.exam_id AS exam_id,
tblExams.exam_date AS exam_date,
tblExams.exam_center_id AS exam_center_id,
tblExams.exam_shift as exam_shift
FROM tblExams
JOIN
{
SELECT user_id AS user_id,
exam_date AS exam_date,
exam_center_id AS exam_center_id,
COUNT( exam_center_id ) AS exam_center_id_count
FROM tblExams
GROUP BY user_id,
exam_date,
exam_center_id
} exam_center_counter ON tblExams.user_id = exam_center_counter.user_id
AND tblExams.exam_date = exam_center_counter.exam_date
AND tblExams.exam_center_id = exam_center_counter.exam_center_id
WHERE exam_center_counter.exam_center_id_count >= 2;
我對您的問題的解釋方式是,您要查詢user
the same date
在same center
進行2 or more exams
記錄。 在我看來, User
是最主要的因素,在該Exam Date
之內,在各Centers
和Exams
count
之內。 因此,我內部的SELECT
語句中的GROUP BY
和COUNT()
行。
之所以存在其他三個選定字段,部分是因為GROUP BY
使用了它們,因此要求它們成為SELECT
一部分,一部分是因為需要它們與tblExams
一起形成INNER JOIN
(我為您的數據表假定的名稱) 。 (注意:如果單詞JOIN
前面沒有JOIN
類型,則執行INNER JOIN
)。
INNER JOIN
的作用是將該User
在該Date
在該Exam Center
進行的考試數量附加到相應行上。
然后,我們要做的就是從tblExams
每一行中選擇所有字段,該字段的計數至少為2
。
當我為您的第二個查詢構造以下代碼時,使用了這種邏輯的變體...
SELECT tblExams.srNum AS srNum,
tblExams.user_id AS user_id,
tblExams.exam_id AS exam_id,
tblExams.exam_date AS exam_date,
tblExams.exam_center_id AS exam_center_id,
tblExams.exam_shift as exam_shift
FROM tblExams
JOIN
{
SELECT user_id AS user_id,
exam_date AS exam_date,
COUNT( exam_center_id ) AS exam_center_count
FROM
{
SELECT user_id AS user_id,
exam_date AS exam_date,
exam_center_id AS exam_center_id
FROM tblExams
GROUP BY user_id,
exam_date,
exam_center_id
} exam_center_id_grouper
GROUP BY user_id,
exam_date
} exam_center_counter ON tblExams.user_id = exam_center_counter.user_id
AND tblExams.exam_date = exam_center_counter.exam_date
WHERE exam_center_counter.exam_center_count >= 2;
在此查詢中,我使用最里面的SELECT語句獲取每個User
在各個Dates
參加的Exam Centers
列表。
然后,最中間的SELECT
語句將使用此數據來形成一個列表,該列表列出了每個User
在每個DATE
參加Exam
Centers
。
最外面的SELECT
使用此計數來僅返回tblExams
中符合指定條件的那些行。
如果您有任何問題或意見,請隨時發表評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.