【发布时间】:2015-07-10 11:26:01
【问题描述】:
我创建了3个表如下
表学生1:
id status amount Name date
1 0 4500 ram 04/02/2012
2 0 2000 shyam 05/09/2013
4 0 1500 ghanshyam 08/11/2014
表Student2:
id status amount Name date
3 0 4500 gopal 04/02/2012
2 0 8000 radheshyam 15/11/2013
4 1 1500 ghanshyam 18/10/2015
表Student3:
id status amount Name date
1 1 4500 ram 04/02/2012
2 0 6500 radhe 11/11/2014
3 1 4500 gopal 04/02/2012
异常结果条件:
1)从组合 3 个表中选择具有唯一“id”的记录。
2)如果状态=1的同名记录的状态=1,则更新相应记录的字段“日期”,在3个表中的任何一个中的金额。
3)如果在组合 3 个具有相同“id”但其他字段不同(即相同 id 但不同名称、金额、日期)的表后有 2 条或多于 2 条记录,则将它们全部添加到最终结果中,但我附加了 1,11,111给他们。
预期的最终结果:
id status amount Name date
1 1 4500 ram 04/02/2012
2 0 2000 shyam 05/09/2013
21 0 8000 radheshyam 15/11/2013
211 0 6500 radhe 11/11/2014
3 1 4500 gopal 04/02/2012
4 1 1500 ghanshyam 18/10/2015
Sql 小提琴
CREATE TABLE Student1
(`id` int,`status` int,`amount` int , `Name` varchar(10), `date` varchar(55))
;
INSERT INTO Student1
(`id`,`status`,`amount`, `Name`, `date`)
VALUES
(1,0,4500, 'ram', '04/02/2012'),
(2,0,2000, 'shyam', '05/09/2013'),
(4,0,1500, 'ghanshyam', '08/11/2014')
;
CREATE TABLE Student2
(`id` int,`status` int,`amount` int , `Name` varchar(10), `date` varchar(55))
;
INSERT INTO Student2
(`id`,`status`,`amount`, `Name`, `date`)
VALUES
(3,0,4500, 'gopal', '04/02/2012'),
(2,0,8000, 'radheshyam', '15/11/2013'),
(4,1,1500, 'ghanshyam', '18/10/2015')
;
CREATE TABLE Student3
(`id` int,`status` int,`amount` int , `Name` varchar(10), `date` varchar(55))
;
INSERT INTO Student3
(`id`,`status`,`amount`, `Name`, `date`)
VALUES
(1,1,4500, 'ram', '04/02/2012'),
(2,0,6500, 'radhe', '11/11/2014'),
(3,1,4500, 'ghanshyam', '04/02/2012')
;
查询:
SELECT * FROM Student1
FULL OUTER JOIN Student2
ON Student1.Name = Student2.Name
错误:
check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUTER JOIN Student2 ON Student1.Name = Student2.Name' at line 2
【问题讨论】:
-
为什么三个表的列相同?您的数据设计似乎有问题。
-
真的。在这种情况下,UNION 就足够了。实际上,2 个 UNION。
-
这三个表都来自不同的来源。因此将所有三个组合在一起得到最终表,该表将作为更新表转移到所有来源
-
只需
UNION3张桌子。 -
但我必须检查所有 3 个条件