我想在某些数据上进行SQL连接。简而言之,我有一个表格(例如items_tbl),用户可以在其中提交其他用户出价的项目,例如
itemUID, Details, Price, usernameOfSeller
在另一个表格(例如bid_tbl)中,我会收集出价
itemUID, usernameOfSeller, usernameofBuyer, offerPrice
我希望做的是向买家展示他们未竞标的每件商品。 Procueduraly它将是:
SELECT itemUID FROM bid_tbl WHERE usernameofBuyer = 'John'; //All the itemUID's John has bid on
使用此数据集,从另一个表中选择他没有出价的所有项目:
SELECT itemUID FROM items_db WHERE itemUID <> [data from bid_tbl above]
我以前做过'加入'但从未有条件做过。谢谢!
基本数据概述
示例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
答案 0 :(得分:1)
一种方法是使用带有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