如何在筛选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)