需要使用左连接的MySQL查询,左边的重复数据显示为null

时间:2014-04-30 01:15:41

标签: mysql join null

(简体)

在表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

1 个答案:

答案 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语句抑制连续重复。