仅使用特定 c_id 检索发送者数据的 Sql 查询,其中发送者和接收者数据在同一个表中
Posted
技术标签:
【中文标题】仅使用特定 c_id 检索发送者数据的 Sql 查询,其中发送者和接收者数据在同一个表中【英文标题】:Sql query for retrieve data of senders only with a specific c_id where senders and receivers data in same table 【发布时间】:2020-12-17 10:46:35 【问题描述】:t 是一个表格,其中包含快递员的发送和接收日期以及他们各自的客户,客户 ID 是 c_id,快递员 ID 是 cr_id,打磨或接收日期是 dt。
create table t(c_id int,cr_id int,dt date);
insert into t values
(1,56,'2020-05-15'),(56,56,'2020-10-17'),
(1,8,'2020-05-17'),(56,8,'2020-12-17'),
(123,78,'2020-01-17'),(1,78,'2020-12-18');
如果有任何订单成功下达,我会先插入发送快递的客户,然后再插入接收快递的客户。
这里我只想用特定的 c_id 检索发件人的数据?
【问题讨论】:
继续。尝试一下。 嗨瓦伦。你的问题是什么。请尝试更具描述性。 z你不就用where c_id = ?
吗?
【参考方案1】:
你需要ROW_NUMBER
窗口函数如下:
select * from
(select t.*, row_number() over (partition by cr_id) as rn
from t)
where rn = 1
【讨论】:
【参考方案2】:它与@Popeye 的含义相同,但需要 order by 才能获得第一个值:
select dt, cr_id from (
select t.dt, t.cr_id,
row_number() over (partition by cr_id order by cr_id ) rn
from t) t1
where rn = 1
order by cr_id
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=266a34e3c5183430e5308d82ad90c248
【讨论】:
以上是关于仅使用特定 c_id 检索发送者数据的 Sql 查询,其中发送者和接收者数据在同一个表中的主要内容,如果未能解决你的问题,请参考以下文章