0

我有一个包含这种形式的一些数据的数据库:

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')

如您所见,名称字段不是唯一的,我可以有多个具有相同名称的图标,并且它们与大小字段分开。现在在 PHP 中,我有一个获取 ONE 图标集的查询,例如:

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 大小,如果不是另一个大小?

谢谢 !

4

2 回答 2

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 的尺寸),然后按实际尺寸对其余部分进行排序,最大的在前。

于 2010-05-26T01:58:48.787 回答
0

ORDER BY size DESC?

于 2010-05-26T01:58:03.157 回答