在 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')
所以如您所见,名称字段不是唯一的我可以有多个具有相同名称的图标,并且它们用大小字段分隔。现在在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要一个额外的列来排序,将首选值放在顶部。例如,您可以执行以下操作:
新的
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:
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.按尺寸 DESC 排序
?ORDER BY size DESC
?