繁体   English   中英

为什么不等于通过连接两个 select 表在 select 查询中显示实际结果

[英]Why not equal displaying actual result in select queries by joining two select tables

我正在使用 mysql。 我正在尝试通过.= 条件加入两个查询。 对于此示例,它应该返回空结果集。 但似乎条件不适用。 我不明白为什么? 有人可以帮忙吗:我的尝试如下

    SELECT today_student.* FROM (
    SELECT scd.student_id, sc.transaction_date
    FROM student_collection_details scd
    INNER JOIN student_collection sc
     ON (scd.student_collection_id = sc.id)
    WHERE 1=1
    AND sc.transaction_date BETWEEN DATE('2022-06-01 00:00:00') AND DATE('2022-06-27 00:00:00')
    AND scd.admission_year_id = 2
    AND scd.month_id = 21
    AND scd.collection_head_id = 9  
    GROUP BY scd.student_id
) prev_student,

(
    SELECT scd.student_id, sc.transaction_date
    FROM student_collection_details scd
    INNER JOIN student_collection sc
     ON (scd.student_collection_id = sc.id)
    WHERE 1=1
    AND sc.transaction_date = DATE('2022-06-28 00:00:00')
    AND scd.admission_year_id = 2
    AND scd.month_id = 21
    AND scd.collection_head_id = 9  
    GROUP BY scd.student_id
) today_student

WHERE 1=1
AND  prev_student.student_id != today_student.student_id

prev_student 返回:

    1196; 2022-06-20 00:00:00
    1861; 2022-06-18 00:00:00

today_student 返回:

1196; 2022-06-28 00:00:00
1861; 2022-06-28 00:00:00

在 min transaction_date'2022-06-28'的条件下使用HAVING子句:

SELECT scd.student_id, 
       MIN(sc.transaction_date) transaction_date
FROM student_collection_details scd INNER JOIN student_collection sc
ON scd.student_collection_id = sc.id
WHERE sc.transaction_date BETWEEN '2022-06-01 00:00:00' AND '2022-06-28 00:00:00'
  AND scd.admission_year_id = 2
  AND scd.month_id = 21
  AND scd.collection_head_id = 9
GROUP BY scd.student_id
HAVING MIN(sc.transaction_date) = '2022-06-28 00:00:00';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM