Задача: выбрать последние по дате значения в таблице для каждого значения в колонке source
Решение: запрос получается с соединением. Т.е. в соединении мы делаем запрос максимальных дат с группировкой по source, а затем соединяем по дате и значению source
1
2
3
4
5
6
7
8
SELECT
m_data.*
from
m_data
inner JOIN(
SELECT MAX(m_data.dt)asdt,m_data.source from m_data where m_data.source in(SELECT id FROM sources where device IN(1,2))GROUP by m_data.source
Хороший вариант: возложить контроль уникальности вставляемых данных, на уровень БД. Если это по каким-то причинам не возможно, то можно попробовать такой вариант:
1
2
3
4
5
6
insert into users_groups_filling(user_id,user_group)
select:user_id,:user_group
where
NOTEXISTS(
SELECT id from users_groups_filling where user_id=:user_id anduser_group=:user_group
Возникло при переходе с Mysql 5.7 на 8.0 со связкой php 7.2 Гугл говорит, что это потому что в 7.2 еще не завезли новую усиленную авторизацию в mysqli. Временное решение, пока нет возможности обновить до php 7.3 — сделать авторизацию «по старому» :
1
2
ALTER USER'root'@'localhost'IDENTIFIED WITH mysql_native_password