我查询之前删除:如何筛选SQL查询
SELECT *
FROM tvn_Listing
LEFT JOIN tvn_ListingOption ON (tvn_Listing.id = tvn_ListingOption.listings_id
AND tvn_ListingOption.options_id = 12)
如何删除空记录,当我离开的两个表? 我的查询返回的结果不是条件指定的。
我查询之前删除:如何筛选SQL查询
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 JOIN
编表tvn_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
为什么你不只是使用内部连接? –
+1“内部连接”通过消除复杂性提高了代码的清晰度 – Leo
当然,如果只涉及这两个表,那就是要走的路。但我怀疑有可能涉及其他表格,但这里的示例仅显示其中2个表格。 – TheVillageIdiot
注意,如果您添加NOT NULL条件会影响效果(如果options_id为空)
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)
谢谢,:)我解决了我的问题 – lecuong92
你的问题不明确。你能举出例子数据和输出吗? –
您是否尝试过“NOT NULL”? – 735Tesla