admin

WHERE col1,col2 IN(')[使用复合主键的SQL子查询]

sql

给定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一起使用的答案感兴趣。


阅读 319

收藏
2021-05-10

共1个答案

admin

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 ... many tuples of a/b values ...并用它代替bar..

2021-05-10