Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток, в общем, столкнулся с такой проблемой. Нужно вывести данные из таблицы, отфильтровав по уникальности. Скрин:
(тут тот же скрин, на случай всякий, а то ссылка может стать нерабочей https://prnt.sc/hdgqy6 )
Использую запрос:
Отредактированно Ilya_Ru (21.11.2017 23:09:33)
Неактивен
приведите пример тестовы данных в виде
create table ...
insert into ...
и какой должен быть результат
Неактивен
vasya написал:
приведите пример тестовы данных в виде
create table ...
insert into ...
и какой должен быть результат
Прикрепил скрин в свой вопрос. Надеюсь, понятно))).
Сейчас прикреплю и то, что Вы просите. Прошу прощения за задержки, С планшета немного неудобно
Отредактированно Ilya_Ru (21.11.2017 23:04:10)
Неактивен
если большему времени соответствует больший id, то
Неактивен
vasya написал:
приведите пример тестовы данных в виде
create table ...
insert into ...
и какой должен быть результат
вот тестовые данные:
Неактивен
vasya написал:
если большему времени соответствует больший id, то
select max(id) from (
select id, if(`nic`<`admin`, `nic`, `admin`) as `nic`, if(`nic`<`admin`, `admin`, `nic`) as `admin` from `chat`)
group by `nic`,`admin`;
к сожалению, выдает ошибку, пока не понял, почему #1248 every derived table must have its own alias
Неактивен
Неактивен
vasya написал:
mysql> select t1.* from test_chat t1 join
(select max(id) id from (select id, if(`nic`<`admin`, `nic`, `admin`) as `nic`, if(`nic`<`admin`, `admin`, `nic`) as `admin` from `test_chat`) t
group by `nic`,`admin`) t2 using(id)\G
*************************** 1. row ***************************
id: 2
nic: Админ
date: 2012-11-12 18:53:26
sms: а я админ, открыл переписку и на письмо был получен ответ, поэтому мое со
общение не нужно отображать
admin: Рушнов 321
*************************** 2. row ***************************
id: 3
nic: Вася
date: 2012-11-15 16:51:08
sms: при переписке с Рушнов 321 я не нужен, так как к нему никаким боком не от
ношусь, пишу админу
admin: Админ
*************************** 3. row ***************************
id: 4
nic: Петя
date: 2012-11-16 12:57:18
sms: а я открыл переписку с Рушнов 321, и я должен отображаться, я ж уникален
admin: Рушнов 321
*************************** 4. row ***************************
id: 5
nic: Рушнов 321
date: 2012-11-20 02:07:16
sms: написал письмо Кириллу, покажите мое сообщение
admin: Кирилл
*************************** 5. row ***************************
id: 8
nic: Рома
date: 2012-11-22 22:07:16
sms: рома ответил Рушнов 321
admin: Рушнов 321
5 rows in set (0.00 sec)
Ухты! Не ожидал подобного результата!!!))) Большое спасибо! А как можно выкинуть лишнюю выборку 2 row (Вася и Админ)? write nic='Рушнов 321' or admin='Рушнов 321' вроде как при подобной конструкции использовать нельзя(((
В примере только row 2 лишние, а на практике подобных данных будет много
Отредактированно Ilya_Ru (22.11.2017 01:16:46)
Неактивен
почему? можно:
... as `admin` from `test_chat` where `nic`='Рушнов 321' or `admin`='Рушнов 321' ) t
group by `nic`,`admin`) t2 using(id)
Неактивен
vasya написал:
почему? можно:
... as `admin` from `test_chat` where `nic`='Рушнов 321' or `admin`='Рушнов 321' ) t
group by `nic`,`admin`) t2 using(id)
И для полного счастья не хватает order by `date` asc . Не подскажете, куда вставить? Чтобы рассортировалось все не по иду, а по дате
а то в рабочей базе порядок какой-то немного странный получился, не по иду и не по дате. Быть может это из за уникального поля id?
UPD: Отлично! Разобрался сам. в самом конце дописал ORDER BY `t1`.`date` ASC
Отредактированно Ilya_Ru (22.11.2017 02:00:20)
Неактивен
в конце запроса, но всё вышеприведенное имеет смысл
vasya написал:
если большему времени соответствует больший id
Неактивен
vasya написал:
в конце запроса, но всё вышеприведенное имеет смысл
vasya написал:
если большему времени соответствует больший id
Большое человеческое спасибо! Вы даже не представляете, как сильно Вы мне помогли! Просто нет слов, одни положительные эмоции))). Спасибо!
Неактивен
Здравствуйте. Такой интересный вопрос, а как себя будет вести подобный запрос на базе данных размером в 4gb MariaDB, где тысячи записей? Все столбцы идентичны приведенным ранее. Есть подозрение, что при постепенном наполнении данных, запрос начинает выполняться дольше...
Отредактированно Ilya_Ru (28.03.2018 23:01:14)
Неактивен
зависит от параметров сервера, настроек, нагрузки, индексов, ...
Неактивен