ale*_*oot 6 mysql sql sql-server postgresql union
我有两个表,如下所示:
参数1
+------+-----+
| cod | des |
+------+-----+
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
Run Code Online (Sandbox Code Playgroud)
parameters2
+------+-----+
| cod | des |
+------+-----+
| 1 | mmm |
Run Code Online (Sandbox Code Playgroud)
我通常以这种方式用UNION加入这两个表的结果集:
SELECT cod, des
FROM parameters1
UNION
SELECT cod, des
FROM parameters2
Run Code Online (Sandbox Code Playgroud)
我得到这个结果集:
+------+-----+
| cod | des |
+------+-----+
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
| 1 | mmm |
Run Code Online (Sandbox Code Playgroud)
我想限制UNION重复检查只到cod列,所以我想避免1鳕鱼在结果集中重复(当有一个具有不同名称和相同鳕鱼的记录),我想从中获取名称第一个表(parameters1):
+------+-----+
| cod | des |
+------+-----+
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
Run Code Online (Sandbox Code Playgroud)
更新
如果我1从parameters1 table(DELETE FROM parameters1 WHERE cod = 1)中删除记录,我应该得到这个结果集:
+------+-----+
| cod | des |
+------+-----+
| 1 | mmm | ---> FROM parameters2
| 2 | bbb |
| 3 | ccc |
Run Code Online (Sandbox Code Playgroud)
是否可以将UNION的重复检查限制为仅一个字段或某些字段?怎么样 ?
该解决方案应该适用于多数据库环境(MSSQL,PostgreSQL,MySQL).
SELECT cod, des
FROM parameters1 p1
UNION ALL
SELECT cod, des
FROM parameters2 p2
WHERE NOT EXISTS (
SELECT 1
FROM parameters1 p1sub
WHERE p1sub.cod = p2.cod
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2453 次 |
| 最近记录: |