除了命令或代码之外,是否只有列存在模拟量?既然减号/除命令对行很好,那么列呢?
掩码表(实际存在):
id col1 col2 col3 col4 ... colN comment
doesn't A B C D ... Z --alphabet correct sequence
matter列数据类型的coli是相等的。
传入select流(不是物理表,但由于其他表的复杂连接而表示为表):
col1 col2 col3 col4 ... colN comment
A B C D ... Z --alphabet correct seq
A C B D ... Z --incorrect
E B C M ... Z --incorrect
...
Z Y X W ... A --full inverse icorrect在处理掩码表以选择-stream作为插入结果后,对物理表的预期输出:
id col1 col2 col3 col4 ... colN
(auto-
gnrtd)
(null)(null)(null)(null)...(null)
(null) C B (null)...(null)
E (null)(null) M ...(null)
...
Z Y X W ... A请注意:字母表是作为例子给出的。不是问题-这里的案子。SQL-逻辑/命令所需。类似的减/除,但列(不同?)如果传入的select流是其他复杂的连接-select()的结果
这个任务的SQL代码是什么?求你了,建议。
发布于 2019-10-09 10:08:53
另一种不用案例陈述的方法:
设置
CREATE TABLE mask (
col1 TEXT,
col2 TEXT,
col3 TEXT,
col4 TEXT,
col5 TEXT
);
INSERT INTO mask SELECT 'A', 'B', 'C', 'D', 'E';
CREATE TABLE your_stream (
col1 TEXT,
col2 TEXT,
col3 TEXT,
col4 TEXT,
col5 TEXT
);
INSERT INTO your_stream
VALUES
('A', 'B', 'C', 'D', 'E'),
('A', 'C', 'B', 'D', 'E'),
('E', 'B', 'C', 'M', 'E');查询
SELECT
NULLIF(s.col1, m.col1) AS col1,
NULLIF(s.col2, m.col2) AS col2,
NULLIF(s.col3, m.col3) AS col3,
NULLIF(s.col4, m.col4) AS col4,
NULLIF(s.col5, m.col5) AS col5
FROM your_stream s
CROSS JOIN mask m;结果
| col1 | col2 | col3 | col4 | col5 |
| ---- | ---- | ---- | ---- | ---- |
| null | null | null | null | null |
| null | C | B | null | null |
| E | null | null | M | null |发布于 2019-10-09 10:06:03
我看不出到像EXCEPT这样的set操作的连接是什么。
不管怎么说,你可以这么做:
INSERT INTO destination (col1, col2, col3, ...)
SELECT CASE WHEN incoming_col1 <> mask.col1
THEN incoming_col1
END,
CASE WHEN incoming_col2 <> mask.col2
THEN incoming_col2
END,
...
FROM mask;https://stackoverflow.com/questions/58300436
复制相似问题