以下是表格的示例:
客户端
╔══════════╦════════════╗
║ GROUP_ID ║ GROUP_NAME ║
╠══════════╬════════════╣
║ abc ║ xex ║
║ def ║ tet ║
╚══════════╩════════════╝
小组
╔════════╦════════════╗
║ ACT_ID ║ GROUP_NAME ║
╠════════╬════════════╣
║ 44 ║ xex ║
║ 32 ║ tet ║
╚════════╩════════════╝
操作
╔════╦════════════╗
║ ID ║ STATE ║
╠════╬════════════╣
║ 44 ║ complete ║
║ 58 ║ incomplete ║
╚════╩════════════╝
请注意,表act_id
中的teams
也在表actions
中显示为id
我想选择一个包含两列的表:group_id
和group_name
,其中每个group_name
都有act_id
,其中完整 state
。
我正在做类似的事情:
SELECT group_id AND group_name
FROM clients
WHERE group_name IN (SELECT group_name
FROM teams, actions
WHERE teams.act_id = actions.id
AND actions.state IS complete)
这是对的吗?
我也想过像
这样的东西SELECT group_id AND group_name
FROM clients
WHERE group_name IN (SELECT group_name
FROM teams
WHERE act_id IN (SELECT id
FROM actions
WHERE teams.act_id = actions.id.
AND state IS complete))
以上是否正确?
我希望获得的表格显然是这样的:
╔══════════╦════════════╗
║ GROUP_ID ║ GROUP_NAME ║
╠══════════╬════════════╣
║ abc ║ xex ║
╚══════════╩════════════╝
答案 0 :(得分:3)
SELECT a.*
FROM clients a
INNER JOIN teams b
ON a.group_name = b.group_name
INNER JOIN actions c
ON b.act_ID = c.id
WHERE c.state = 'complete'
您在sql查询中看到的星号*
表示它将选择所有可用的列,在这种情况下,它将全部从表clients
中选择。如果您只想选择特定列,请使用comma
分隔不AND
。例如,
SELECT a.GROUP_ID, a.GROUP_NAME
FROM clients a
INNER JOIN teams b
ON a.group_name = b.group_name
INNER JOIN actions c
ON b.act_ID = c.id
WHERE c.state = 'complete'
要进一步了解联接,请访问以下链接: