我有一个包含该格式的数据的数据库:
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大小,如果不是另一个大小?
谢谢!
答案 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
?