mysql |有条件的左连接请求

时间:2014-09-22 06:57:26

标签: mysql left-join

我有一张桌子:

record_id   user_id   type

1           1         0
2           1         1
3           1         0

问题 //键入 - 0

id   title
1    Title1
2    Title2 
3    Title3 

回答 // type-1

id   question_id

2    2

我需要获取此输出数据的请求

record_id   user_id   type   title

1           1         0      Title1
2           1         1      Title2
3           1         0      Title3

我认为这将是有条件的左连接(如果type = 0,则左边连接有问题表;如果type = 1则左边连接和答案表)。 我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

如果我理解你的逻辑,这应该会给你正在寻找的结果:

SELECT
  v.record_id,
  v.user_id,
  v.type,
  COALESCE(q1.title, q2.title) as title
FROM
  votes v LEFT JOIN question q1
  ON v.type=0 AND v.record_id=q1.id
  LEFT JOIN answer a
  ON v.type=1 AND v.record_id=a.id
  LEFT JOIN question q2
  ON a.question_id=q2.question_id

答案 1 :(得分:0)

SELECT
  votes.record_id, votes.user_id, votes.type, question.title
FROM
  votes
  LEFT JOIN question ON votes.type=0 AND question.id=votes.record_id
  LEFT JOIN answer ON votes.type=1 AND answer.id=votes.record_id