我有两张桌子。一个包含Article_ID
的文章。另一个包含Image_URL
,Article_ID
,height
和width
(每篇文章多个图片)。我想制作一份单独的文章列表,以及与该文章相关联的最大Image_URL
图片的height
。我目前有:
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}}最大的图片
样本记录:
文章
Article_ID | ARTICLE_NAME
1&#39;欢迎来到伦敦&#39;
2&#39;在伦敦可以做的事情&#39;
Article_Images
Image_ID | Article_ID | Image_URL |身高|宽度
1 | 1 | img1.jpg | 300 | 600
2 | 1 | img2.jpg | 200 | 200
3 | 2 | img12.jpg | 100 | 200
答案 0 :(得分:0)
<击> 撞击>
<击>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 * width) Largest_Image
FROM Article_Images
GROUP BY Article_ID
) c ON b.Article_ID = c.Article_ID
WHERE (b.height * b.width) = c.Largest_Image
但这会导致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
答案 1 :(得分:0)
这不好笑吗?你开始要求尺寸,然后修改到高度。但在你澄清要求之前,我们开始变得复杂。
我现在意识到您需要对您的版本执行的操作是将ORDER BY更改为
ORDER BY height DESC
。
默认情况下,ORDER BY是ASCending,因此100会在900之前出现。因此,您的代码是一个高度最短的文章列表。
但是为了记录,这里是John Woo的拼凑方法的固定和简化版本。
SELECT a.*, b.*
FROM Articles a
INNER JOIN
(
SELECT *
FROM Article_Images
GROUP BY Article_ID
ORDER BY height DESC
LIMIT 1
) b
但是,您最好在文章表格中预先存储首选缩略图ID。
答案 2 :(得分:-1)
你有没有尝试过:
SELECT Image_URL,Article_Images.Article_ID,max(height)'height', 宽度
FROM Articl_Images
INNER JOIN
Articles
ONArticles
。Article_ID = Article_Images.Article_IDGROUP BY Article_ID,身高