我靠近这一点拉我的头发。这是我正在处理的查询:这是一个MySQL错误还是我疯了?查询没有返回足够的结果
SELECT
*,
GROUP_CONCAT(DISTINCT d.title SEPARATOR ', ') AS departments,
MAX(d.department_id) AS department_id,
CONCAT(friendly_last_name, ', ', friendly_first_name) AS professor_name,
IF(p.reviews = 0, "", p.quality) AS quality,
IF(p.reviews = 0, "", p.reviews) AS reviews,
IF(p.reviews = 0, "", p.ease) AS ease,
u.url
FROM
educational.professors_departments
LEFT JOIN educational.professors p USING (professor_id)
LEFT JOIN educational.departments d USING (department_id)
LEFT JOIN educational.universities u ON (p.university_id = u.university_id)
WHERE
p.university_id = 3231
AND d.department_id IN ('91')
GROUP BY
professor_id
ORDER BY p.friendly_last_name ASC, p.friendly_first_name ASC
当我按原样运行该查询时,得到101个结果。如果我在查询的末尾添加一个简单的LIMIT 20,则突然查询返回一个结果。
好像这并不奇怪,如果我将LIMIT 20更改为LIMIT 25,我会收到25个结果。是否有一些神奇的东西,我错过了这个?我不能为我的生活弄清楚。
P.S. - 我试过SQL_NO_CACHE无济于事。 P.P.S. - 如果我删除整个ORDER BY子句,但保留LIMIT 20 ...我得到20个结果
我使用SQLYog获得相同的结果,没有直接在shell中尝试,但SQLYog没有做任何有趣的事情处理和理论上应该完全一样。 –
是否有可能实际获得前20个结果的空值,并且它们没有显示为shell中的文本,或者是否从shell中获得'x rows returned'消息? – dfb
SQLYog说“1行返回”,但只是为了确保我将它运行在一个shell中,并获得了一行“集合中的一行” –