MYSQL在具有相同的第一个字符时取消选择行

时间:2016-08-05 11:05:42

标签: mysql select

我有一张这样的表

 <meta name="viewport" content="width=device-width, initial-scale=1">

我想要这样的结果

| symbol  | value |
-------------------
| test    | 12    |
| yes     | 8     |
| test.m  | 13    |
| no      | 10    |
| nah.m   | 20    |
| nah     | 17    |

如果您看到该表,我想选择记录中最后一个字符中包含“.m”的记录,当记录中有重复字符时,最后一个字符中没有“.m”并删除“.m”。

谁能帮帮我?提前谢谢。

2 个答案:

答案 0 :(得分:2)

select t1.symbol, coalesce(t2.value, t1.value)
from t t1
left join t t2 on t1.symbol = concat(t2.symbol, '.m')
where t1.symbol not like '%.m'

答案 1 :(得分:1)

您可以使用CASE和分组

 select 
   case when locate('.', symbol )> 0 
                then sustr(symbol, 1, locate('.', symbol ) -1) 
                else symbol 
        end as my_symbol,
  max(value)
 from my_table
 group by my_symbol