如何在MYSQL中选择包含所有字母和数字的行?

时间:2016-04-05 13:22:22

标签: mysql sql

我有一个包含100000行的表,其中有一个列说drugname,其类型为varchar。

列的值可以从0到9开始 A-Z或a-z。

我需要一个返回25000行的查询。在25000行中,它应包含所有字母和数字。

比如说,

  • 字母A包含500行
  • 字母B包含500行
  • 数字1包含400行
  • number 2包含300行等......

包括所有数字和字母,总体而言应该有25000行。

2 个答案:

答案 0 :(得分:0)

首先为所有组选择最小的id组(通过第一个char)

select min(id) as substrId
from the_table
group by substr(value,0,1)

然后使用subselect首先返回选定的id(表示所有组),然后使用一些随机ID

select t1.* 
from the_table t1
    left join (select min(id) as substrId
               from the_table
               group by substr(value,0,1)) sub on t1.id=sub.substrId
order by ifnull(sub.substrId, 0) desc
limit 25000

因此,所有不同的组成员都包含在最终结果集中。

答案 1 :(得分:0)

根据第一个字符枚举行。然后使用枚举来获取行:

AuthController

注意:这将返回每个字母的药品名称最小的行。如果您想要随机的,请使用此select d.* from (select d.*, (@rn := if(@l = left(d.drugname, 1), @rn + 1, if(@l := left(d.drugname, 1), 1, 1) ) ) as seqnum from drugs d cross join (select @rn := 0, @l := '') params order by d.drugname ) d order by seqnum limit 25000;

order by