首页 > 解决方案 > SQL Join 选择两个表的特征

问题描述

我想做一个查询,选择 best_offers 的商品,其中卖家的密码为“abc”。以下查询有效,但它也选择了卖家的特征:

SELECT * FROM best_offers INNER JOIN seller ON best_offers.seller_id = seller.username
WHERE seller.pw='abc'

这是查询的结果:

![2]: https://i.stack.imgur.com/rPrOB.jpg

但是,我在其他表上尝试了几乎相同的查询并且它有效:它只选择购物车的特征:

SELECT * FROM buy_it_now INNER JOIN cart ON buy_it_now.id = cart.item_id
WHERE cart.buyer_id = 'kimpaille'

这是有效查询的结果:

![1]: https://i.stack.imgur.com/TMhTE.jpg

标签: sqljoin

解决方案


如果您只想要优惠,您将使用:

SELECT bo.*
FROM best_offers bo INNER JOIN
     seller s
     ON bo.seller_id = s.username
WHERE s.pw = 'abc';

只选择您需要的列。更远:

  • 等同seller_idusername看起来是错误的。通常“id”与“name”不同。
  • 密码不应存储为明文。曾经。人们倾向于在不同的系统中重复使用密码,因此看到别人的密码是一个巨大的安全风险。
  • 表别名使查询更易于编写和阅读。

推荐阅读