Ошибка SQL-запроса или что это может быть? - PullRequest
1 голос
/ 11 июля 2010

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 on ask в результате запроса, не лучше

 - 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 Ответ

2 голосов
/ 11 июля 2010

Похоже, что используется алфавитно-цифровая сортировка.Это может быть потому, что поле age на самом деле является строковым типом, таким как varchar, а не целочисленным типом, как вы указали.

Запустите SHOW CREATE TABLE citizen, чтобы дважды проверить тип и изменить его на целочисленныйпри необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...