mysql中的sql行重复

fcg9iug3  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(301)

mysql查询:

SELECT 
 customer.full_name, 
 transaction.transaction_amount, 
 transaction.id, 
 merchant.shop_name 
FROM 
 customers customer, 
 customers_transaction_details transaction, 
 users merchant 
WHERE 
 transaction.merchant_id = 1 AND transaction.customer_id = customer.id

我正试着把三张table连起来 customers , customers_transaction_details 以及 users . customers_transaction_details 由两个外键组成: customer_id 从客户表和 merchant_id 从用户表。
基于上述查询的结果:

右边应该只有4条记录。前4条记录是正确的,但有121131141和151的重复,没有店名。我怎样才能解决这个问题?

axzmvihb

axzmvihb1#

这将解决它:

WHERE 
  transaction.merchant_id = merchant.id AND transaction.customer_id = customer.id AND merchant.id = 1

它只需要一个条件来Map transaction 以及 users table。设置 transaction.merchant_id=1 光靠自己是不够的,因为 users table没有限制。
但别那么做!
该查询中的连接语法已经过时,并且已经过时20多年了。像这样写你的连接:

SELECT 
    customer.full_name, 
    transaction.transaction_amount, 
    transaction.id, 
    merchant.shop_name 
FROM customers customer 
INNER JOIN customers_transaction_details transaction ON transaction.customer_id = customer.id
INNER JOIN users merchant ON transaction.merchant_id = merchant.id
WHERE transaction.merchant_id = 1 AND

相关问题