SQL - 条件加入
SQL - Conditional Join
我想对一些数据进行 SQL 连接。简而言之,我有一个 table(例如 items_tbl),用户可以在其中提交项目供其他用户竞标,例如
itemUID, Details, Price, usernameOfSeller
在另一个 table(例如 bid_tbl)中,我收集出价
itemUID, usernameOfSeller, usernameofBuyer, offerPrice
我想做的是向买家展示他们没有出价的每件商品。程序上它将是:
SELECT itemUID FROM bid_tbl WHERE usernameofBuyer = 'John'; //All the itemUID's John has bid on
并且使用这个数据集,select 他没有从另一个 table 出价的所有项目:
SELECT itemUID FROM items_db WHERE itemUID <> [data from bid_tbl above]
我以前做过 'joining' 但从来没有有条件地这样做过。谢谢!
基础数据概览
样本items_tbl
1,Xbox,Sean,100
2,PS4,Mark,300
3,Xbox,Mark_b,500
样本bid_tbl
/* John has bid on UID 1 and 2 */
1, Sean, John, 100
2, Mark, John, 200
结果集:
/* John has not bid on itemUID 3 */
3
一种方法是使用带有 NOT IN
子句的子查询,以排除出价的项目:
SELECT itemUID FROM items_db
WHERE itemUID NOT IN
(SELECT itemUID FROM bid_tbl WHERE usernameofBuyer = 'John')
另一种方法是用户 LEFT JOIN
并过滤掉实际离开的项目:
SELECT i.itemUID
FROM items_db i LEFT JOIN bid_tbl b ON i.itemUID = b.itemUID AND b.usernameofBuyer = 'John'
WHERE b.itemUID IS NULL
我想对一些数据进行 SQL 连接。简而言之,我有一个 table(例如 items_tbl),用户可以在其中提交项目供其他用户竞标,例如
itemUID, Details, Price, usernameOfSeller
在另一个 table(例如 bid_tbl)中,我收集出价
itemUID, usernameOfSeller, usernameofBuyer, offerPrice
我想做的是向买家展示他们没有出价的每件商品。程序上它将是:
SELECT itemUID FROM bid_tbl WHERE usernameofBuyer = 'John'; //All the itemUID's John has bid on
并且使用这个数据集,select 他没有从另一个 table 出价的所有项目:
SELECT itemUID FROM items_db WHERE itemUID <> [data from bid_tbl above]
我以前做过 'joining' 但从来没有有条件地这样做过。谢谢!
基础数据概览
样本items_tbl
1,Xbox,Sean,100
2,PS4,Mark,300
3,Xbox,Mark_b,500
样本bid_tbl
/* John has bid on UID 1 and 2 */
1, Sean, John, 100
2, Mark, John, 200
结果集:
/* John has not bid on itemUID 3 */
3
一种方法是使用带有 NOT IN
子句的子查询,以排除出价的项目:
SELECT itemUID FROM items_db
WHERE itemUID NOT IN
(SELECT itemUID FROM bid_tbl WHERE usernameofBuyer = 'John')
另一种方法是用户 LEFT JOIN
并过滤掉实际离开的项目:
SELECT i.itemUID
FROM items_db i LEFT JOIN bid_tbl b ON i.itemUID = b.itemUID AND b.usernameofBuyer = 'John'
WHERE b.itemUID IS NULL