2010-05-26 106 views
0

特定條目我有誰包含在一些形式DATAS數據庫:獲得通過組SQL

icon(name, size, tag) 
(myicon.png, 16, 'twitter') 
(myicon.png, 32, 'twitter') 
(myicon.png, 128, 'twitter') 
(myicon.png, 256, 'twitter') 
(anothericon.png, 32, 'facebook') 
(anothericon.png, 128, 'facebook') 
(anothericon.png, 256, 'facebook') 

所以當你看到它,名字字段不uniq的,我可以有多個圖標相同的名稱,它們與大小字段分隔。現在,在PHP我有一個查詢,得到一個圖標集,例如:

mysql_query("SELECT * FROM icon WHERE tag='".$tag."' ORDER BY size LIMIT 0, 10"); 

有了這個例子中,如果$標籤包含「嘰嘰喳喳」,它會只顯示與標籤「嘰嘰喳喳」的第一個SQL數據錄入,所以它會是:

(myicon.png, 16, 'twitter') 

這是我想要的,但我更喜歡'128'的大小默認情況下。這是否有可能告訴SQL在現有的情況下只發送128位大小,如果不是其他大小?

謝謝!

回答

0

ORDER BY size DESC

+0

否,因爲128尺寸不一定是最後的數據。例如,我可以有16,32,128,256;所以如果我添加DESC,它會顯示256. – Jensen 2010-05-26 02:01:04

1

您需要一個附加列來排序,將首選值放在頂部。例如,你可以做這樣的事情:

SELECT 
    * 
FROM 
    icon 
WHERE 
    tag='whatever' 
ORDER BY 
    case size when 128 then 1 else 0 end desc, 
    size desc 
LIMIT 0, 10 

order by條款首先將你的首選大小(因爲它是唯一一個它分配一個1),然後訂單通過他們的實際尺寸他們的休息,最大的第一。

+0

Woow,我不確定要了解所有代碼。我會做一些測試。 – Jensen 2010-05-26 02:01:39

+0

嗯,沒有運行。你能解釋我更多嗎? – Jensen 2010-05-26 02:03:40

+0

在你的例子中,額外的列是什麼?而她所包含的是什麼? – Jensen 2010-05-26 02:06:21