Select 个带有 where in 子句的唯一行(SQL 服务器)

Select unique rows with where in clause (SQL Server)

我正在尝试 return 一个 json 列中的每个唯一值。

但是,当我尝试从子查询 select 时,整个结果集是 returned。

例子Table

| json   | column | 
|--------|--------|
| {obj1} | 1      |
| {obj2} | 1      |
| {obj3} | 2      |

示例查询

select distinct
[json]
from someTable 
where [column] in (
  select distinct 
  [column]
  from someTable
)

实际输出

| json   |
|--------|
| {obj1} |
| {obj2} | 
| {obj3} |

预期输出

| json   |
|--------|
| {obj1} |
| {obj3} |

如何 select 每个唯一列值仅 1 json

如果与列相关的输出无关紧要 obj1 Or obj2 您必须像这样使用分组依据:

SELECT
  Min(JSon) AS Json ,Column
FROM
 someTable 
Group By column

如果你想要每个 column 的第一个 [json] 然后使用 row_number():

select t.[json] from (
  select 
    [json],
    row_number() over (partition by column order by id) rn
  from someTable 
) t
where t.rn = 1