MySQL:使用透视表从其他列填充表列
我有3个表格,“问题”,“q\U t”->数据透视表和“标签”: 我需要用q_t.tid to be=questions.lid中的第一个匹配项填充tags.lid “问题”表结构: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
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