(简体)
在表PET_TYPES中,列为id,类型为
在表PET_NAMES中,列是id,type_id,pet_name
基本查询是:
select pt.*, pn.pet_name from PET_TYPES pt left join PET_NAMES pn on pt.id=pn.type_id
但是,出于显示目的,我需要为左侧的所有重复值显示NULL。而不是:
id | type | pet_name 1 | aardvark | NULL 2 | dog | Charlie 3 | dog | Rover 4 | cat | Tabby 5 | cat | Sandy 6 | cat | MeowMeow
我需要:
id | type | petname 1 | aardvark | NULL 2 | dog | Charlie 3 | NULL | Rover 4 | cat | Tabby 5 | NULL | MeowMeow 6 | NULL | Sandy
TIA
答案 0 :(得分:0)
您可以使用变量和IF执行此操作,如下所示:
SELECT id,
IF(type=@prev,NULL,@prev:=type) AS type,
petname
FROM (
select pt.*, pn.pet_name
from PET_TYPES pt
left join PET_NAMES pn on pt.id=pn.type_id
) AS list,
(SELECT @prev:='') AS init
ORDER BY list.type, list.id
请注意您的查询是如何包装在外部查询中的。
IF语句抑制连续重复。