我有一个查询,其中我基于值列表从sql服务器中获取结果。现在,我可以通过两种方式做到这一点:
第一种方法的问题是,由于列表中有17000多个值,因此花费了太多时间。第二种方法的问题在于,由于我用于比较的列不是唯一的,因此它会返回重复项。但这大大减少了执行时间。
查询内容如下:
'''SELECT *
FROM dbo.my_table
where AccountID IN {}
ORDER BY dummy_column DESC'''.format(values)
如何使用第二种方法删除那些重复项?还是有更好的方法呢?
答案 0 :(得分:0)
样本数据和所需结果会有所帮助。但是您可以使用row_number()
做您想做的事。这是一个不使用子查询的简单方法:
SELECT TOP (1) WITH TIES t.*
FROM dbo.my_table t
WHERE AccountID IN {}
ORDER BY ROW_NUMBER() OVER (PARTITION BY AccountId ORDER BY dummy_column DESC);
注意:这不会以任何特定方式对结果进行排序。尚不清楚这实际上是否是必需的(假设第一种方法没有这种排序)。