从两个表SQL中按列排序

时间:2017-01-12 19:03:45

标签: mysql sql mysqli

我有两个表产品和相同的产品

products
---------------------
id    pro_title      price       seller

sameProducts
----------------------
id    pro_id      price       seller

pro_id与产品表中的ID相同 - id。

如果产品是现有产品,卖方会插入产品,然后在同一产品表中输入详细信息,但如果是新产品,则在产品表中输入。我想根据同一个pro_id的两个表中的最低价格获得卖家名称。

3 个答案:

答案 0 :(得分:0)

select seller from(
  select `id`, price, seller from products
  where id = :id
  union
  select pro_id as `id`, price, seller from sameProducts
  where pro_id = :id
) order by price asc limit 1

将从任一表中具有给定ID的价格最低的行返回卖家名称。

但是,假设每个表中给定id的名称相同,那么它就不会出现这种情况。真的有意义寻找价格最低的那个,因为它们都有相同的名称。但是你问这个问题就在这里。

答案 1 :(得分:0)

select pro_title , seller,MIN(price) from(
  select * from products
  union
  select products.id as id,pro_title,products.price as price, products.seller as seller from products LEFT JOIN sameProducts where id = pro_id 
) GROUP BY pro_title

答案 2 :(得分:0)

我想你想用CASE做这件事:

SELECT p.id,
CASE WHEN (p.price < sp.price OR sp.price IS NULL) THEN p.seller ELSE sp.seller END AS slr
FROM products p
LEFT JOIN sameproducts sp ON p.id = sp.pro_id