#mysql #sql
Вопрос:
У меня есть строка таблицы, и я хочу знать, как написать SQL-запрос, который вернет имя человека, когда вес достигнет более 1000.
create table line(
id int not null PRIMARY KEY,
name varchar(255) not null,
weight int not null,
turn int unique not null,
check (weight > 0));
Это то, что у меня есть до сих пор, это должно вернуть все строки до того, как мы достигнем 1000, но я хочу видеть только имя человека, который появится после того, как мы достигнем этого.
SELECT t1.*
FROM
line AS t1
LEFT JOIN line AS t2
ON t2.id = t1.id
WHERE t1.id > 1
GROUP BY t1.id, t1.weight, t1.turn
HAVING COALESCE(SUM(t2.weight),0) < 1000;
Комментарии:
1. «…человек, который придет после того, как мы достигнем этого…» — строки таблицы не имеют внутреннего порядка. Вам нужно будет определить, как запрос должен учитывать, что строка находится до или после другой.
2. Изменить
SELECT t1.*
наSELECT t1.name
3. Вам нужно только одно значение? Например, имя человека, где вес == 1001?