gpt4 book ai didi

MySQL 连接和计数查询

转载 作者:行者123 更新时间:2023-12-01 00:55:50 24 4
gpt4 key购买 nike

我有两个 MySQL 表,结构如下;

广告

+-------------------+--------------+
| Field | Type |
+-------------------+--------------+
| id | int(11) |
| title | varchar(150) |
+-------------------+--------------+

广告兴趣记录

+--------------+------------+
| Field | Type |
+--------------+------------+
| id | int(11) |
| advert_id | int(11) |
| message | longtext |
+--------------+------------+

我想从“advert”表中选择所有记录的列表 - 并从“advert_interest_record”表中获取行数,其中 advert.id=response.advert_id。

我用来连接表的 SQL 如下;

SELECT advert.id, advert.title 
FROM advert
LEFT JOIN advert_interest_record ON advert.id = advert_interest_record.advert_id
GROUP BY advert_interest_record.advert_id

我遇到的第一个问题是,当“advert_interest_record”表中没有记录时,“advert”表中的记录不会包含在结果中 - 我需要它。

我的第二个问题是,我将如何计算“advert_interest_record”表中的行数?

如有任何建议,我们将不胜感激。

谢谢。

最佳答案

首先;您正在从广告表中选择两个字段;在 advert_interest_record 表中的一个字段上进行调整。

假设对于所有 advert.id 值,advert.title 值相同,它可能会给出正确的结果。

无论如何;由于您希望 advert 中的数据处于领先地位,因此最好对您想要唯一返回的那个表的字段进行分组(这也有助于获取与另一个表中的记录相关联的记录数)。

例如,您可以查询如下:

SELECT a.id, a.title, COUNT(air.id)
FROM advert a
LEFT JOIN advert_interest_records air ON a.id = air.advert_id
GROUP BY a.id, a.title

这将为您提供 advert.id 和 advert.title 的所有唯一组合的结果,以及 advert_interest_records 中与 advert.id 值关联的记录数。

我假设 advert.id 是唯一的,并且每个 id 只出现一次。否则,对 id 和 title 进行分组(我认为与其他 DBMS 相比,MySQL 本身不需要)可能会给您不正确的结果。

关于MySQL 连接和计数查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11052340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com