在SQL中按组获取特定条目

时间:2010-05-26 01:53:50

标签: php sql data-entry

我有一个包含该格式的数据的数据库:

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");

使用此示例,如果$ tag包含'twitter',它将仅显示带有标签'twitter'的第一个SQL数据条目,因此它将是:

(myicon.png, 16, 'twitter')

这就是我想要的,但我更喜欢默认的“128”尺寸。这是否可以告诉SQL只在存在时发送128大小,如果不是另一个大小?

谢谢!

2 个答案:

答案 0 :(得分: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的大小),然后按照实际大小排序其余大小,最先大小。

答案 1 :(得分:0)

ORDER BY size DESC