2013-02-13 64 views
1

我有一個名爲'user'的表,它具有名爲'id','name'的字段。基於字母組a-z選擇三個值a-z

我需要從每個字母中選擇三個名字並顯示一個頁面,所以總的結果將是26 * 3 = 78

我已經做到了這一點使用PHP,我需要優化的查詢,我們能在單個查詢中完成此操作?

+0

我已經寫了手動查詢與PHP的幫助。即26查詢 – 2013-02-13 05:39:06

+2

是的,它可以完成,張貼您已經嘗試過的查詢 – Minesh 2013-02-13 06:01:03

回答

1

請有這一個嘗試:

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 
+0

感謝您的答覆。但它返回一個空的結果。 – 2013-02-13 10:16:42

+0

你確定嗎?你的表中有(測試)數據嗎?在這個查詢中,沒有限制數據的內容,所以不管它是對還是錯,都應該有一些結果。 – fancyPants 2013-02-13 10:27:30

+0

是的,我確定,表中有大約2500行數據。但它沒有顯示任何結果 – 2013-02-13 12:41:43

1

嘗試使用
SELECT * FROM user WHERE name LIKE 'a%' LIMIT 0,3

我不知道,如果這是你問。 Lemme知道它是否解決了! :)

+0

我已經使用這26次的每個字母,SELECT * FROM用戶WHERE名稱LIKE'a%'限制0,3,我需要找到一種方法在單個查詢中執行此操作。 – 2013-02-13 08:32:46

+0

哦!那麼需要考慮! :) – 2013-02-13 08:50:45

相關問題