#mysql #sql
#mysql #sql
Вопрос:
Моя проблема заключается в следующем:
Name Income Date
---------------------------------
John 100 2014.03.03
John 100 2014.03.04
Mike 100 2014.03.04
John 200 2014.03.04
Martin 100 2014.03.04
Mike 100 2014.03.05
Mike 100 2014.03.05
John 200 2014.03.05
John 200 2014.03.05
John 200 2014.03.05
Martin 200 2014.03.05
John 100 2014.03.05
John 300 2014.03.05
И я хотел бы получить следующий результат:
Name Income Date
---------------------------------
John 100 2014.03.03
Mike 100 2014.03.04
John 200 2014.03.04
Martin 100 2014.03.04
Martin 200 2014.03.05
John 100 2014.03.05
John 300 2014.03.05
Поэтому, если значение Джона равно 100, я бы хотел получить только один раз (дата не имеет значения, она может быть самой новой или самой старой). Но если значение изменяется (даже на более раннее значение) Я бы хотел записать это в выходные данные. Как я могу это сделать?
Комментарии:
1. Какие СУБД вы используете?
2. Нет. Например, доход Джона равен 100, а следующие 4 строки для Джона также равны 100, мне нужна только первая или последняя. (но только один раз). Если он изменится на 200, я бы хотел, чтобы это было на выходе. И если он изменится с 200 на что-либо еще (даже 100) Я хочу, чтобы это снова было на выходе. Это понятно?
3.
group by
предложение try сname,income
и, чтобы определить измененное значение, создайте дополнительный столбец с именем, скажем, «chnage». Теперь, если значение chnages, вы делаете этот столбец 1, иначе сохраните его 0.In таким образом, вы также можете получить обновленное значение4. Существуют ли какие-либо методы решения этой проблемы без добавления дополнительных столбцов?
Ответ №1:
Это немного неправильно, но
SELECT * FROM table GROUP BY name, income;
Или используйте DISTINCT
SELECT DISTINCT name, income FROM table;
Комментарии:
1. Спасибо, но на этот раз Distinct на самом деле не является ответом :/