如果某些列中有重复,我想从表中检索一条记录,如下所示:
------------------------
| id | year | number |
| 1 | 2018 | I |
| 1 | 2018 | II |
| 1 | 2017 | I |
| 1 | 2016 | II |
| 2 | 2017 | I |
| 2 | 2017 | II |
| 2 | 2016 | I |
| 2 | 2016 | II |
| 2 | 2015 | II |
------------------------
desired output
------------------------
| id | year | number |
| 1 | 2018 | I |
| 1 | 2017 | I |
| 1 | 2016 | II |
| 2 | 2017 | I |
| 2 | 2016 | I |
| 2 | 2015 | II |
------------------------
我用'group by + have'搜索并尝试了一些技巧,并尝试在合并了“ insertignore”的那些列上创建索引,但无济于事。有人说这是否有可能?
更新:
最终提出解决方案,我在id
和year
上创建了索引,然后使用“ INSERT IGNORE INTO ...”制作了现有表的副本。
答案 0 :(得分:1)
您可以对所需的数据集使用汇总
select id, `year`, min(`number`)
from your_table
group by id, `year`
order by id,`year` desc
MIN()可以使用字符串参数;在这种情况下,它将返回最小字符串值
答案 1 :(得分:0)
您可以尝试从表中选择唯一值
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
祝你好运
答案 2 :(得分:0)
尝试一下
SELECT * FROM table_name GROUP BY id,
年;
注意:创建没有主键的表并将MySQL关键字用作表名(例如年份和数字)不是一个好习惯。 如果您仍然坚持使用年份和数字,请始终使用`进行封装。