如何在筛选SQL查询之前删除

如何在筛选SQL查询之前删除,sql,Sql,我的问题是: SELECT * FROM tvn_Listing LEFT JOIN tvn_ListingOption ON (tvn_Listing.id = tvn_ListingOption.listings_id AND tvn_ListingOption.options_id = 12) 当我离开连接两个表时,如何删除空记录? 我的查询返回的结果不是条件指定的结果。如果我正确理解了您的问题,则问题是: 您可以从t

我的问题是:

SELECT * 
FROM tvn_Listing 
LEFT JOIN tvn_ListingOption ON (tvn_Listing.id = tvn_ListingOption.listings_id 
                                AND tvn_ListingOption.options_id = 12)
当我离开连接两个表时,如何删除空记录?
我的查询返回的结果不是条件指定的结果。

如果我正确理解了您的问题,则问题是:

您可以从
tvn\u列表
表中获取记录,这些记录具有
NULL
值,这些值来自
LEFT JOIN
ed表
tvn\u列表选项
。您可以在
tvn\u列表选项中检查空值,如:

SELECT * 
FROM tvn_Listing 
LEFT JOIN tvn_ListingOption ON (tvn_Listing.id = tvn_ListingOption.listings_id 
                                AND tvn_ListingOption.options_id = 12)
WHERE tvn_ListingOption.Id IS NOT NULL

请注意,如果添加NOTNULL条件,则会影响结果(如果options\U id可为空)


你的问题不清楚。您能给出示例数据和输出吗?您是否尝试过
notnull
?为什么不使用内部联接?+1如果只涉及这两个表,则
内部联接可以通过消除复杂性来提高代码的清晰度。但我怀疑可能还有其他表格,但这里的示例只显示了其中的两个。
test=# select * from tvn_Listing;
 id | nm 
----+----
  1 | A
  2 | B
(2 rows)

test=# select * from tvn_listingoption ;
 id | op 
----+----
  1 | A
  3 | B
    | D
(3 rows)

test=# select * from tvn_listing left join tvn_listingoption on tvn_listing.id=tvn_listingoption.id;
 id | nm | id | op 
----+----+----+----
  1 | A  |  1 | A
  2 | B  |    | 
(2 rows)

test=# select * from tvn_listing left join tvn_listingoption on tvn_listing.id=tvn_listingoption.id and tvn_listingoption.id is not null ;
 id | nm | id | op 
----+----+----+----
  1 | A  |  1 | A
  2 | B  |    | 
(2 rows)

test=# select * from tvn_listing left join tvn_listingoption on tvn_listing.id=tvn_listingoption.id where  tvn_listingoption.id is not null ;
 id | nm | id | op 
----+----+----+----
  1 | A  |  1 | A
(1 row)