0

注意:我正在使用 SQLAlchemy,但我选择将我的想法转化为常规 SQL,以便更多人可以回答/阅读这个问题。

我正在尝试选择表中不在过滤器中的所有条目。我通过将 user_id 与 table_id 关联来获取过滤器。我目前有一个使用的工作实现,

select * from cleared_table where user_id=user_id

然后我构造第二个选择语句说,

select * from table where table_id != first_id and table_id != second_id ....

我正在寻找一种方法将其压缩为单个 SQL 语句,而不必两次访问数据库。

例如cleared_table,

cleared_table
user_id | table_id
1       |        1
1       |        2
1       |        3
2       |        2
3       |        3
4

2 回答 2

1

您正在寻找嵌套查询。

select * from table where table_id not in (select table_id from cleared_table where user_id=user_id)
于 2013-09-11T23:11:36.157 回答
1

您可以使用NOT IN和子查询:

select 
    * 
from 
    table
where 
    table_id not in (select 
                         table_id 
                     from 
                         cleared_table where user_id=user_id)
于 2013-09-11T23:09:41.853 回答