Mysql Sql查询返回单行,但不是全部

Mysql Sql查询返回单行,但不是全部,mysql,sql,database,Mysql,Sql,Database,我试图通过一个SQL查询获取记录。数据库中有许多记录,但它只返回一行 例如: 它返回记录1。如果我删除此记录,它将返回第2条记录。因为有很多记录。我想让它显示所有的记录 这是我的问题 SELECT camp.title, camp.status, c.name, b.base_id, count(s.base_id) as subscribers FROM campaigns as camp JOIN company as c ON c.id = camp.company_id JOIN cam

我试图通过一个SQL查询获取记录。数据库中有许多记录,但它只返回一行

例如: 它返回记录1。如果我删除此记录,它将返回第2条记录。因为有很多记录。我想让它显示所有的记录

这是我的问题

SELECT camp.title, camp.status, c.name, b.base_id, count(s.base_id) as subscribers
FROM campaigns as camp
JOIN company as c ON c.id = camp.company_id
JOIN campaign_numbers as b ON b.campaign_id = camp.id
JOIN base_numbers as s ON s.base_id = b.base_id
WHERE camp.campaign_date = '2017-04-07' AND camp.approved = 1
实际上,我希望我的查询返回
当前日期的所有
活动,即
2017-04-07
approved
状态应为
1
,但我的查询只返回单行,而不是所有活动

如果我这样做,它会返回所有

SELECT title, status
From Campaigns
WHERE campaign_date = '2017-04-07' AND approved = 1

但我还想显示公司名称,还想数一数所有订户。我哪里做错了?

您在
选择
中有一个聚合功能,没有
分组依据
。在大多数数据库中,这将返回一个错误。在MySQL中,这是一个始终返回一行的聚合查询

大概您希望分组方式为

GROUP BY camp.title, camp.status, c.name, b.base_id

选择
中有一个聚合功能,没有
分组依据
。在大多数数据库中,这将返回一个错误。在MySQL中,这是一个始终返回一行的聚合查询

大概您希望分组方式为

GROUP BY camp.title, camp.status, c.name, b.base_id
尝试如下

SELECT camp.title, camp.status, c.name, b.base_id, count(s.id) as subscribers
FROM campaigns as camp
 Left JOIN company as c ON c.id = camp.company_id
 Left JOIN campaign_numbers as b ON b.campaign_id = camp.id
 Left JOIN base_numbers as s ON s.base_id = b.base_id
 WHERE camp.campaign_date = '2017-04-07' AND camp.approved = 1
 group by camp.title, camp.status, c.name, b.base_id
尝试如下

SELECT camp.title, camp.status, c.name, b.base_id, count(s.id) as subscribers
FROM campaigns as camp
 Left JOIN company as c ON c.id = camp.company_id
 Left JOIN campaign_numbers as b ON b.campaign_id = camp.id
 Left JOIN base_numbers as s ON s.base_id = b.base_id
 WHERE camp.campaign_date = '2017-04-07' AND camp.approved = 1
 group by camp.title, camp.status, c.name, b.base_id

该死,我花了2个小时才修好,但没法修好。你太快了,成功了。。非常感谢@七杆。您可以通过模式设置
ONLY_FULL_GROUP BY
以防止将来出现此问题。这是MySQL()中的默认设置。我正在尝试在PHP中使用此查询,我将如何设置此ONLY_FULL_GROUP_BY?@7venShots。你需要在数据库里或者在你建立连接的时候这样做。该死的,我花了2个小时来修复这个问题,但是无法做到。你太快了,成功了。。非常感谢@七杆。您可以通过模式设置
ONLY_FULL_GROUP BY
以防止将来出现此问题。这是MySQL()中的默认设置。我正在尝试在PHP中使用此查询,我将如何设置此ONLY_FULL_GROUP_BY?@7venShots。您需要在数据库内部或者在建立连接时执行此操作。