有一个聊天参与者表data_chats_parties
。在此表中,有两个字段team
和member
,表示参与者是会员还是团队帐户。如果team = 0则它是一个成员帐户。如果团队!= 0则是团队帐户。
如果是团队帐户,我需要从name
表中提取data_teams
列。否则,我需要从username
表中获取data_members
列。
显然这个查询不起作用,但这是我想要实现的目标。
SELECT data_chats_parties.*,data_teams.name,data_members.username
FROM data_chats_parties
IF ( data_chats_parties.team!=0 THEN
INNER JOIN data_teams ON data_teams.id=data_chats_parties.team ELSE
INNER JOIN data_members ON data_members.id=data_chats_parties.member )
WHERE data_chats_parties.member!=1
GROUP BY data_chats_parties.id
WHERE data_chats_parties.member!=1
行只是说"获取不是我的参与者"。
是否有可能以这种方式实现这一目标?
答案 0 :(得分:1)
您需要使用2个不同的查询并执行UNION ALL
:
-- Get teams
SELECT
dcp.*, dt.name
FROM data_chats_parties dcp
INNER JOIN data_teams dt
ON dt.id = dt.team
WHERE
dcp.member <> 1
AND dcp.team <> 0
UNION ALL
-- Get members
SELECT
dcp.*, dt.name
FROM data_chats_parties dcp
INNER JOIN data_members dm
ON dt.id = dt.member
WHERE
dcp.member <> 1
AND dcp.team = 0