Мой запрос:
SELECT education,nickname,height
ROW_NUMBER() OVER (PARTITION BY education ORDER BY height DESC) INDEX_NUM
FROM user
LIMIT 100;
Определение моей таблицы:
CREATE TABLE user (
female BOOLEAN NOT NULL,
nickname VARCHAR(60) NOT NULL,
id INT NOT NULL,
charm INT NOT NULL,
standardmember BOOLEAN NOT NULL,
idcard BOOLEAN NOT NULL,
age INT NOT NULL,
marriage VARCHAR(5) NOT NULL,
region VARCHAR(10) NOT NULL,
education VARCHAR(10) NOT NULL,
height INT NOT NULL,
weight INT NOT NULL,
constellation VARCHAR(5),
race VARCHAR(5),
animalzodiac VARCHAR(2) NOT NULL,
intro TEXT NOT NULL,
rage VARCHAR(10) NOT NULL,
rheight VARCHAR(15) NOT NULL,
rrace VARCHAR(10) NOT NULL,
reducation VARCHAR(10) NOT NULL,
rphoto VARCHAR(5) NOT NULL,
rmarriage VARCHAR(10) NOT NULL,
rregion VARCHAR(100) NOT NULL,
rhonesty VARCHAR(10) NOT NULL,
jobtitle VARCHAR(15),
industry VARCHAR(20),
companynature VARCHAR(10),
employeewelfare VARCHAR(10),
workintensity VARCHAR(10),
mobility VARCHAR(10),
careervsfamily VARCHAR(10),
overseaassignment VARCHAR(10),
college VARCHAR(30),
majortype VARCHAR(5),
languages VARCHAR(50),
birthplace VARCHAR(10),
residence VARCHAR(10),
nationality VARCHAR(15),
personality VARCHAR(5),
humor VARCHAR(6),
temper VARCHAR(6),
seriousness VARCHAR(15),
kidwish VARCHAR(5),
whentomarry VARCHAR(5),
longdistancelove VARCHAR(5),
dreammarriage TEXT,
livewithparents VARCHAR(5),
parents VARCHAR(5),
siblings VARCHAR(25),
financialsituation VARCHAR(10),
parentsinsurance VARCHAR(10),
parentsemployment VARCHAR(35),
sent BOOLEAN NOT NULL DEFAULT 0;
PRIMARY KEY (id)
);
Моя цель состоит в том, чтобы разделить набор результатов и отсортировать их в порядке возрастания высоты. Как это:
Но я получил ошибку:
Ну, я не очень хорошо разбираюсь в MySQL и синтаксисе запросов. Почувствуй свободу, чтобы научить меня, если я задам глупый вопрос. Спасибо.
Попробуйте этот запрос:
SELECT education,
nickname,
height,
ROW_NUMBER() OVER w AS INDEX_NUM
FROM u
WINDOW w AS (
PARTITION BY education,
nickname ORDER BY height DESC
);
Здесь я использовал функции ROW_NUMBER
с окном. Поскольку MySQL поддерживает неагрегатные функции, которые используются только как функции окна. Для них предложение OVER является обязательным:
CUME_DIST()
DENSE_RANK()
FIRST_VALUE()
LAG()
LAST_VALUE()
LEAD()
NTH_VALUE()
NTILE()
PERCENT_RANK()
RANK()
ROW_NUMBER()
Для получения дополнительной информации перейдите по следующей ссылке:
https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html