簡體   English   中英

如何在過濾SQL查詢之前刪除

[英]How To Remove Before Filter SQL QUERY

我的查詢:

SELECT * 
FROM tvn_Listing 
LEFT JOIN tvn_ListingOption ON (tvn_Listing.id = tvn_ListingOption.listings_id 
                                AND tvn_ListingOption.options_id = 12)

當我離開聯接兩個表時如何刪除空記錄? 我的查詢返回的結果不是條件指定的結果。

如果我正確理解了您的問題,那么問題是:

您可以從tvn_Listing表中獲取記錄,這些記錄的LEFT JOINtvn_ListingOption值為NULL 好了,您可以在tvn_ListingOption表中檢查空值,例如:

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

請注意,在其中添加NOT NULL條件將影響結果(如果options_id為NULLABLE)

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM