我猜想标题中的查询看起来像这样:
select * from table t where (t.k1='apple' and t.k2='pie') or (t.k1='strawberry' and t.k2='shortcake')
... --10000 more key pairs here
在我看来,这很冗长。还有更好的选择吗? (当前使用SQLite,可能使用MYSQL/Oracle。)
最佳答案
例如,您可以在Oracle上使用它,我假设如果您使用常规的concatenate()而不是Oracle的||。在其他数据库上,它也可以工作(因为它只是与IN列表的字符串比较)。请注意,此类查询可能具有次优的执行计划。
SELECT *
FROM
TABLE t
WHERE
t.k1||','||t.k2 IN ('apple,pie',
'strawberry,shortcake' );
但是,如果您将值列表存储在其他表中,则Oracle也支持以下格式。
SELECT *
FROM
TABLE t
WHERE (t.k1,t.k2) IN ( SELECT x.k1, x.k2 FROM x );
关于sql - 一键选择多个记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20514371/