SQL 多列选择 - 获取过期数据和空列

问题描述 投票:0回答:1

我有一个包含 3 列的表格:

id, expire, lastwdIf

如何进行查询,以便对于每个唯一的 id,我在同一行中只有 12 月份的

expiry
列,并在同一行中找到
lastwdIf
(只有一个寄存器为每个 id 为 null)列的值为 null?

id 过期 最后一次 姓名 供应商
10 10/01 d23dv36 胡安 25,5
15 12/04 2232cg 玛丽亚 36,4
15 玛丽亚 14,1
10 12/17 2232cg 胡安 10,2
10 胡安 32,10

结果必须是:

id 过期 最后一次 姓名 供应商
10 12/17 胡安 32,10
15 12/04 玛丽亚 14,1

我尝试过一些 SELECT 案例加入,但没有任何效果:(

mysql join merge count
1个回答
0
投票

您可以通过自加入来完成此操作。将表与其自身连接起来,匹配 id 上的行,但仅匹配

expire
为空的行。对于每个 ID,您将拥有 12 月和 null 的数据作为一行。

select t1.id, t1.expire, t2.lastwdif, t2.name, t2.vendor
from test t1
join test t2 
  on t1.id = t2.id and t2.expire is null
where left(t1.expire, 3) = '12/'
order by id;

示范.

注意:这将为 12 月份的行生成一行。

© www.soinside.com 2019 - 2024. All rights reserved.