次の表を考慮してください。
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
) キーペアごとに 1 つのレコードのみ- テーブルに( , ) キーペアのレコードが複数ある場合は、
ccc
= 1 のレコードを優先するaaa
bbb
したがって、2 つのクエリの結果セットを連結する必要があると思います。
SELECT * FROM `foo` WHERE `ccc` = 1
と
SELECT * FROM `foo` WHERE `ccc` = 0
aaa
最初のクエリ結果に同じ ( , bbb
) キーペア行が既にある場合、2 番目のクエリ結果行を破棄します。
SQLite でコーディングする方法は?