从相似行MYSQL中选择一行

Sert-X

我有这样的桌子

CREATE TABLE prova
    (`ID` int, `CODCLI` longtext, `RIFYEAR` int, `VAL` int)
;
    
INSERT INTO prova
    (`ID`, `CODCLI`, `RIFYEAR`, `VAL`)
VALUES
    (1, '1dad000', 2020, 150),
    (2, '500', 2020, 100),
    (3, '1dad000', 2021, 50),
    (4, '1dad000', 2022, 70),
    (5, '2000', 2023, 80)
;

http://www.sqlfiddle.com/#!9/7697a4/4,我想选择这些行

2, '500', 2020, 100
3, '1dad000', 2021, 50
4, '1dad000', 2022, 70

我能怎么做?

我写了这样的东西

SELECT * 
  FROM prova 
 WHERE CODCLI IN ('500','1dad000')

但是,当“ RIFYEAR”相同时,我只想选择CODCLI = 500的行。

感谢您的帮助 ;)

戈登·利诺夫(Gordon Linoff)

一种方法使用窗口函数:

SELECT p.*
FROM (SELECT p.*,
             ROW_NUMBER() OVER (PARTITION BY year ORDER BY CODCLI DESC) as seqnum
      FROM prova p
      WHERE CODCLI IN ('500', '1dad000') 
     ) p
WHERE seqnum = 1;

这样可以保证每年返回一行。

或使用NOT EXISTS

select p.*
from prova p
where p.codcli = '500' or
      (p.codcli = '1dad000' and
       not exists (select 1
                   from prova p2
                   where p2.year = p.year and p2.codcli = '500'
                  )
      );

如果中有重复项,则每年可以返回重复项prova

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在一行SQL中选择行对

来自分类Dev

MySQL:在每个聚合组中选择最后一行

来自分类Dev

防止在MySQL中选择同一行

来自分类Dev

MySQL从一行中选择数据

来自分类Dev

MySQL:在一行中选择多个记录

来自分类Dev

MySQL在同一行中选择数据

来自分类Dev

MySQL在一行中选择多个ID值

来自分类Dev

MySQL:在每个聚合组中选择最后一行

来自分类Dev

MySQL 在同一行中选择不同的值

来自分类Dev

在html表格中选择一行

来自分类Dev

在UIPickerView中选择一行-Swift

来自分类Dev

在listView中选择一行

来自分类Dev

在 dgv 中选择一行

来自分类Dev

Mysql Query从相同的值中选择一行(仅选择重复项)

来自分类Dev

从ZF2的行集中选择一行

来自分类Dev

在一行中选择表 3 行

来自分类Dev

使用PHP在mysql数据库中选择下一行

来自分类Dev

MySQL联接:从子表中选择一行满足条件,否则为NULL

来自分类Dev

MySQL从多个表中选择+其他地方的最后一行

来自分类Dev

MySQL从表中的用户列表中选择每个用户的最后一行

来自分类Dev

在 MySQL 中选择多于一行的特定值和条件依赖

来自分类Dev

MySQL:选择每对的最后一行

来自分类Dev

如何从任何hstore值中选择一行?

来自分类Dev

如何以编程方式在QTreeview中选择一行?

来自分类Dev

从Laravel中的一行中选择单列?

来自分类Dev

从文本文件中选择一行

来自分类Dev

以编程方式从剑道网格中选择一行

来自分类Dev

在Postgres中选择一行作为JSON

来自分类Dev

从多行中选择一行作为默认值