2015-02-09 107 views
0

我想从另一个表更新我的表。我想忽略重复项,并删除该表中的所有匹配项。MYSQL创建具有唯一值的表

Source Table   Table 1    Table 2 
Customer | Address Customer | Address Customer | Address 
__________________ __________________ __________________ 

Mike  123 Main Mike  123 Main  Bob  999 1st 
Steve  456 Maple Steve  456 Maple 
John  789 Elm  John  789 Elm 
Bob  999 1st 

例如,表2只“源表”进行比较,见表1。之后我使用MYSQL/PHP有独特的条目。

任何方向非常感谢。

+0

请问哪张表具有唯一的值(s)? – ethrbunny 2015-02-09 21:56:11

+0

如果表2为空,则无法更新。更新不能产生新记录。你必须插入bob记录。 – 2015-02-09 21:56:54

+0

@ethrbunny是的,表2应具有唯一值。表2最终是与票务系统一起使用的表(为了避免重复票) – cableguy 2015-02-09 22:02:43

回答

1

SQL Fiddle

MySQL的32年5月5日架构设置

CREATE TABLE Source 
    (`Customer` varchar(5), `Address` varchar(9)) 
; 

INSERT INTO Source 
    (`Customer`, `Address`) 
VALUES 
    ('Mike', '123 Main'), 
    ('Steve', '456 Maple'), 
    ('John', '789 Elm'), 
    ('Bob', '999 1st'), 
    ('Bob', '999 1st') 
; 

CREATE TABLE Table1 
    (`Customer` varchar(5), `Address` varchar(9)) 
; 

INSERT INTO Table1 
    (`Customer`, `Address`) 
VALUES 
    ('Mike', '123 Main'), 
    ('Steve', '456 Maple'), 
    ('John', '789 Elm') 
; 

CREATE TABLE Table2 
    (`Customer` varchar(5), `Address` varchar(9)) 
; 

DELETE FROM Table2; 
INSERT INTO Table2 
    (`Customer`, `Address`) 
SELECT DISTINCT Customer, Address 
FROM Source 
WHERE NOT EXISTS (SELECT 1 FROM Table1 WHERE Source.Customer = Table1.Customer) 

查询1

SELECT * 
FROM Table2 

Results

| CUSTOMER | ADDRESS | 
|----------|---------| 
|  Bob | 999 1st | 
+0

非常感谢。这非常有意义,正是我所期待的。 – cableguy 2015-02-09 22:18:14

相关问题