当前位置: 首页 > 面试题库 >

如何(或可以)在多列上选择DISTINCT?

谢灵均
2023-03-14
问题内容

我需要从合并了2列的表中检索所有行。因此,我希望所有在同一天以相同价格进行的销售都没有其他任何销售。基于日期和价格的唯一销售将更新为活动状态。

所以我在想:

UPDATE sales
SET status = 'ACTIVE'
WHERE id IN (SELECT DISTINCT (saleprice, saledate), id, count(id)
             FROM sales
             HAVING count = 1)

但是我的大脑比这更痛。


问题答案:
SELECT DISTINCT a,b,c FROM t

大致 等效于:

SELECT a,b,c FROM t GROUP BY a,b,c

习惯GROUP BY语法是一个好主意,因为它更强大。

对于您的查询,我会这样做:

UPDATE sales
SET status='ACTIVE'
WHERE id IN
(
    SELECT id
    FROM sales S
    INNER JOIN
    (
        SELECT saleprice, saledate
        FROM sales
        GROUP BY saleprice, saledate
        HAVING COUNT(*) = 1 
    ) T
    ON S.saleprice=T.saleprice AND s.saledate=T.saledate
 )


 类似资料:
  • 问题内容: 等待(不旋转)直到两个(多处理)队列中的任何一个都可用的最佳方法是什么(两者都驻留在同一系统上)? 问题答案: 似乎还没有一种正式的方式来解决这个问题。或至少不是基于此: http://bugs.python.org/issue3831 您可以尝试类似本文所进行的操作-访问基础管道文件句柄: http://haltcondition.net/?p=2319 然后使用选择。

  • 我有一个Facelets页面,其中包含

  • 问题内容: 如何选择多列的平均值? 假设我有一些数据,例如: 我想得到像 我试过了 但这是行不通的。 有关查询的任何想法可以做到这一点? 问题答案: 尝试 或者

  • 问题内容: 我正在尝试编写一个查询,该查询从GPSReport表返回每个唯一设备的最新GPS位置。表中有50个设备,所以我只希望返回50行。 这是我到目前为止(无法正常工作) 这将返回50行,但不会为每个device_serial返回唯一的行。它返回第一个设备的所有报告,然后返回第二个设备的所有报告,依此类推。 我要在一个查询中执行的操作是否可行? 问题答案:

  • 问题内容: 我想选择,,从多个选择其中有10个选项。我只想选择这三个选项。 HTML代码: selenium键代码: 我尝试使用此代码。使用此代码,我可以选择第一个选项,即“ P0_ENGLISH”。但是,选择第一个选项后,我得到一个错误: 问题答案: 要从 Multi Select 元素中选择多个 选项 ,可以使用 ActionChains 模拟 Control单击* ,如下所示: *

  • 问题内容: 是否可以选择除一列之外的所有列? 这是所有列名称:ID,名称,地址,年龄 我不想使用此select语句,因为我的表的列数彼此不同。 问题答案: declare @cols varchar(max), @sql varchar(max) SELECT @cols = STUFF ( ( SELECT DISTINCT ‘], [‘ + name FROM sys.columns wher