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:byid
,我只是指表`的PK
,我尝试添加:group by table1.messageid,但它什么也不返回。@Satch3000这不可能GroupBy
可以减少结果的数量,但如果您以前有结果,它无法将其恢复到0
。我会按table1.messageid
进行分组,否则这就是解决方案。@GolezTrol:BYid
,我只是指表`的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
不返回任何内容,则实际语句也不返回任何内容