【问题标题】:How to run a select query based on data from another select query如何根据来自另一个选择查询的数据运行选择查询
【发布时间】:2014-10-22 18:21:08
【问题描述】:

我有一个包含两个表组和成员的数据库。这些表中的列如下。

组表: group_id,group_name

成员表: member_id,group_id,状态

我有一个应用需要显示群组列表以及群组成员。说SELECT * from groups 然后对于返回的每个组/行在成员表上执行另一个选择以查询成员(例如SELECT * FROM members WHERE group_id=X),最有效的方式是什么。

【问题讨论】:

  • 你知道JOIN怎么用吗?如果没有,请从这里开始。
  • 我想联接会取回数据,但是我对每个成员都有一个单独的行。在我的应用程序中,我想分别显示每个组,然后分别显示每个组的成员。理想情况下,在应用程序中,我会通过一组组,然后 groups.member 将成为成员。我不确定谁会从连接中获得这种类型的输出?也感谢您的快速响应!
  • 您必须决定在应用程序代码中做什么以及在查询中做什么。有时 MySQL 不是你想做某些数据转换操作的地方。

标签: mysql sql


【解决方案1】:
SELECT * 
FROM groups g
LEFT JOIN members m
ON g.group_id = m.group_id

这将返回所有组及其成员。

可以引入变量,比如

SET @groups = (SELECT TOP 1 group_id FROM groups)

并将其添加到您的查询中。

SELECT * 
FROM groups g
LEFT JOIN members m
ON g.group_id = m.group_id
WHERE g.group_id = @groups

【讨论】:

  • top?这不是用于 SQL Server 吗?我想你的意思是select group_id from groups limit 1)
【解决方案2】:

假设membersgroups 都有一个名为group_id 的列,您可以使用join 获取您想要的结果:

select m.*
from members as m
     inner join groups as g on m.group_id = g.group_id
where group_id = X

【讨论】:

    【解决方案3】:
    select 
       g.group_id,
       g.group_name,
       m.member_id,
       m.status
    
    from groups g 
         inner join members m on g.group_id = m.group_id
    

    【讨论】:

      猜你喜欢
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多