【问题标题】:SQL query which filters rows based on a duplicate value基于重复值过滤行的 SQL 查询
【发布时间】:2014-10-02 22:34:55
【问题描述】:

我有一个显示以下数据的 MS Access 查询。

我想写一些 SQL,执行时会显示以下结果。

我的规则如下,基于Field5

如果 Field5 'C' 中的值,则仅显示 1 行的任何其他值。

我开始使用子查询并使用 First 运算符,但因为我的表中的所有其他值都是唯一的,所以仍然会显示所有行。

这是我糟糕的尝试:

SELECT T.Field1, T.Field2, T.Field3, T.Field4, First(T.Field5) AS FirstOfField5
FROM Table1 as T
GROUP BY T.Field1, T.Field2, T.Field3, T.Field4
ORDER BY First(T.Field5);

任何帮助都会很棒。

【问题讨论】:

    标签: sql ms-access vba ms-access-2007


    【解决方案1】:

    如果我们假设field1 在每一行上都是唯一的,您可以这样做:

    SELECT T.Field1, T.Field2, T.Field3, T.Field4, T.Field5
    FROM Table1 as T JOIN
         (SELECT t.Field5, MIN(t.Field1) as Field1
          FROM table1
          GROUP BY t.Field5
         ) as tt
         ON tt.Field1 = t.Field1 or t.Field5 = 'C';
    

    如果您没有行的唯一标识符,这将更加困难。

    【讨论】:

    • 感谢您的帮助。我在我的数据库中使用了你的 SQL 子查询,稍微调整了一下,效果很好。
    猜你喜欢
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    相关资源
    最近更新 更多