Добрый день! Есть таблица. В ней нужно выбирать все, но только последние значения i_id по data_id.
CREATE TABLE `dataicraci` (
`di_id` int(10) UNSIGNED NOT NULL,
`i_id` int(10) UNSIGNED NOT NULL,
`data_id` int(10) UNSIGNED NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `dataicraci` (`di_id`, `i_id`, `data_id`) VALUES
(59, 6, 6),
(62, 1, 5),
(63, 5, 5),
(64, 1, 4),
(65, 4, 4),
(66, 1, 3),
(67, 3, 3),
(68, 1, 12),
(69, 3, 12),
(70, 1, 2),
(71, 3, 2),
(96, 1, 11),
(97, 2, 11),
(102, 1, 1),
(103, 2, 1),
(106, 1, 8),
(107, 6, 8),
(110, 6, 7),
(111, 11, 7);
Т.е. вот эти
(59, 6, 6),
(63, 5, 5),
(65, 4, 4),
(67, 3, 3),
(69, 3, 12),
(71, 3, 2),
(97, 2, 11),
(103, 2, 1),
(107, 6, 8),
(111, 11, 7)
Можно было написать условие WHERE i_id !=1, но может быть что нету i_id равный 1 для конкретного data_id. Может быть и такое, что совпадений для конкретного data_id может быть 3 например (110, 6, 7), (111, 11, 7), (112, 12, 7). В этом случае все равно нужно брать из базы (112, 12, 7)
Пока единственное, что приходит на ум:
SELECT d1.*
FROM dataicraci d1
JOIN (
SELECT MAX(i_id) AS i_id, data_id
FROM dataicraci
GROUP BY data_id
) AS tmp
ON d1.`i_id` = tmp.i_id AND d1.`data_id` = tmp.`data_id`
Может быть я помешан на подзапросах и есть другие решения, а может и нет...
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости