【问题标题】:How to get distinct data from left joined result?如何从左连接结果中获取不同的数据?
【发布时间】:2016-05-27 08:52:19
【问题描述】:

我有两张桌子serversserver_group。我尝试了left join,但我的问题是两次服务器组 ID 和名称获取。我需要不同的服务器组 ID 和名称。请帮帮我。

左加入

SELECT sg.id, sg.name, s.servers_id, s.title
FROM server_group sg
    LEFT JOIN servers s ON sg.id = s.group_id

server_group

id name
1  google   
2  yahoo
3  msn

服务器

servers_id| title| name|
2           yahoo   yahoo
2           yahoo   yahoo
3           msn     msn

我的查询结果是

id| name |  servers_id|  title|
2   yahoo     2          yahoo
2   yahoo     2          yahoo
3   msn       3          msn
1   google    null       null

我需要不同的 id 和 name。在我的列表页面中,我需要获得两个表格结果。当我点击 server_group 服务器详细信息将显示。

【问题讨论】:

  • 说真的,你的输出是什么,我无法理解 mate
  • 你怎么能拥有两台具有相同servers_id的服务器?
  • 将预期结果添加为文本!

标签: php mysql sql


【解决方案1】:

试试这个:

SELECT sg.id, sg.name, s.servers_id, s.title 
FROM server_group sg 
LEFT JOIN (
   SELECT DISTINCT servers_id, title
   FROM servers
) s ON sg.id = s.servers_id

因此,您需要连接到仅包含 distinct 值的派生表,而不是加入 servers 表。

【讨论】:

    猜你喜欢
    • 2023-02-11
    • 2018-02-11
    • 2010-10-21
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多