MySQL-文章列表,最大高度
我有两张桌子。其中一个包含具有MySQL-文章列表,最大高度,mysql,Mysql,我有两张桌子。其中一个包含具有文章ID的文章。另一个包含Image\u URL、Article\u ID、height和width(每篇文章有多个图像)。我想制作一个单独文章的列表,以及与该文章相关的最大高度的图像的Image\u URL。我目前有: SELECT Image_URL, Article_Images.Article_ID, height, width FROM Article_Images INNER JOIN `Articles` ON `Articles`.Article
文章ID
的文章。另一个包含Image\u URL
、Article\u ID
、height
和width
(每篇文章有多个图像)。我想制作一个单独文章的列表,以及与该文章相关的最大高度的图像的Image\u URL
。我目前有:
SELECT Image_URL, Article_Images.Article_ID, height, width
FROM Article_Images
INNER JOIN `Articles` ON `Articles`.Article_ID = Article_Images.Article_ID
GROUP BY Article_ID
ORDER BY height
但这似乎并没有给我每个人最大的高度
图像
样本记录:
文章
物品编号|物品名称
1“欢迎来到伦敦” 2“在伦敦要做的事情”
文章图片 图片|文章|图片|网址|高度|宽度
1 | 1 | img1.jpg | 300 | 600 2 | 1 | img2.jpg | 200 | 200 3 | 2 | img12.jpg | 100 | 200
您是否尝试过: 选择图片URL、文章图片。文章ID、最大(高度)‘高度’, 宽度 来自Artil_图像 内部连接
文章
在文章
上。文章ID=
Article\u Images.Article\u ID
按物品编号、高度分组
但这将导致混淆5x7=7x5
SELECT a.*, b.*
FROM Articles a
INNER JOIN Article_Images b
ON a.Article_ID = b.Article_ID
INNER JOIN
(
SELECT Article_ID, MAX(height) height
FROM Article_Images
GROUP BY Article_ID
) c ON b.Article_ID = c.Article_ID
AND b.height = c.height
这不是很有趣吗。你开始要求尺寸,然后改为身高。但在你澄清需求之前,我们开始变得复杂起来 我现在意识到,你需要做的只是改变阅读顺序
按高度顺序描述
默认情况下,ORDER By是升序,因此100将在900之前出现。因此,您的代码是具有最短高度的文章列表
但为了记录在案,这里是我拼凑的吴宇森方法的固定和简化版本
SELECT a.*, b.*
FROM Articles a
INNER JOIN
(
SELECT *
FROM Article_Images
GROUP BY Article_ID
ORDER BY height DESC
LIMIT 1
) b
但是,您最好将首选缩略图ID预先存储在文章表中。什么是最大的“图像?只有高度并不意味着它是最大的(比较
高度=100&宽度=5
与高度=50&宽度=20
)我想要高度最大的图像(精细问题)您可能会更频繁地列出文章,而不是添加更高的图像,您应该考虑将一个字段“FaskDimaGuid ID”添加到文章表中,并用最大的图像ID填充它。这也将允许您稍后设置您所使用的图像。你想使用吗?通过这个,我得到了每篇文章的多次出现?你能给出样本记录吗?根据你的例子,我没有得到任何重复的记录:如果一篇文章的两个图像大小相同,它们都将被返回(b.height=c.height)。可能真实的数据包含大小相同的图像。通过此操作,我得到了每篇文章的多次出现。这有效吗?您的子查询返回多少条记录?子查询返回1条记录,因为限制1
。您知道吗,我有一种奇怪的感觉,即所有操作都需要DESC
关键字。。。
SELECT a.*, b.*
FROM Articles a
INNER JOIN
(
SELECT *
FROM Article_Images
GROUP BY Article_ID
ORDER BY height DESC
LIMIT 1
) b