Я пытаюсь изучить mysql, но кажется, что без особого успеха. Я понимаю, как это работает, и я могу выполнить некоторые простые операции с такими данными, как вставка, обновление или выбор. Я могу делать простые выборки из одной таблицы или выбирать из разных таблиц с помощью объединений, как в примерах, которые я читал до сих пор. Я прочитал много учебников и статей, и я действительно все понимаю, но когда я сталкиваюсь с новым упражнением, я действительно не знаю, что делать и как начать с него.mysql как сделать трудные выборы
Для примера скажем, что я есть следующие таблицы в базе данных:
CREATE TABLE courses (`currency` varchar, `date` date, `course` decimal);
INSERT INTO courses (currency, date, decimal) values ('USD', now(), 5.4);
INSERT INTO courses (currency, date, decimal) values ('EUR', now(), 6.3);
INSERT INTO courses (currency, date, decimal) values ('USD', now(), 5.7);
INSERT INTO courses (currency, date, decimal) values ('EUR', now(), 6.7);
И мне нужно, чтобы получить последние курсы по каждой группе. Я даже не знаю, как начать с этого примера. Вначале выбраны все элементы по группам:
SELECT * FROM courses GROUP BY currency;
Но я получаю только первые строки из каждой группы. Так что я немного искал Google, и я узнал, что люди используют JOIN. Но насколько я знаю, JOINS используются, когда вам нужно получать данные из нескольких реальных таблиц, почему я должен использовать соединения здесь?
Любые советы были бы очень оценены.
PS Это не домашнее задание, я действительно хочу, чтобы понять это
Таблицы SQL представляют собой * неупорядоченные * наборы. Нет такой вещи, как первая или последняя строка. Если вы хотите пойти по порядку вставки, включите столбец 'auto_increment'. –
ok Что делать, если мне нужны курсы по последней дате – user3673623
СООБЩЕНИЯ, которые вы имеете в виду, вероятно, присоединяются к подзапросу в той же таблице, чтобы найти первые значения идентификатора (для каждой группы), эффективно используя JOIN в качестве фильтра результатов. – Uueerdo