SQL - 条件连接

时间:2015-03-08 12:31:14

标签: mysql sql conditional-statements

我想在某些数据上进行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

1 个答案:

答案 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