当前位置: 首页 > 知识库问答 >
问题:

当我使用“order by”时,我在MySQL中选择的数据不是按顺序排列的。

苏高远
2023-03-14
   SELECT candidate_num FROM candidate ORDER BY candidate_num 

我们可以看到candidate_num是不正确的。下面是这个表的结构。我不明白为什么“2”在“19”后面。

CREATE TABLE `candidate` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `candidate_num` varchar(10) NOT NULL,
  `name` varchar(50) NOT NULL,
  `age` int(3) NOT NULL,
  `major` varchar(50) NOT NULL,
  `company` varchar(50) NOT NULL,
  `department` varchar(50) NOT NULL,
  `native_place` varchar(50) NOT NULL,
  `ethnicity` varchar(50) NOT NULL,
  `highest_education` varchar(50) NOT NULL,
  `group` varchar(50) DEFAULT NULL,
  `is_elected` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `candidate_num` (`candidate_num`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8;

共有1个答案

吉玉宸
2023-03-14

这里的“candidate_num”是一个字符串(varchar字段),所以它是按词法排序的。如果是这样,您可能可以通过以下方式订购:

SELECT `candidate_num` FROM `candidate` ORDER BY convert(`candidate_num`, decimal) ASC;

注意:对于varchar,它按照词法顺序对数据进行排序,即首先将1的值放在第一位,然后将2的值放在第二位,依此类推。

 类似资料:
  • 问题内容: 我认为使用某种顺序才有意义。我想做的是在视图中包括该子句,以便该视图上的所有s都可以忽略它。但是,我担心该订单不一定会延续到,因为它没有指定订单。 是否存在一种情况,即视图指定的顺序不会反映在该视图上的select结果中(该视图中的order by子句除外)? 问题答案: 您不能指望没有显式子句的任何查询中的行顺序。如果查询有序视图,但没有包括子句,则如果它们的顺序正确,请感到惊喜,并

  • 我有麻烦了。当我尝试从数据库中选择数据时,我看到错误NullPointerException。为了连接到数据库,我使用了单例模式。 此处为NullPointerException:

  • 问题内容: 我将要有一个固定的项目清单,直到有一个随机化步骤,我才能运行查询直到执行该查询为止。 我想要以下内容: 假设is_launch_set将返回1,3,7,11,但已被随机分配到以下位置: 关于如何实现这一目标的任何想法?我在想也许是一个find_in_set,但不是很确定。 问题答案: 您可以使用以下任一方法来做到这一点: 要么 要么

  • 我知道,当我不知道列名时,使用apply或不同的方法可以获得最小值。但是,我想知道dplyr mutate函数是否能够在没有已知列名的情况下做到这一点。 谢谢你,

  • 问题内容: 我有类似的东西 如果我只是这样做,它将以ID升序返回行。有没有一种方法可以按照IN语句中给出的顺序取回行? 问题答案: 您应该使用“ ORDER BY FIELD”。因此,例如: