【问题标题】:Getting unique rows/values in SQL在 SQL 中获取唯一的行/值
【发布时间】:2009-10-12 13:43:46
【问题描述】:

在 SQL 中获取唯一的行/值。我有一些类似的数据

valueA  ValueB    ValueC

test    "Value1"  "Something"

test    "Value1"  "Something else"

test2   "Value1"  "Something else"

那么我想得到前两行,因为 valueC 不同,然后我也想要行 3.

但是说第 4 行是

test    "Value1"  "Something"

与第 1 行相同。我不想要该行。

我可以使用 select 语句或 where 或其他方式来执行此操作吗?

在我的模式中,ValueA 在一个表中,然后值 b 和 C 来自不同的表。 所以我正在做类似的事情

select * from table1,table2

这给了我 3 个值。

但我不想要重复的值。

【问题讨论】:

    标签: sql sql-server select


    【解决方案1】:
    SELECT DISTINCT * FROM Table1, Table2
    

    会做你想做的。

    但是,您的 SELECT 语句不包含告诉系统如何将行连接在一起的条件。因此,您将得到一个笛卡尔积,其中包含的行数等于 Table1 中的行数乘以 Table2 中的行数。这通常不是你想要的(偶尔是这样)。

    所以你可能想要这样的东西:

    SELECT DISTINCT * FROM Table1, Table2 WHERE Table1.SomeColumn = Table2.SomeColumn
    

    或者,用更流行的 SQL 方言:

    SELECT DISTINCT * FROM Table1 INNER JOIN Table2 ON Table1.SomeColumn = Table2.SomeColumn
    

    【讨论】:

    • 这可能是最好的答案。我想我还有一些我的问题中没有的其他数据点。但根据我所写的问题,这是一个很好的答案。
    【解决方案2】:

    从 table1、table2 中选择 Distinct *

    【讨论】:

      【解决方案3】:

      您可能想查看以下 SQL 参考:

      • 独特
      • 不同
      • 分组方式

      【讨论】:

        【解决方案4】:
        SELECT DISTINCT *
        FROM table1, table2
        

        【讨论】:

          【解决方案5】:

          使用SELECT DISTINCT ?

          如:

          SELECT DISTINCT value1, value2, value3 FROM table1, table2
          

          【讨论】:

          • 我查看了不同的内容,例如“从 Table2 中选择不同的 ValueC”,但是如果您查看我的示例,则会忽略第 3 行,其中 ValueC 相同但 Value A 不同。
          • 啊,但是您需要将所有想要区分的列放在 SELECT 子句中 - 所以,不是 SELECT DISTINCT ValueC,而是 SELECT DISTINCT ValueA、ValueB、ValueC。
          【解决方案6】:

          这个怎么样?

          SELECT DISTINCT * FROM Table1, Table2
          

          【讨论】:

            【解决方案7】:

            试试这个:

            select a.valueA, b.valueB, b.valueC
            from table1 a join table2 b on <join condition>
            group by a.valueA, b.valueB, b.valueC;
            

            【讨论】:

              猜你喜欢
              • 2012-10-20
              • 2021-04-25
              • 2023-03-26
              • 1970-01-01
              • 2018-11-08
              • 1970-01-01
              • 1970-01-01
              • 2020-12-03
              • 1970-01-01
              相关资源
              最近更新 更多