如何在 MySQL 通過一個 SQL 語句,實現(xiàn)從多個表中組合字段然后插入到一個新表中。
具體情形是:有三張表 a鳖轰、b遣疯、c雄可,現(xiàn)在需要從表 b 和 表 c 中分別查幾個字段的值插入到表 a 中對應(yīng)的字段。對于這種情況,我們可以使用如下的語句來實現(xiàn)数苫。
INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name
當(dāng)然聪舒,上面的語句比較適合兩個表的數(shù)據(jù)互插,如果多個表就不適應(yīng)了虐急。對于多個表箱残,我們可以先將需要查詢的字段 join 起來,然后組成一個視圖后再 select from 就可以了戏仓。
INSERT INTO a(field1,field2) SELECT * FROM(SELECT f1,f2 FROM b JOIN c) AS tb
其中f1是表b的字段疚宇,
f2是表c的字段,
通過join查詢就將分別來自表b和表c的字段進行了組合赏殃,然后再通過select嵌套查詢插入到表a中敷待,這樣就滿足了我們這個場景了.
如果需要不止2個表,那么可以多個join的形式來組合字段仁热。需要注意的是嵌套查詢部分最后一定要有設(shè)置表別名榜揖,如下:
SELECT * FROM(SELECT f1,f2 FROM b JOIN c) AS tb
最后的as tb是必須的(當(dāng)然tb這個名稱可以隨意取)抗蠢,即指定一個別名举哟,否則在mysql中會報如下錯誤:
···
ERROR 1248 (42000): Every derived TABLE must have its own alias 即每個派生出來的新表都必須指定別名才可以的。
···