【问题标题】:Nesting SQL queries嵌套 SQL 查询
【发布时间】:2018-04-27 19:57:21
【问题描述】:

我有以下 SQL 查询。在此查询中,我将加入一个表 tblTestImport,并使用名为“unique”的访问查询。我正在尝试将查询“唯一”集成到下面的代码中。我运气不好,请帮忙。

DELETE tblTestImport.ID
FROM tblTestImport
WHERE tblTestImport.[ID]

in (SELECT tblTestImport.ID
FROM tblTestImport 
LEFT JOIN **[unique]**

ON tblTestImport.ID = **unique.**LastOfID

WHERE (((**unique.**LastOfID) Is Null)));

“唯一”查询代码

SELECT Last(tblTestImport.ID) AS LastOfID
FROM tblTestImport
GROUP BY tblTestImport.Url, tblTestImport.Kms, tblTestImport.Price, tblTestImport.Time;

更多信息:我正在尝试从访问表中删除重复项,并仅保留唯一项。 tblTestImport 有重复记录。 “唯一”查询显示唯一记录。然后,我使用“唯一”查询加入 tblTestImport 表,以确定 tblTestImport 中不存在哪些唯一记录。这给了我一个重复的列表,我想删除它。

在一大段代码中,我有 [unique],我想用下面的一小段代码替换它。

【问题讨论】:

  • 样本数据和期望的结果真的很有帮助。
  • 已编辑以包含更多细节。谢谢

标签: sql ms-access join


【解决方案1】:

假设id 永远不是NULL,您的查询将不会返回任何结果。

为什么?那么unique.lastOfId 始终是tblTestImport 中的有效ID。因此,LEFT JOIN 将始终匹配,lastOfId 永远不会是 NULL

因此,子查询中没有行。

我的建议是你再问一个问题。说明您想要做什么并提供示例数据和期望的结果。

【讨论】:

    【解决方案2】:

    根据您问题的当前设置,很难准确判断您的目标是什么。但是,这可能是您正在寻找的:

    DELETE tblTestImport.ID
    FROM tblTestImport
    WHERE tblTestImport.[ID] IN
        (SELECT tblTestImport.ID
        FROM tblTestImport 
        LEFT JOIN [unique] ON tblTestImport.ID = unique.LastOfID
        WHERE unique.LastOfID Is Null
        AND tblTestImport.ID IN (
            SELECT Last(tblTestImport.ID) AS LastOfID
            FROM tblTestImport
            GROUP BY tblTestImport.Url, tblTestImport.Kms, tblTestImport.Price, tblTestImport.Time)
        )
    

    (这是上一个查询中的一个简单的嵌套查询,但它都依赖于数据本身的关系。这个查询假设它们链接在同一个 tblTestImport.ID 字段上)

    【讨论】:

      【解决方案3】:

      尝试以下,未经测试:

      DELETE FROM tblTestImport
      WHERE ID <>  (SELECT Min(ID) AS MinOfID FROM tblTestImport AS Dupe      
         WHERE (Dupe.Url= tblTestImport.Url)                         
         AND (Dupe.Kms= tblTestImport.Kms)
         AND (Dupe.Price= tblTestImport.Price)
         AND (Dupe.Time= tblTestImport.Time)); 
      

      基于以下http://allenbrowne.com/subquery-01.html的解决方案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-24
        相关资源
        最近更新 更多