在 SQL 中按组获取特定条目

发布于 2024-09-03 03:44:10 字数 692 浏览 8 评论 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 中,我有一个获取一个图标集的查询,例如:

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 大小(如果不是其他大小)?

谢谢 !

I've a database who contain some datas in that form:

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

So as you see it, the name field is not uniq I can have multiple icons with the same name and they are separated with the size field. Now in PHP I have a query that get ONE icon set, for example :

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

With this example if $tag contain 'twitter' it will show ONLY the first SQL data entry with the tag 'twitter', so it will be :

(myicon.png, 16, 'twitter')

This is what I want, but I would prefer the '128' size by default. Is this possible to tell SQL to send me only the 128 size when existing and if not another size ?

Thanks !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

日裸衫吸 2024-09-10 03:44:10

您需要一个额外的列来排序,将首选值放在顶部。例如,您可以执行以下操作:

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

You need an additional column to order by that puts the preferred value at the top. For example, you could do something like this:

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

The new order by clause puts your preferred size first (since it's the only one it assigns a 1 to), and then orders the rest of them by their actual size, biggest first.

野の 2024-09-10 03:44:10

按尺寸 DESC 排序

ORDER BY size DESC?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文