mysql-如何从SQL中的相关表中获得单个结果?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql-如何从SQL中的相关表中获得单个结果?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1586字,纯文字阅读大概需要3分钟。
内容图文
![mysql-如何从SQL中的相关表中获得单个结果?](/upload/InfoBanner/zyjiaocheng/880/1b29cdac8b2f4b6e80ca043f9f23dcec.jpg)
我有以下SQL查询:
SELECT
gallery.id,
gallery.thumbnail_big,
products.id,
products.title,
products.size,
products.price,
products.text_description,
products.main_description
FROM
gallery,
products
WHERE gallery.id=products.id
它从2个表(“产品”和“图库”)中获取数据.表“图库”包含产品的图像.每个图像的ID均与产品ID相同.每个产品都有多个图像,因此,如果像上面指定的查询一样获取数据,则将获得每个产品的所有图像.我需要得到1张图片.每个产品1张图片.我知道我可以使用DISTINCT关键字来做到这一点.但是我不知道应该如何与我有查询一起使用.
解决方法:
由于您使用的是MySQL,因此我将为您提供一个非常简单的特定于MySQL的解决方案:
SELECT
gallery.id,
gallery.thumbnail_big,
products.id,
products.title,
products.size,
products.price,
products.text_description,
products.main_description
FROM gallery
INNER JOIN products
ON gallery.id=products.id
GROUP BY products.id
当然,这将返回任意的gallery.id和thumbnail_big,但您尚未指定所需的那个.实际上,它将是第一个物理存储在表中的对象,但是您对此几乎没有控制权.
上面的查询是模棱两可的,因此ANSI SQL和大多数RDBMS品牌都不允许使用.但是MySQL允许这样做(SQLite也这样做).
更好的解决方案是使查询不模糊.例如,如果您要获取具有最高主键值的图库图像:
SELECT
g1.id,
g1.thumbnail_big,
p.id,
p.title,
p.size,
p.price,
p.text_description,
p.main_description
FROM products p
INNER JOIN gallery g1 ON p.id = g1.id
LEFT OUTER JOIN gallery g2 ON p.id = g2.id AND g1.pkey < g2.pkey
WHERE g2.id IS NULL
我必须假定您还有另一个自动递增的gallery.pkey列,否则可以用来唯一区分给定产品的图库图像.如果没有这样的列,则需要创建一个.
然后查询尝试查找同一产品的行g2,该行大于g1.如果不存在这样的行,则g1必须是最大的行.
内容总结
以上是互联网集市为您收集整理的mysql-如何从SQL中的相关表中获得单个结果?全部内容,希望文章能够帮你解决mysql-如何从SQL中的相关表中获得单个结果?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。