0

我在两个不同的数据库上有两个表。

如果表 ft_form_8 中不存在这些值,我希望从表 mlsdata 中选择字段 MLS_LISTING_ID 中的值。

mlsdata 表共有 5 条记录。ft_form_8 表中有 2 条匹配记录。

运行此查询,我从 mlsdata 收到所有 5 条记录,而不是 3 条。

将 NOT IN 更改为 IN,我得到两个表中的 2 个匹配记录。

有任何想法吗?

SELECT DISTINCT
    flrhost_mls.mlsdata.MLS_LISTING_ID
FROM
    flrhost_mls.mlsdata
        INNER JOIN
    flrhost_forms.ft_form_8 ON flrhost_mls.mlsdata.MLS_AGENT_ID = flrhost_forms.ft_form_8.nar_id
WHERE
    flrhost_mls.mlsdata.MLS_LISTING_ID NOT IN ((SELECT flrhost_forms.ft_form_8.mls_id))
        AND flrhost_mls.mlsdata.MLS_AGENT_ID = '260014126'
        AND flrhost_forms.ft_form_8.transaction_type = 'listing' 
4

3 回答 3

2

你的问题:

如果表 ft_form_8 中不存在这些值,我希望从表 mlsdata 中选择字段 MLS_LISTING_ID 中的值。

是经典的 OUTER JOIN 问题

SELECT DISTINCT
  flrhost_mls.mlsdata.MLS_LISTING_ID, flrhost_forms.ft_form_8.MLS_LISTING_ID
 FROM 
   flrhost_mls.mlsdata
 LEFT OUTER JOIN
   flrhost_forms.ft_form_8
 ON
   flrhost_mls.mlsdata.MLS_LISTING_ID=flrhost_forms.ft_form_8.MLS_LISTING_ID
 WHERE
   flrhost_forms.ft_form_8.MLS_LISTING_ID IS NULL;

这比使用一些复杂的子查询嵌套要简单得多。

于 2013-05-23T21:39:27.480 回答
1
SELECT DISTINCT
    flrhost_mls.mlsdata.MLS_LISTING_ID
FROM
    flrhost_mls.mlsdata
where
    flrhost_mls.mlsdata.MLS_LISTING_ID NOT IN (SELECT 
            flrhost_forms.ft_form_8.mls_id
        FROM
            flrhost_forms.ft_form_8)
于 2013-05-23T15:52:24.867 回答
0
SELECT DISTINCT
  flrhost_mls.mlsdata.MLS_LISTING_ID
FROM flrhost_mls.mlsdata
INNER JOIN flrhost_forms.ft_form_8 
ON flrhost_mls.mlsdata.MLS_AGENT_ID = flrhost_forms.ft_form_8.nar_id  
WHERE flrhost_mls.mlsdata.MLS_AGENT_ID = '260014126'
  AND flrhost_forms.ft_form_8.transaction_type = 'listing' 
  AND flrhost_mls.mlsdata.MLS_LISTING_ID NOT IN (SELECT b.mls_id FROM flrhost_forms.ft_form_8 b)
于 2013-05-23T16:05:23.863 回答