首页 > 解决方案 > MySQLi按另一列选择不同的顺序

问题描述

我有以下 MySQL 数据库:

variable    displayname    clevs      ccols    cmin    cmax  show_on_quicklinks  client
'capesfc'   'cape'         '100 200'  '18 19'  '100'   '3400' 'gfs,access-c'     NULL
'lftxsfc'   'li'           '-10 -9'   '50 52'  '-10'   '0'    'gfs'              NULL
'lftxsfc'   'li'           '-10 -9'   '50 52'  '-10'   '0'    'gfs,access-c'     'client1'
'tscreen'   'tempsfc'      '-10 45'   '50 52'  '-10'   '45'   'gfs,access-c'     'client1'
'lftxsfc'   'li'           '-10 -9'   '50 52'  '-10'   '0'    'access-c'         'client2'
'capesfc1'  'cape1'        '100 200'  '18 19'  '100'   '3400' 'gfs,access-c'     NULL

我想选择唯一的显示名称,其中客户端不为空,否则只返回显示名称...所以在下面的示例中,如果我选择 client='client1',它将返回 client1 的行,并且还必须返回 client1 的所有其他行一片空白。它不得为其他客户端返回任何其他行:

variable   displayname  clevs      ccols    cmin    cmax  show_on_quicklinks    client
'lftxsfc'  'li'         '-10 -9'   '50 52'  '-10'   '0'    'gfs,access-c'       'client1'
'tscreen'  'tempsfc'    '-10 45'   '50 52'  '-10'   '45'   'gfs,access-c'       'client1'
'capesfc'  'cape'       '100 200'  '18 19'  '100'   '3400' 'gfs,access-c'        NULL
'capesfc1' 'cape1'      '100 200'  '18 19'  '100'   '3400' 'gfs,access-c'        NULL

标签: mysql

解决方案


您可以尝试使用聚合进行以下操作,但如果您使用 mysql 的升级版本,则可以使用 row_number() 函数,该函数更容易识别重复

select variable,displayname,clevs,ccols,cmin,cmax,max(show_on_quicklinks) as show_on_quicklinks,max(client) as client
    from tablename
    gruop by variable,displayname,clevs,ccols,cmin,cmax

推荐阅读