解析MySQL中INSERT INTO SELECT的應用。本站提示廣大學習愛好者:(解析MySQL中INSERT INTO SELECT的應用)文章只能為提供參考,不一定能成為您想要的結果。以下是解析MySQL中INSERT INTO SELECT的應用正文
1. 語法引見
有三張表a、b、c,如今須要從表b和表c平分別查幾個字段的值拔出到表a中對應的字段。關於這類情形,可使用以下的語句來完成:
INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name
下面的語句比擬合適兩個表的數據互插,假如多個表就不順應了。關於多個表,可以先將須要查詢的字段JOIN起來,然後構成一個視圖後再SELECT FROM便可以了:
INSERT INTO a (field1,field2) SELECT * FROM(SELECT b.f1,c.f2 FROM b JOIN c) AS tb
個中f1是表b的字段,f2是表c的字段,經由過程JOIN查詢就將分離來自表b和表c的字段停止了組合,然後再經由過程SELECT嵌套查詢拔出到表a中,如許就知足了這個場景了,假如須要不止2個表,那末可以多個JOIN的情勢來組合字段。
2. 語法毛病留意
須要留意的是嵌套查詢部門最初必定要有設置表別號,以下:
SELECT * FROM (SELECT f1,f2 FROM b JOIN c) AS tb
即最初的AS tb是必需的(tb這個稱號可以隨便取),即指定一個體名。每一個派生出來的新表都必需指定別號,不然在mysql中會報以下毛病:
ERROR 1248 (42000): Every derived TABLE must have its own alias
別的,MySQL中INSERT INTO SELECT不克不及加VALUES,即不克不及寫成以下情勢:
INSERT INTO db1_name(field1,field2) VALUES SELECT field1,field2 FROM db2_name
不然也會報錯:You have an error in your SQL syntax