我有这张table:
CREATE TABLE Foo
(
id_key INTEGER PRIMARY KEY,
key1 INTEGER NOT NULL,
seq_num1 INTEGER NOT NULL,
key2 INTEGER,
seq_num2 INTEGER,
data BLOB NOT NULL
);
我想在key1
或key2
匹配时选择data
,这很简单:
SELECT data
FROM Foo
WHERE (key1 = ? OR key2 = ?)
但是我想根据表中的行key1
或key2
中匹配的内容,按seq_num1
或seq_num2
对该查询的结果进行排序。
我认为这样的事情应该行得通:
SELECT data
FROM Foo
WHERE (key1 = ? OR key2 = ?)
ORDER BY
CASE
WHEN key1 = ?
THEN seq_num1
ELSE seq_num2
END
但是我不确定这是不是最优的解决方案,因为在这个查询中我比较了key1
两次,而比较一次就足够了。
我使用sqlite3。
1条答案
按热度按时间yshpjwxd1#
这可能是你想要的吗?我不使用sqlite,但这个mysql命令似乎可以被sqlite理解。