MySQL:使用数据透视表从其他列填充表列

时间:2014-11-25 12:03:31

标签: mysql

我有3个表,“问题”,“q_t” - >数据透视表和“标签”:

我需要在q_t.tid中第一次出现时填充tags.lid为= questions.lid

“问题”表格结构:

qid     lid
1       901
2       901
3       500
4       500
5       200
6       210
7       333
8       423

“q_t”表格结构:

qid    tid
1       8
2       4
3       8
4       1
1       2
6       3
2       8
8       1

“tags”表格结构:

tid     lid
1       null
2       null
3       null
4       null
5       null
6       null
7       null
8       null

我需要“标签”表格为:

tid     lid
1       500
2       901
3       210
4       901
5       null
6       null
7       null
8       901

感谢,

1 个答案:

答案 0 :(得分:1)

我会选择这样的查询:

UPDATE tags t
SET t.lid = (
  SELECT q.lid
  FROM questions q
  JOIN q_t ON (q.qid = q_t.qid)
  WHERE q_t.tid = t.tid
  LIMIT 1
)

它可能不是最好的表现,但对于一次性工作,应该这样做。

作为替代方案:

UPDATE tags t
JOIN (
  SELECT q.lid, q_t.tid
  FROM questions q
  JOIN q_t USING (qid)
  GROUP BY q_t.tid
) d USING(tid)
SET t.lid = d.lid