【发布时间】:2020-06-01 22:46:27
【问题描述】:
我在使用这个查询时遇到了一些问题,它没有返回应有的所有行:
SELECT DE.user_id,
DE.id,
DE.title,
DE.limit_new_cards,
DE.limit_old_cards,
DE.deleted,
Count(DISTINCT TCA.id) total_cards,
Count(DISTINCT NCA.id) new_cards,
Count(DISTINCT OCA.id) due_cards
FROM decks AS DE
LEFT JOIN cards AS TCA
ON TCA.deck_id = DE.id
LEFT JOIN cards AS NCA
ON NCA.deck_id = DE.id
AND NCA.is_new = 1
LEFT JOIN cards AS OCA
ON OCA.deck_id = DE.id
AND OCA.due_date <= CURRENT_DATE()
WHERE DE.user_id = 47
GROUP BY TCA.deck_id
ORDER BY DE.id;
它应该返回与此查询相同的行数吗?还是不行?
SELECT user_id,
id,
title,
limit_new_cards,
limit_old_cards,
deleted,
FROM decks
WHERE user_id = 47
ORDER BY id;
如果有人可以帮助我,我会很高兴。
【问题讨论】:
-
请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出尽可能少的代码,即您显示的代码可以通过您显示的代码扩展为不正常的代码。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask 暂停总体目标的工作,将代码砍到第一个表达式,没有给出你期望的内容,说出你期望的内容和原因。
标签: mysql sql join group-by left-join