SQL Server 表A 有字段 id,a,b,c,d ,id是递增序号,按照a和b分组,并选出指定值的c,找出这条数据对应的id
时间: 2023-12-10 19:40:19 浏览: 67
可以使用如下 SQL 语句来实现:
```
SELECT id
FROM A
WHERE a = '指定值1' AND b = '指定值2' AND c = '指定值3'
GROUP BY a, b, c
```
其中,`指定值1`、`指定值2`、`指定值3` 分别为需要查找的 `a`、`b`、`c` 字段的具体值。使用 `GROUP BY` 子句按照 `a` 和 `b` 字段进行分组,再通过 `WHERE` 子句选取符合条件的记录,最后通过 `SELECT` 子句选择对应的 `id` 字段。
相关问题
SQL Server 表A 有字段 id,a,b,c,d ,id是递增序号,按照a和b分组,并选出最大的c,同时通过id显示最大c值对应的d,d不相同
可以使用子查询和窗口函数来解决这个问题:
```
SELECT id, a, b, c, d
FROM (
SELECT id, a, b, c, d, ROW_NUMBER() OVER (PARTITION BY a, b ORDER BY c DESC, id ASC) AS rn
FROM A
) sub
WHERE rn = 1 AND c IS NOT NULL AND d NOT IN (
SELECT d
FROM (
SELECT a, b, MAX(c) AS max_c
FROM A
GROUP BY a, b
) sub
JOIN A ON A.a = sub.a AND A.b = sub.b AND A.c = sub.max_c
GROUP BY d
HAVING COUNT(*) > 1
)
```
这里先将表A按照a和b分组,并计算出每个分组内最大的c值以及对应的id和d。然后将这个结果作为子查询,并在外层查询中筛选出最大的c值对应的记录,同时排除掉d重复的记录。注意要先排除掉c为空的记录,否则会影响结果的正确性。
SQL Server 表A 有字段 id,a,b,c ,id是递增序号,按照a分组,并选出最大的b,并找到这条数据对应的id
可以使用如下的 SQL 语句实现:
```sql
SELECT MAX(b) AS max_b, MAX(id) AS id
FROM A
GROUP BY a;
```
这个语句会先按照 a 字段分组,然后在每个分组中找到最大的 b 值和对应的 id 值。注意,这里用到了 MAX() 聚合函数,它会返回指定列中的最大值。
阅读全文