如果我的mysql數據庫中有5行,id爲2,4,5,6和8,我回顯出id 5然後我如何回顯出行號當然會是第3排?通過計算從數據庫的開頭到我所在的行的所有行,我得到第3行。對數據庫中的行進行計數,並回顯出期望的行號
回答
嘗試使用
SELECT @row_num:[email protected]_num+1 as row_number, id from table inner join (select @row_num:=0) as temp
$pdo = new PDO(....);
$result = $pdo->query($sql)->fetchAll();
foreach($result as $row) {
print_r($row);
}
+1您還可以使用UNION來代替JOIN來初始化變量 - 如果您想避免連接的開銷,請使用:'SELECT NULL AS row_num,NULL AS id FROM dual WHERE(@row_num:= 0) UNION ... WHERE產生*不可能的WHERE *,所以它不返回任何行,但是它初始化變量。 – Mike
好吧,我一直在使用PHP大約一年,所以我知道很多,但從來沒有遇到過這樣的查詢。你想如何迴應它? –
@Martin L:'@ row_num'是[用戶定義的變量](http://dev.mysql.com/doc/refman/5.5/en/user-variables.html)。在查詢中生成動態值非常方便。如果您執行SELECT @row_num:= @ row_num + 1 AS row_num',那麼'row_num'將作爲查詢中的一列返回 - 就像真正的列一樣。 – Mike
正確的解決辦法是增加一些AUTO_INCREMENT關鍵是你的表,那麼每一行會分配的序列號。否則,您不能保證爲每個ID獲取相同的編號,因爲沒有ORDER BY
子句的SQL查詢不能保證有任何順序(即,ID可能以隨機順序返回)。
否則,由Andrej L給出的解決方案是正確的。
我在創建數據庫時將ID列設置爲auto_increment。 –
關於你想要達到什麼的更好的描述會有所幫助。目前我沒有看到真正的理由來做你需要的計數。 – Crack
難道你不能只按照你使用的排序順序來計算行數嗎?
COUNT(*) FROM table WHERE id < ?
在這種情況下,只有ID爲2和3行會算,所以結果是2.如果您使用的是基於1的索引,添加一個到,你有你的答案。
我會給你一個鏡頭,讓你知道它發生了什麼。 –
- 1. 對行進行計數並給出行的值
- 2. 對數組中的行進行計數
- 3. 從所有數據庫行中拉出數值進行計算
- 4. 根據行值對行進行計數
- 5. 在mysql數據庫中對行進行計數
- 6. 將行連接成一個並根據編號對行進行計數
- 7. 複製數據幀中的每一行並進行計數
- 8. 對數據庫中的Dtrec_ID進行計數
- 9. 試圖對數據庫中的條目進行計數
- 10. 如何根據行值對DataTable中的行進行計數
- 11. 從數據庫中提取數據並對其進行分類並顯示它
- 12. 對數據源/網格中的行進行計數
- 13. 對數據庫返回的數據進行排序
- 14. SQL:讓SQL對數據庫中執行的一系列操作進行「計數」
- 15. 從數據庫中回顯單行
- 16. 搜索SQLite數據庫並使用檢索行中的值進行計算
- 17. 數據庫中換行符的計數
- 18. 關係數據庫中的行計數
- 19. 計算SQL數據庫中的行數
- 20. 統計數據庫中的行數
- 21. mysql數據庫行中的計數值
- 22. 對Spark中出現的次數進行分類後的數據進行分類
- 23. 對數據庫中的行進行排序Mysql
- 24. 對數據庫中的同一行進行多次更新
- 25. 如何按值分割行數並對它們進行計數?
- 26. 對iframe進行編號並顯示它
- 27. 獲取突出顯示的數據錶行的行號c#
- 28. 在對唯一行進行計數後對唯一值進行計數?
- 29. 在數據庫中取數據的同時對錶進行編號
- 30. 使用MongoDB進行數據庫設計
看來您已經意識到解決方案可能涉及'count'。那麼你已經嘗試過了什麼? –
請記住,你不能指望這個行號是恆定的。沒有'ORDER BY'子句的SQL查詢不保證任何順序。 – Crack
我試過了一塊代碼,它回顯了我在數據庫中的所有行,還有另一塊代碼可以回顯出數據庫中有多少行。 –