我们如何在mysql的左连接中使用distinct

时间:2017-06-28 07:14:33

标签: group-by inner-join distinct

我正在为我的应用程序使用PHP和MySQL。

我有一张桌子"查询"使用PK enquiry_id和表格" Enquiry_comments"与FK enquiry_id。每个查询都会有多条评论。在我的加入中,我如何仅针对每个查询显示最后一条评论?

  

SELECT * FROM e AS enquiry_comments LEFT JOIN ec AS ec   在enquiry_ide = enquiry_ide WHERE statuse ='有效'   ORDER BY enquiry_idgroup by or distinct DESC LIMIT 10

以上查询为我提供了重复记录,因此我想在enquiry_idorder by enquiry_comment_id DESC上使用enquiry_id enquiry_about enquiry_date 1 PHP 2017-09-20 2 MySQL 2017-08-21 进行enquiry_comments,并仅显示最近对该列表的评论。< / p>

表格结构:

表格查询

enquiry_comment_id enquiry_id enquiry_comment enquiry_comment_date
1                     1       PHP is Easy     2017-08-03
2                     1       PHP is Ver 7    2017-09-17
3                     2       MySQK is RDBS   2017-09-13

表格Enquiry_comments

PHP

根据上面的示例数据,我想在每个查询中获得最新的一条评论,因此enquiry_comment_id 2应该收到MySQL的最新评论,enquiry_comment_id 3获取1 PHP PHP is Ver 7 2017-09-17 2 MySQL MySQK is RDBS 2017-09-13 }

我想要的商家信息

XPath

1 个答案:

答案 0 :(得分:2)

尝试此查询:

SELECT
    t1.enquiry_id,
    t1.enquiry_about,
    (SELECT t2.enquiry_comment FROM Enquiry_comments t2
     WHERE t2.enquiry_id = t1.enquiry_id
     ORDER BY t2.enquiry_comment_date DESC LIMIT 1) AS enquiry_comment,
    (SELECT MAX(t2.enquiry_comment_date) FROM Enquiry_comments t2
     WHERE t2.enquiry_id = t1.enquiry_id) AS enquiry_comment_date
FROM Enquiries t1
ORDER BY t1.enquiry_id;

对于Enquiries表中的每条记录,此查询在Enquiry_comments上执行子查询,并为每个父查询选择最新的注释。要查找最新记录,请使用ORDER BYLIMIT技巧。为了找到相应的最新评论日期,我们可以使用带有MAX()函数的简单子查询。

<强>输出:

enter image description here

在这里演示:

Rextester