MySQL - 具有最大高度的文章列表

时间:2014-04-04 08:25:55

标签: mysql

我有两张桌子。一个包含Article_ID的文章。另一个包含Image_URLArticle_IDheightwidth(每篇文章多个图片)。我想制作一份单独的文章列表,以及与该文章相关联的最大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


3 个答案:

答案 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 ON Articles。Article_ID =   Article_Images.Article_ID

     

GROUP BY Article_ID,身高