mysql 查数据,根据proj_id去重,取最新一条数据
时间: 2024-09-13 12:18:01 浏览: 19
在MySQL中,如果你想根据`proj_id`字段去除重复并获取每条`proj_id`对应的最新记录,你可以使用`ROW_NUMBER()`窗口函数结合`LIMIT`来实现。这是一个示例查询:
```sql
SELECT *
FROM (
SELECT proj_id,
column1,
column2,
... (列出其他需要的列),
ROW_NUMBER() OVER(PARTITION BY proj_id ORDER BY create_time DESC) as row_num
FROM t_zwzt_office
WHERE create_time BETWEEN '2024-01' AND '2024-08-01'
AND aff_form_info NOT LIKE '%唐文%'
) AS subquery
WHERE row_num = 1
```
这个查询的工作原理如下:
1. 内部查询(subquery)首先根据`proj_id`分区,并按照`create_time`降序排列(最新的记录排在前面),这样每一组`proj_id`就有了一个唯一的排名(row_num)。
2. 外层查询再限制只选择`row_num`为1的结果,也就是每个`proj_id`下的最新记录。
注意:这里的`column1`, `column2`, ... 是你需要的实际列名,你需要替换为你的表中的实际列名。
相关问题
当ftok函数的proj_id为-127时会报什么错
当ftok函数的proj_id参数为负数时,会出现一个编译警告,但是不会导致程序运行错误。具体警告信息如下:
```
warning: ftok() path and id argument only changes low 8 bits
```
警告信息的意思是,ftok函数的proj_id参数只使用了低8位,高位被忽略了。因此,当proj_id为负数时,高位被忽略,只使用了低8位,会出现警告信息。但是,这并不会影响ftok函数的功能和返回值。因此,当proj_id为-127时,ftok函数会正常运行,并返回一个计算得到的key值,可以根据这个key值创建或者访问一个System V IPC对象。
当ftok函数的proj_id为-128时会报什么错
当ftok函数的proj_id参数为负数时,会出现一个编译警告,但是不会导致程序运行错误。具体警告信息如下:
```
warning: ftok() path and id argument only changes low 8 bits
```
警告信息的意思是,ftok函数的proj_id参数只使用了低8位,高位被忽略了。因此,当proj_id为负数时,高位被忽略,只使用了低8位,会出现警告信息。但是,这并不会影响ftok函数的功能和返回值。