【问题标题】:MySQL select records from one table that don't exist in another table [duplicate]MySQL从一个表中选择另一个表中不存在的记录[重复]
【发布时间】:2013-05-19 01:47:24
【问题描述】:

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

如果表 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' 

【问题讨论】:

    标签: mysql sql select


    【解决方案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)
    

    【讨论】:

      【解决方案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_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)
      

      【讨论】:

      • 完美运行!谢谢!
      【解决方案3】:

      你的问题:

      如果表 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;
      

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

      【讨论】:

        猜你喜欢
        • 2012-10-29
        • 2015-08-27
        • 2020-06-10
        • 2022-01-21
        • 2016-06-21
        • 2022-11-13
        • 1970-01-01
        • 1970-01-01
        • 2016-02-29
        相关资源
        最近更新 更多