DISTINCT如果是MYSQL

时间:2017-04-25 10:03:54

标签: php mysql

我希望在某些条件下区分项目。例如我的表格如下:

no| Device_id|total
090317016|167|147840
090317016|167|147840
090317014|167|155925
090317014|167|155925
090317013|167|188265
090317013|167|188265
090317010|167|170940
090317010|167|170940
NULL     |1672|3000
NULL     |1672|9000
NULL     |1672|12000
NULL     |1672|3000

如果没有<>,我只想区别开来null,并且没有null值保持在表中显示如下:

no| Device_id|total
090317016|167|147840
090317014|167|155925
090317013|167|188265
090317010|167|170940
NULL     |1672|3000
NULL     |1672|9000
NULL     |1672|12000
NULL     |1672|3000 

更新问题: 如果我从交易中选择*,其中DeviceId =' 167'它会出现: no| Device_id|total 090317016|167|147840 090317016|167|147840 090317014|167|155925 090317014|167|155925 090317013|167|188265 090317013|167|188265 090317010|167|170940 090317010|167|170940 我希望他们像这样使用截然不同的: no| Device_id|total 090317016|167|147840 090317014|167|155925 090317013|167|188265 090317010|167|170940 但我可以使用不同的组合if if子句是否为null? 那么当我选择deviceId = 1672时会出现如下:

no| Device_id|total NULL |1672|3000 NULL |1672|9000 NULL |1672|12000 NULL |1672|3000

所以当显示deviceId 1672时,没有区别,但如果我使用distinct

显示DeviceId 167

2 个答案:

答案 0 :(得分:2)

也许试试这个:

SELECT * FROM (
    SELECT DISTINCT `no`, `Device_id`, `total` FROM `my_table` WHERE `no` IS NOT NULL

    UNION ALL

    SELECT `no`, `Device_id`, `total` FROM `my_table` WHERE `no` IS NULL
) t

答案 1 :(得分:0)

联盟应该这样做:

select 
   distinct
   no,
   device_id,
   total
where 
   no is not null and 
   device_id = ?

union all
select 
    no,
   device_id,
   total
where 
  no is null and 
   device_id = ?