在MYSQL中重复行

时间:2018-06-01 01:23:00

标签: mysql sql

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

我正在尝试加入由customerscustomers_transaction_detailsusers组成的三个表格。

customers_transaction_details包含两个外键:来自customers表的customer_id和来自users表的merchant_id

基于上述查询的结果:

enter image description here

右边应该只有4条记录。前4个记录是正确的,但重复的是121,131,141和151没有商店名称。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这将解决它:

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

只需要一个条件来映射transactionusers表。单独设置transaction.merchant_id=1是不够的,因为users表保持无限制。

但不要那样做!

该查询中的连接语法已过时,并且已经超过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