SQL查询错误或它可以是什么?

时间:2010-07-11 08:39:06

标签: sql mysql tsql

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;

1 个答案:

答案 0 :(得分:2)

似乎正在使用字母数字排序。这可能是因为age字段实际上是一个字符串类型,例如varchar,而不是你所说的整数类型。

运行SHOW CREATE TABLE citizen以仔细检查类型,并在必要时将其更改为整数类型。