SQL/php左连接-仅显示一个实例

SQL/php左连接-仅显示一个实例,php,sql,Php,Sql,我正在使用下面的查询,这非常有效,但我需要对其进行修改 SELECT * FROM `table1` LEFT JOIN `table2` ON table1.messageid=table2.messageid WHERE `venue_active` = 1 我这里的问题是,我table2.messageid可能有多个匹配项,我只显示了1个,但我仍然希望返回table1上的所有记录 例如: table1.messageid表2中可能有很多子项,我只需要显示

我正在使用下面的查询,这非常有效,但我需要对其进行修改

SELECT  * 
FROM    `table1` LEFT JOIN 
        `table2` ON table1.messageid=table2.messageid 
WHERE   `venue_active` = 1
我这里的问题是,我
table2.messageid
可能有多个匹配项,我只显示了1个,但我仍然希望返回table1上的所有记录

例如:

table1.messageid
表2中可能有很多子项,我只需要显示1

我该怎么做


更新:我尝试添加:groupbytable1.messageid,但它不返回任何内容。

只需添加
groupby

SELECT  * 
FROM    `table1` LEFT JOIN 
        `table2` ON table1.messageid=table2.messageid 
WHERE   `venue_active` = 1
GROUP BY table1.messageid

只需添加
分组依据

SELECT  * 
FROM    `table1` LEFT JOIN 
        `table2` ON table1.messageid=table2.messageid 
WHERE   `venue_active` = 1
GROUP BY table1.messageid

添加一个
分组依据
子句

SELECT  * 
FROM    `table1` LEFT JOIN 
        `table2` ON table1.messageid=table2.messageid 
WHERE   `venue_active` = 1
GROUP BY table1.messageid

添加一个
分组依据
子句

SELECT  * 
FROM    `table1` LEFT JOIN 
        `table2` ON table1.messageid=table2.messageid 
WHERE   `venue_active` = 1
GROUP BY table1.messageid

我没有确切的表,但这与您的查询从我的两个表中运行是等价的,它们是1:许多关系tblusers是您的表1,tblmessages是您的表2

SELECT tblusers.ID FROM `tblusers` LEFT JOIN tblmessages ON tblusers.ID=tblmessages.recipient_user_id WHERE tblmessages.state=1
这个返回这个

如果我现在将查询更改为

SELECT DISTINCT tblusers.ID FROM `tblusers` LEFT JOIN tblmessages ON tblusers.ID=tblmessages.recipient_user_id WHERE tblmessages.state=1
现在,我得到了一个唯一的列表,其中列出了在我的messages表中至少有一条消息的所有用户


我没有您确切的表,但这相当于您的查询运行了两个我的表,它们是1:许多关系TBluser是您的表1,TBlmessage是您的表2

SELECT tblusers.ID FROM `tblusers` LEFT JOIN tblmessages ON tblusers.ID=tblmessages.recipient_user_id WHERE tblmessages.state=1
这个返回这个

如果我现在将查询更改为

SELECT DISTINCT tblusers.ID FROM `tblusers` LEFT JOIN tblmessages ON tblusers.ID=tblmessages.recipient_user_id WHERE tblmessages.state=1
现在,我得到了一个唯一的列表,其中列出了在我的messages表中至少有一条消息的所有用户


我想按
table1.messageid进行分组,但除此之外,这就是解决方案。@GolezTrol:by
id
,我只是指表`的
PK
,我尝试添加:group by table1.messageid,但它什么也不返回。@Satch3000这不可能
GroupBy
可以减少结果的数量,但如果您以前有结果,它无法将其恢复到
0
。我会按
table1.messageid
进行分组,否则这就是解决方案。@GolezTrol:BY
id
,我只是指表`的
PK
,我尝试添加:groupbytable1.messageid,但它什么也不返回。@Satch3000这是不可能的<代码>分组依据
可以减少结果的数量,但如果您以前有结果,它无法将结果恢复到
0
。我尝试添加:按表分组1.messageid,但它不返回任何结果。我尝试添加:按表分组1.messageid,但它不返回任何结果。不执行选择*,指定所需的实际列,如果只想选择table2.messageid为多个的位置,只需选择distinct tbl2.messageid作为select子句的第一部分。如果
GROUP BY
不返回任何内容,则实际语句不返回任何内容。如果不执行select*,指定所需的实际列,如果只想选择table2.messageid为多个的位置,只需选择distinct tbl2.messageid作为select子句的第一部分。如果
GROUP BY
不返回任何内容,则实际语句也不返回任何内容