sitizen(id_citizen,姓名,SNAME,年龄,id_city)
我尝试查询
select a.name_city,b.name,b.age from city a,citizen b where a.id_city = b.id_city and
b.name = 'DAVE' order by b.age desc
期待这样的结果
- NY | DAVE | 65
- NY | DAVE | 12
- NY | DAVE | 3
但是看到了我无法理解的结果
- NY | DAVE | 65
- NY | DAVE | 3
- NY | DAVE | 12
如果我在查询结果中更改desc更改
- NY | DAVE | 12
- NY | DAVE | 3
- NY | DAVE | 65
怎么样?年龄是(int)
使用此查询的其他名称可以正常工作但不是全部
CREATE TABLE tz.citizen(
id_citizen INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
sname VARCHAR(255) NOT NULL,
age VARCHAR(255) NOT NULL,
id_sity INT(11) NOT NULL,
PRIMARY KEY (id_citizen)
)
ENGINE = INNODB
AUTO_INCREMENT = 5
AVG_ROW_LENGTH = 4096
CHARACTER SET latin1
COLLATE latin1_swedish_ci;
答案 0 :(得分:2)
似乎正在使用字母数字排序。这可能是因为age
字段实际上是一个字符串类型,例如varchar,而不是你所说的整数类型。
运行SHOW CREATE TABLE citizen
以仔细检查类型,并在必要时将其更改为整数类型。