我有一個名爲'user'的表,它具有名爲'id','name'的字段。基於字母組a-z選擇三個值a-z
我需要從每個字母中選擇三個名字並顯示一個頁面,所以總的結果將是26 * 3 = 78
我已經做到了這一點使用PHP,我需要優化的查詢,我們能在單個查詢中完成此操作?
我有一個名爲'user'的表,它具有名爲'id','name'的字段。基於字母組a-z選擇三個值a-z
我需要從每個字母中選擇三個名字並顯示一個頁面,所以總的結果將是26 * 3 = 78
我已經做到了這一點使用PHP,我需要優化的查詢,我們能在單個查詢中完成此操作?
請有這一個嘗試:
SELECT alphabet, name FROM (
SELECT
LEFT(name, 1) AS alphabet,
name,
@num := IF(@prev = LEFT(name, 1), @num + 1, 1) AS row_num,
@prev := LEFT(name, 1) as previous
FROM yourTable, (SELECT @num:=0, @prev:='') v
ORDER BY name
) sq
WHERE row_num <= 3
感謝您的答覆。但它返回一個空的結果。 – 2013-02-13 10:16:42
你確定嗎?你的表中有(測試)數據嗎?在這個查詢中,沒有限制數據的內容,所以不管它是對還是錯,都應該有一些結果。 – fancyPants 2013-02-13 10:27:30
是的,我確定,表中有大約2500行數據。但它沒有顯示任何結果 – 2013-02-13 12:41:43
嘗試使用SELECT * FROM user WHERE name LIKE 'a%' LIMIT 0,3
我不知道,如果這是你問。 Lemme知道它是否解決了! :)
我已經使用這26次的每個字母,SELECT * FROM用戶WHERE名稱LIKE'a%'限制0,3,我需要找到一種方法在單個查詢中執行此操作。 – 2013-02-13 08:32:46
哦!那麼需要考慮! :) – 2013-02-13 08:50:45
我已經寫了手動查詢與PHP的幫助。即26查詢 – 2013-02-13 05:39:06
是的,它可以完成,張貼您已經嘗試過的查詢 – Minesh 2013-02-13 06:01:03