Помощник
|
Нужно сделать ТОП 10 при выборке из 3 столбцов |
Mist_hb
|
Сообщение
#1
|
||
|
|
||
|
|||
Mist_hb
|
Сообщение
#2
|
|
Проблема решена)
SELECT id,summa1 as maxVal FROM table_name
UNION ALL select id,summa2 FROM table_name UNION ALL SELECT id,summa3 FROM table_name ORDER BY maxVal DESC LIMIT 10; |
|
|
Degradator |
13.2.2017, 16:46;
Ответить: Degradator
Сообщение
#3
|
|
Я так предполагаю что запрос написан не правильно(или может правильно, но не очевидно, поскольку мне не понятно что ORDER by и limit применяются ко всей выборке, а не к последнему запросу), должно быть вот так
( SELECT id,summa1 as maxVal FROM table_name UNION ALL select id,summa2 FROM table_name UNION ALL SELECT id,summa3 FROM table_name ) as t1 ORDER BY maxVal DESC LIMIT 10 ; Ну и возможно что вот такой запрос работать будет быстрее, поскольку ты утраиваешь размер данных, и скорее всего, в определенный момент, у базы данных закончится память, и она начнет писать на диск. (
SELECT id,summa1 as maxVal FROM table_name ORDER BY maxVal LIMIT 10 UNION ALL select id,summa2 FROM table_name ORDER BY summa2 LIMIT 10 UNION ALL SELECT id,summa3 FROM table_name ORDER BY summa3 LIMIT 10 ) as t1 ORDER BY maxVal DESC LIMIT 10 ; |
|
|
Mist_hb
|
Сообщение
#4
|
|
не один из вариантов не сработал выдали ошибку
1 вариант: ( SELECT id,summa1 as maxVal FROM gabl_resultplayers UNION ALL select id,summa2 FROM gabl_resultplayers UNION ALL SELECT id,summa3 FROM gabl_resultplayers ) as t1 ORDER BY maxVal DESC LIMIT 10 ; [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION ALL select id,summa2 FROM gabl_resultplayers UNION ALL SELECT id,summa3' at line 3 2 вариант: ( SELECT id,summa1 as maxVal FROM gabl_resultplayers ORDER BY maxVal LIMIT 10 UNION ALL select id,summa2 FROM gabl_resultplayers ORDER BY summa2 LIMIT 10 UNION ALL SELECT id,summa3 FROM gabl_resultplayers ORDER BY summa3 LIMIT 10 ) as t1 ORDER BY maxVal DESC LIMIT 10 ; [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION ALL select id,summa2 FROM gabl_resultplayers ORDER BY summa2 LIMIT 10 UN' at line 3 при этом мой вариант работает без броблем первой выборке присваивается maxVal после объединяется со 2 и 3 выборкой и сортируется ORDER BY maxVal и LIMIT уже выбирает 10 первых значений |
|
|
Degradator |
13.2.2017, 20:57;
Ответить: Degradator
Сообщение
#5
|
|
( (SELECT id,summa1 as maxVal FROM table_name ORDER BY maxVal LIMIT 10 ) UNION ALL (select id,summa2 FROM table_name ORDER BY summa2 LIMIT 10 ) UNION ALL (SELECT id,summa3 FROM table_name ORDER BY summa3 LIMIT 10 ) ) as t1 ORDER BY maxVal DESC LIMIT 10 ; вот так должно работать |
|
|
Mist_hb
|
Сообщение
#6
|
|
Опять же не работает!
Но заглянув в мануал нашлось решение вариант был почти правильным) Решение ограничить каждый запрос лимитом это плюсик в карму за это спасибо) (SELECT id,summa1 as maxVal FROM gabl_resultplayers ORDER BY summa1 DESC LIMIT 10 )
UNION ALL (select id,summa2 FROM gabl_resultplayers ORDER BY summa2 DESC LIMIT 10 ) UNION ALL (SELECT id,summa3 FROM gabl_resultplayers ORDER BY summa3 DESC LIMIT 10 ) ORDER BY maxVal DESC LIMIT 10 ; |
|
|
Den1xxx |
14.2.2017, 12:49;
Ответить: Den1xxx
Сообщение
#7
|
|
|
|
|
Mist_hb
|
Сообщение
#8
|
|
|
|
|
Alcorn |
15.2.2017, 3:37;
Ответить: Alcorn
Сообщение
#9
|
|
SELECT id, summa1, summa2, summa3 FROM table_name ORDER BY GREATEST(summa1, summa2, summa3) DESC LIMIT 10
|
|
|
Mist_hb
|
Сообщение
#10
|
|
|
SELECT id, summa1, summa2, summa3 FROM table_name ORDER BY GREATEST(summa1, summa2, summa3) DESC LIMIT 10 GREATEST неподходит, так как он выбирает максимальные значения, а мне надо полный список хоть топ 10 будет занимать один человек. Тему можно закрывать решение уже найдено. Проблема решена) SELECT id,summa1 as maxVal FROM table_name UNION ALL select id,summa2 FROM table_name UNION ALL SELECT id,summa3 FROM table_name ORDER BY maxVal DESC LIMIT 10;
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Dao.AD: пуши, попсы и не только! ТОП монетизация и арбитраж. | Акция 100 % отчисления! | 90 | Daopush | 27320 | 19.4.2024, 18:27 автор: Daopush |
|
Мегамаркет. Скидка 1000 рублей при покупке от 5000 рублей на все, на первый заказ. Мегамаркет. Скидка 1000 рублей при покупке от 5000 рублей на все, на п |
7 | stu999 | 1756 | 31.3.2024, 11:19 автор: stu999 |
|
Продвижение сайтов в ТОП-1 за сутки. Бесплатный тест! | 13 | matias | 3757 | 26.3.2024, 19:53 автор: matias |
|
Нужно разносить телеграм каналы по разным аккаунтам? | 9 | Mixatraider | 1896 | 20.3.2024, 18:34 автор: Rebex |
|
Продвижение сайтов в ТОП Яндекса за 2 недели. Рост позиций и трафика Бесплатный тест |
19 | Konrod | 9889 | 18.3.2024, 10:04 автор: Konrod |
Текстовая версия | Сейчас: 24.4.2024, 0:49 |