做个笔记:
SELECT
IF (DATE(signend) != date_format(now(), '%y-%m-%d'),NULL,signend) AS signend,stu.NAME,
stu.signstart
FROM(
SELECT
DISTINCT MAX(IF ( DATE(sign_start) != date_format(now(), '%y-%m-%d'),NULL,sign_start)) AS signstart,
t.id,
t.`name`,
MAX(s.sign_end) AS signend
FROM t_user t
LEFT JOIN t_sign_up tu ON t.id = tu.uid
LEFT JOIN t_activity ta ON tu.aid = ta.id
LEFT JOIN t_sign s ON s.suid = tu.id
LEFT JOIN t_activity_time tt ON tt.aid = ta.id
WHERE
DATE_SUB(CURDATE(), INTERVAL 1 DAY) < tt.`start`
AND DATE_SUB(CURDATE(), INTERVAL - 1 DAY) > tt.`end`
AND ta.id = 20
GROUP BY id ) AS stu
WHERE
TO_DAYS(NOW()) - TO_DAYS(stu.signend) = 0
AND TO_DAYS(NOW()) - TO_DAYS(stu.signstart) = 0
OR (
stu.signend IS NULL
AND stu.signstart IS NULL
)
OR (
stu.signend != ''
AND stu.signstart IS NULL
)
OR (
stu.signstart != ''
AND stu.signend IS NULL
)
ORDER BY stu.signstart