返回重复结果的SQL查询

返回重复结果的SQL查询,sql,mysql,duplicates,Sql,Mysql,Duplicates,我已经解决这个问题有一段时间了,我想我已经在我想要的地方找到了它,但显然没有 数据库中有两条记录(订单)。查询应该返回两个不同的行,但返回两个值完全相同的行。我想这可能与我正在使用的GROUP BY或派生表有关,但我的眼睛很累,看不到问题所在。你们谁能帮忙?提前谢谢 SELECT orders.billerID, orders.invoiceDate, orders.txnID, orders.bName, orders.bStreet1, or

我已经解决这个问题有一段时间了,我想我已经在我想要的地方找到了它,但显然没有

数据库中有两条记录(订单)。查询应该返回两个不同的行,但返回两个值完全相同的行。我想这可能与我正在使用的GROUP BY或派生表有关,但我的眼睛很累,看不到问题所在。你们谁能帮忙?提前谢谢

SELECT orders.billerID, 
    orders.invoiceDate, 
    orders.txnID, 
    orders.bName, 
    orders.bStreet1, 
    orders.bStreet2, 
    orders.bCity, 
    orders.bState, 
    orders.bZip, 
    orders.bCountry, 
    orders.sName, 
    orders.sStreet1, 
    orders.sStreet2, 
    orders.sCity, 
    orders.sState, 
    orders.sZip, 
    orders.sCountry, 
    orders.paymentType, 
    orders.invoiceNotes, 
    orders.pFee, 
    orders.shipping, 
    orders.tax, 
    orders.reasonCode, 
    orders.txnType, 
    orders.customerID, 
    customers.firstName AS firstName, 
    customers.lastName AS lastName, 
    customers.businessName AS businessName, 
    orderStatus.statusName AS orderStatus, 
    IFNULL(orderItems.itemTotal, 0.00) + orders.shipping + orders.tax AS orderTotal, 
    IFNULL(orderItems.itemTotal, 0.00) + orders.shipping + orders.tax - IFNULL(payments.totalPayments, 0.00) AS orderBalance 
FROM orders 
LEFT JOIN customers ON orders.customerID = customers.id 
LEFT JOIN orderStatus ON orders.orderStatus = orderStatus.id
LEFT JOIN 
    ( 
      SELECT orderItems.orderID, SUM(orderItems.itemPrice * orderItems.itemQuantity) as itemTotal
      FROM orderItems
      GROUP BY orderItems.orderID
    ) orderItems ON orderItems.orderID = orders.id 
LEFT JOIN 
    ( 
      SELECT payments.orderID, SUM(payments.amount) as totalPayments
      FROM payments
      GROUP BY payments.orderID
    ) payments ON payments.orderID = orders.id

当我遇到这个问题时,我会开始一次注释一个连接(以及相关的选定列),直到我找到导致问题的有问题的连接。

通常情况下,当您在多个表上进行连接并最终得到重复的行时,这是因为您看不到整个图片。如果要执行“选择*”以查看查询中包含的所有列(而不是返回列的子集)并比较结果行,您会发现在某个地方有一列包含不同的数据。

我不熟悉
IFNULL
关键字。如果这不是输入错误(
ISNULL
?),则应使用正确的平台对此进行标记。尝试逐个删除连接,直到获得所需的单行。最后一个被删除的是罪魁祸首。IFNULL是MySQL中的ISNULL等价物