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