从表中选择*,其中id!= long_list

时间:2013-09-11 23:08:22

标签: mysql sqlalchemy

注意:我正在使用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
user_id | table_id
1       |        1
1       |        2
1       |        3
2       |        2
3       |        3

2 个答案:

答案 0 :(得分:1)

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

select 
    * 
from 
    table
where 
    table_id not in (select 
                         table_id 
                     from 
                         cleared_table where user_id=user_id)

答案 1 :(得分:1)

您正在寻找嵌套查询。

select * from table where table_id not in (select table_id from cleared_table where user_id=user_id)