【问题标题】:How to select two values from table where one of the values has to be distinct in SQL Server如何从表中选择两个值,其中一个值在 SQL Server 中必须是不同的
【发布时间】:2014-07-12 10:59:40
【问题描述】:

我正在使用这个查询,我需要帮助来为我的场景重写它。

SELECT DISTINCT Sender 
FROM test_table 
WHERE ("Some condition").

从上面的查询中,我得到了不同发件人姓名的列表。

但我希望在下表中显示更多值

SELECT Sender_type, DISTINCT Sender 
FROM test_table 
WHERE ("Some condition").

此查询显示一些错误。所以我需要一个显示结果,其中发件人必须是不同的值以及相应发件人的发件人类型。

【问题讨论】:

  • 什么错误?如果您提及错误,请始终发布您收到的完整且准确的错误消息!我们看不到你的屏幕,也看不到你的想法!

标签: sql sql-server select


【解决方案1】:
SELECT DISTINCT Sender, Sender_type, FROM test_table WHERE ("Some condition") groupby sender

试试这个..

【讨论】:

  • 欢迎您..请标记为正确答案..谢谢
  • 为什么Sender 在括号中? DISTINCT 适用于整个选择列表。不是单独的列。
  • 也可以申请个别栏目。我工作中用过很多次。
  • 不,你不能。如果有两行 Sender=X, Sender_type=1Sender=X, Sender_type=2DISTINCT(Sender) as sender, Sender_type 将返回两行。不是一个。它怎么知道Sender_type 会在单行中返回?
  • 如果两行 sender=x ,sender_type=1 和 sender=x , sender_type=2 那么如果你写这个查询 SELECT DISTINCT sender,sender_type FROM test_table WHERE ("Some condition") 那么它也会给两行..
【解决方案2】:

您的语法错误,确实会引发错误。您应该将DISTINCT 放在您的SELECT 命令之后,如下所示,它将适用于整个选择:

SELECT DISTINCT  Sender_type, Sender FROM test_table WHERE ("Some condition").

Documentation here

【讨论】:

    【解决方案3】:

    要了解关键字“DISTINCT”的工作原理,您可以查看:http://databases.about.com/od/sql/a/Selecting-Distinct-Records-From-A-Table.htm

    尤其是部分:

    您还可以将 DISTINCT 关键字用于列组合。在这些情况下,了解关键字的行为很重要。该约束现在适用于列的组合,而不是单个列。 SQL 结果将是表中出现的那些列的所有唯一值组合。例如,考虑下面的 SQL 查询: enter code hereSELECT DISTINCT 品牌,汽车型号

    因此,您的查询变为:

    SELECT DISTINCT Sender_type, Sender FROM test_table WHERE ("Some condition")
    

    【讨论】:

      【解决方案4】:

      您只需要一个 GROUP BY 而不是 DISTINCT:

      SELECT MIN(Sender_type), Sender  -- or MAX
      FROM test_table 
      WHERE ("Some condition")
      GROUP BY Sender
      

      如果有多个 Sender_Types 你必须决定你想要的,MIN 或 MAX

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-30
        • 1970-01-01
        • 2015-02-02
        • 1970-01-01
        • 1970-01-01
        • 2017-01-26
        相关资源
        最近更新 更多