Mysql查询不起作用,但我无法猜到为什么

时间:2014-09-12 09:47:14

标签: mysql

Hello Friends我有两个表,一个是customer,另一个是new_party_estimate。但我的以下查询无效。请帮我解决这个问题。

SELECT 
  acc_name,
  customer_id 
FROM
  customers 
WHERE STATUS = 'e' 
AND acc_name NOT IN (
  SELECT DISTINCT 
    customer 
  FROM
    new_party_estimate 
  WHERE closed = '0' 
  AND (
    customer_alt = '' 
    OR customer_alt IS NULL
  )
) 
ORDER BY acc_name 

我正在单独运行子查询,它正在给出输出。但是当我立即运行完整查询时,mysql显示空结果。请告诉我们会出现什么问题!

Customers以下记录很少。

acc_name                      customer_id
CAMPUS FASHION_khyati         CAM-11
PAPPU SUIT HOUSE              PAPAAR5
R K FASHION                   R KAAR6
SELECTION MENS WEAR           SELAAR7

new_party_estimate以下记录很少。

    customer
    LOVELY DRESSES
    ASHIRWAD GARMENTS
    AKASH DEEP
    ABDUL LATIF READYMADE SALE

2 个答案:

答案 0 :(得分:0)

在查询中没有明显的东西,尽管IN效率低(使用EXISTS效率更高)。

另一种选择是做LEFT JOIN但只返回没有匹配的记录: -

SELECT acc_name,
        customer_id 
FROM customers 
LEFT OUTER JOIN new_party_estimate
ON customers.acc_name = new_party_estimate.customer
AND closed = '0' 
AND (customer_alt = '' 
OR customer_alt IS NULL)
WHERE new_party_estimate.customer IS NULL
AND STATUS = 'e' 
ORDER BY acc_name 

答案 1 :(得分:0)

我得到了这个问题的答案,但我不确定为什么会这样。

在运行此查询时,如果new_party_estimate表中的所有值都等于null,则此查询不起作用。