我正在为我的应用程序使用PHP和MySQL。
我有一张桌子"查询"使用PK enquiry_id和表格" Enquiry_comments"与FK enquiry_id。每个查询都会有多条评论。在我的加入中,我如何仅针对每个查询显示最后一条评论?
SELECT * FROM
e
ASenquiry_comments
LEFT JOINec
ASec
在enquiry_id
。e
=enquiry_id
。e
WHEREstatus
。e
='有效' ORDER BYenquiry_id
。group by or distinct
DESC LIMIT 10
以上查询为我提供了重复记录,因此我想在enquiry_id
和order 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
答案 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 BY
和LIMIT
技巧。为了找到相应的最新评论日期,我们可以使用带有MAX()
函数的简单子查询。
<强>输出:强>
在这里演示: