我靠近這一點拉我的頭髮。這是我正在處理的查詢:這是一個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中,並獲得了一行「集合中的一行」 –