SQL Server 允许查询结果中出现重复的列名

2ledvvac  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(232)

此查询:

WITH cte as (
SELECT 
    user.id, 
    user.name, 
    product.id as 'product_id', 
    product.price, 
    product.name as 'product_name',
    DENSE_RANK() OVER (ORDER BY user.id) AS dr
) select 
    user.id, 
    user.name, 
    product_id as 'id', 
    product.price, 
    product_name as 'name' 
from cte
WHERE dr between 1 and 3
ORDER BY id, product_id

返回以下内容:

id;name;id;price;name;dr
1;Adam;16;500;book;1
2;Adam;51;600;guitar;1
3;Adam;16;100;mouse;1
4;Bob;32;300;car;2
5;Jan;77;2000;car;3

这个列结构正是我所需要的,因为我的ORM库要求userproduct id列都命名为:id。我存档的方式是将id更改为product_id,然后在第二次选择时更改为id。这在我看来很奇怪-有没有更简单的方法可以做到这一点?

wn9m85ua

wn9m85ua1#

我 不 知道 您 的 查询 有 多 复杂 , 但 这里 有 另 一 种 方法 , 在 where 子句 中 使用 distinct toporder by 。 如果 您 需要 选择 id 的 范围 , 可以 修改 该 子 查询 以 使用 offsetfetch

select * --rename columns however you want
from t1 join t2 on...
where t1.id in (select distinct top 3 id from t1 order by id)

中 的 每 一 个

相关问题