[英]How to merge these two mysql tables?
表酮
a |b| c
--------
a1 | |c1
a2 | |c2
a3 | |c3
表二
a | b
-----
a1|b1
a2|b2
a3|b3
a4|b4
a5|b5
合並
a | b | c
a1| b1|c1
a2| b2|c2
a3| b3|c3
a4| b4|
a5| b5|
所以我有兩張表,我想合並它們。 我在 phpmyadmin 嘗試了這兩個選項:
INSERT IGNORE INTO tableone SELECT * FROM tabletwo;
REPLACE INTO tableone SELECT * FROM tabletwo;
但兩者都做同樣的事情(把一張桌子放在另一張桌子上),但我想合並它們。 那么我必須使用什么查詢? 我希望你明白這個問題...
連續嘗試這些查詢:
INSERT IGNORE INTO tableone (a) SELECT a FROM tabletwo;
UPDATE tableone, tabletwo
SET tableone.b = tabletwo.b
WHERE tableone.a = tabletwo.a;
要回答 pst,像這樣,假設tableone
沒有b
列:
INSERT INTO tablethree (a, b, c)
SELECT * FROM ((
SELECT
tableone.a AS a,
tabletwo.b AS b,
tableone.c AS c
FROM tableone
LEFT OUTER JOIN tabletwo
ON tableone.a = tabletwo.a
) UNION (
SELECT
tabletwo.a AS a,
tabletwo.b AS b,
tableone.c AS c
FROM tableone
RIGHT OUTER JOIN tabletwo
ON tableone.a = tabletwo.a
)) AS x
這是未經測試的,但應該可以工作。 (“應該”...) UNION 是 MySQL 缺少 FULL OUTER JOIN 的一種解決方法。
CREATE TABLE merged AS
SELECT A.a,A.b,B,B.c FROM
tabletwo A LEFT JOIN tableone USING (a);
我首先選擇了 tabletwo,因為它具有所需的所有鍵
當然,因為 tabletwo 擁有所有的鍵,所以這是完美的情況。
使用集合論,如果tableone的key和tabletwo的key的交集與tableone的所有key或者tabletwo的所有key不一樣,你怎么辦??? 做這個:
CREATE TABLE merged AS
SELECT
A.a,B.b,C.c
FROM
(
SELECT a FROM tableone
UNION
SELECT a FROM tabletwo
) A
LEFT JOIN tableone B USING (a)
LEFT JOIN tabletwo C USING (a);
內聯 SELECT A 將所有合並的鍵作為一個集合 UNION。
B 中缺少 C 中的某些內容的任何行都會為來自 C 的缺少條目獲取 NULL 列。
C 中缺少 B 中的某些內容的任何行都會為 B 中缺少的條目獲取 NULL 列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.