2014-11-25 53 views
-1

我有3個表,「問題」,「q_t」 - >透視表和「標籤」:MySQL的:從數據透視表中其他欄中填入表列

我需要填寫tags.lid在第一次出現q_t.tid是= 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 

「標籤」 表結構:

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

我會去與這樣的查詢:

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 
相關問題