给定foo具有复合主键的表(a,b),是否存在用于编写查询的合法语法,例如:
foo
(a,b)
SELECT ... FROM foo WHERE a,b IN (SELECT ...many tuples of a/b values...); UPDATE foo SET ... WHERE a,b IN (SELECT ...many tuples of a/b values...);
如果这是不可能的,并且您无法修改架构,那么如何执行上述等效操作?
我还将在此处使用术语“复合主键”,“子选择”,“子选择”和“子查询”,以表示这些别名的搜索结果。
编辑 :我对标准SQL的答案以及将与PostgreSQL和SQLite 3一起使用的答案感兴趣。
sqlite> create table foo (a,b,c); sqlite> create table bar (x,y); sqlite> select * from foo where exists (select 1 from bar where foo.a = bar.x and foo.b = bar.y);
更换select 1 from bar你的select ... many tuples of a/b values ...。
select 1 from bar
select ... many tuples of a/b values ...
或创建您的临时表select ... many tuples of a/b values ...并用它代替bar..
bar