# 可能插入重复数据的 SQL 语句
解决方法:
- REPLACE
- INSERT ... ON DUPLICATE KEY
REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [PARTITION (partition_name,...)] [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [PARTITION (partition_name,...)] SET col_name={expr | DEFAULT}, ... REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [PARTITION (partition_name,...)] [(col_name,...)] SELECT ...
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name,...)] [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr [, col_name=expr] ... ] INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name,...)] SET col_name={expr | DEFAULT}, ... [ ON DUPLICATE KEY UPDATE col_name=expr [, col_name=expr] ... ] INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name,...)] [(col_name,...)] SELECT ... [ ON DUPLICATE KEY UPDATE col_name=expr [, col_name=expr] ... ]
Reference:
https://dev.mysql.com/doc/refman/5.7/en/replace.html REPLACE Syntax
https://dev.mysql.com/doc/refman/5.7/en/insert.html INSERT Syntax
# FULL OUTER JOIN
MySQL 不支持 FULL OUTER JOIN。
解决方法:
左连接 + 右连接。
select * from A LEFT JOIN B on A.id = B.id union select *from A RIGHT JOIN B on A.id = B.id;
Reference:
http://www.cnblogs.com/liuyifan/p/4985512.html