我想将表中的值抓取到同一表中不同值的两个不同列中。使用此查询作为示例(注意选择是如何在别名为 2 个不同表的同一个表上的):
SELECT a.myVal, b.myVal
FROM MyTable a, MyTable b
WHERE
a.otherVal = 100 AND
b.otherVal = 200 AND
a.id = b.id
Run Code Online (Sandbox Code Playgroud)
当我在我的数据集上运行这样一个相对简单的查询时,它可以工作 - 只是需要很长时间。有没有更好/更聪明的方式来编写这个查询?
dat*_*god 10
为了可读性,我将使用更现代的连接语法重写查询。这将清楚地将您的加入条件与您的过滤器分开。
select a.myVal,
b.myVal
from MyTable a
join MyTable b on b.id = a.id
where a.OtherVal = 100
and b.Otherval = 200
Run Code Online (Sandbox Code Playgroud)
为了性能,请确保您有适当的索引。在这个有限的示例中,理想情况下,您应该在 ID 上有一个聚集索引,在 OtherVal 上有一个非聚集索引。
但是,在查看您的查询之后,我无法确定您正在尝试完成什么。
归档时间: |
|
查看次数: |
179594 次 |
最近记录: |