簡體   English   中英

MySQL ORDER BY結合LIMIT 1返回空結果

[英]MySQL ORDER BY combined with LIMIT 1 returns empty result

我們確實有一個腳本,如果確實滿足某些條件,該腳本會自動將池中的哈希值插入文章中。 擴展程序已在幾年前進行了編程,到目前為止效果良好。 現在它停止工作了,沒人知道為什么。 經過長時間的調試,我在SQL語句中發現了錯誤。

生成的語句如下所示:

SELECT `hash` 
FROM `table` 
WHERE `is_used` =0
ORDER BY `uid`
LIMIT 1

如果我只是刪除“ ORDER BY uid ”,它將再次起作用。 我只是想知道為什么這是突然發生的。 主持人說,在系統方面沒有任何更改/更新,我檢查了所有相關文件,但這些文件在去年內都沒有更改。

關於系統。 TYPO3 4.5.2 PHP版本5.3.8-1〜dotdeb.1 MySQL版本5.1.57

提前致謝

編輯:很抱歉造成混亂。 所謂“停止工作”,是指從一天到另一天,沒有雜物插入到物品中。 當我用ORDER BY執行語句時,結果是空一行。 uid列仍然存在。 系統上的任何內容(包括數據庫及其表)都沒有更改。 我已經在表的結構上附加了圖像,並且兩個查詢結果都在右側(嗯,它並沒有真正附加,因為我需要更多信譽來附加它)。

再次澄清我的問題:查詢之前有效,並返回了哈希。 現在,它僅在刪除ORDER BY時有效,並且我想知道這將如何發生,因為我很好奇,它可能會幫助我解決以后的錯誤。 http://i.stack.imgur.com/Dpip4.png

PS:我已經編輯了表名,不要害怕;)

查看您的屏幕打印,是否具有order by子句,是否返回行。

您正在使用LIMIT 1僅帶回一條記錄。 當您擁有order by子句時,您將帶回具有最低uid的記錄。 碰巧的是,它具有一個空白的哈希值(可能在某些時候設置有誤)。

我很想檢查WHERE子句中的哈希值是否為空白。

SELECT `hash` 
FROM `table` 
WHERE `is_used` =0
AND `hash` != ''
ORDER BY `uid`
LIMIT 1

我現在感覺好傻。 當然,這是一個簡單的答案,系統“不僅停止工作”。 @Kickstart是正確的,表中有一個空行。 我沒有正確檢查桌子。 當我在PhpMyAdmin中打開它時,由於某種原因,它不是由uid排序的(其他默認情況下是由uid排序的)。 我單擊uid字段,並立即看到空行。 http://i.stack.imgur.com/Vpco7.png

謝謝大家的幫助,並向我表明我沒有瘋,只是盲目;)

我將看一下導入腳本,默認情況下忽略空字段。 永遠不要相信自己沒有寫過的系統^^

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM