考虑下表:
CREATE TABLE `foo`(
`aaa` VARCHAR(45) NOT NULL,
`bbb` VARCHAR(45) NOT NULL,
`ccc` INT NOT NULL,
`ddd` INT NOT NULL,
PRIMARY KEY(`aaa`, `bbb`, `ccc`)
);
以下数据:
INSERT INTO `foo` (`aaa`, `bbb`, `ccc`, `ddd`)
VALUES
('qwe', 'rty', 0, 123),
('asd', 'fgh', 0, 456),
('asd', 'fgh', 1, 678);
将得到以下结果:
'qwe', 'rty', 0, 123
'asd', 'fgh', 1, 678
目标是得到
- 每个 (
aaa
,bbb
) 密钥对只有一条记录 - 如果表中 ( , ) 密钥对的
ccc
记录超过 1 条,则使用= 1 的记录aaa
bbb
所以我认为我需要连接 2 个查询的结果集:
SELECT * FROM `foo` WHERE `ccc` = 1
和
SELECT * FROM `foo` WHERE `ccc` = 0
当第一个查询结果中已经存在相同的 ( aaa
, bbb
) 密钥对行时,丢弃第二个查询结果行。
如何在 SQLite 中编写代码?