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

MySQL:使用透视表从其他列填充表列,mysql,Mysql,我有3个表格,“问题”,“q\U t”->数据透视表和“标签”: 我需要用q_t.tid to be=questions.lid中的第一个匹配项填充tags.lid “问题”表结构: qid lid 1 901 2 901 3 500 4 500 5 200 6 210 7 333 8 423 qid tid 1 8 2 4 3 8 4

我有3个表格,“问题”,“q\U t”->数据透视表和“标签”:

我需要用q_t.tid to be=questions.lid中的第一个匹配项填充tags.lid

“问题”表结构:

qid     lid
1       901
2       901
3       500
4       500
5       200
6       210
7       333
8       423
qid    tid
1       8
2       4
3       8
4       1
1       2
6       3
2       8
8       1
tid     lid
1       null
2       null
3       null
4       null
5       null
6       null
7       null
8       null
“q_t”表结构:

qid     lid
1       901
2       901
3       500
4       500
5       200
6       210
7       333
8       423
qid    tid
1       8
2       4
3       8
4       1
1       2
6       3
2       8
8       1
tid     lid
1       null
2       null
3       null
4       null
5       null
6       null
7       null
8       null
“标记”表结构:

qid     lid
1       901
2       901
3       500
4       500
5       200
6       210
7       333
8       423
qid    tid
1       8
2       4
3       8
4       1
1       2
6       3
2       8
8       1
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

谢谢,

我会这样问:

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