Nano Hash - криптовалюты, майнинг, программирование

Проблема с использованием функции ROW_NUMBER() в MariaDB

Я хотел бы иметь столбец с номером строки в выводе таблицы выбора, но когда я пытаюсь использовать функцию ROW_NUMBER(), MariaDB выдает синтаксическую ошибку. В Интернете есть несколько ссылок (http://www.mysqltutorial.org/mysql-window-functions/mysql-row_number-function/ ), но пока мне это не удалось. Вот фрагмент моей таблицы MariaDB:

+---------------------+------------+  
| date_reading        | temp_patio |
|---------------------+------------+  
| 2019-09-03 06:26:00 |       17.6 |  
| 2019-09-03 06:33:00 |       17.5 |  
| 2019-09-03 06:40:00 |       17.5 |  
| 2019-09-03 06:46:00 |       17.5 |  
| 2019-09-03 06:53:00 |       17.4 |  
| 2019-09-03 07:00:00 |       17.4 |  
| 2019-09-03 07:07:00 |       17.4 |  
| 2019-09-03 07:13:00 |       17.4 |

В документе говорится, что параметры для параметра "OVER()" являются необязательными, но я пробовал как с предложением OVER(), так и без него, а также с < и без него. strong>ORDER BY.

Вот моя команда выбора:

выберите ROW_NUMBER() OVER ( ) как Therow, * from MyData, где Date_Reading > Now()- INTERVAL 3 HOUR;

При желании я пробовал без предложения OVER (), а также с использованием OVER ( ORDER BY ID).

Моя версия MariaDB

Версия сервера: 10.1.38-MariaDB-0+deb9u1 Raspbian 9.0

Кто-нибудь может помочь?... РДК


  • Согласно официальной документации MariaDB для ROW_NUMBER, он поддерживается только в версиях 10.2 и более поздних. Так что ваша версия может даже не поддерживать ROW_NUMBER. 03.09.2019
  • какая у вас версия марии db 03.09.2019
  • Хорошо, похоже, мне нужно обновить. Это удивительно, так как я установил его на этот Raspberry Pi через обычный sudo apt-get install mariadb-server около недели назад. Их библиотеки могут отставать? Каков правильный процесс установки 10.2 на этот Pi? И есть ли проблемы с использованием новой версии? 03.09.2019

Ответы:


1

Оконные функции поддерживаются только в версии MariaDB 10.2 или выше.

MariaDB 10.2 или выше:

SELECT 
    MyData.*,
    ROW_NUMBER() OVER ( ORDER BY ID ) as Therow
FROM MyData 
WHERE Date_Reading > Now()- INTERVAL 3 HOUR;

Для более низкой версии:

Мы можем использовать переменную MySQL для выполнения этой работы.

SELECT 
    MyData.*, 
    @row_num:= @row_num + 1 AS Therow
FROM 
    MyData, 
    (SELECT @row_num:= 0 AS num) AS c
WHERE Date_Reading > Now()- INTERVAL 3 HOUR
ORDER BY test.`date` ASC;
03.09.2019
  • Спасибо, пока я не получу обновленную версию, она работает как шарм. 03.09.2019
  • Обратите внимание, что этот трюк с @row_num может не сработать, если вы упорядочиваете по двум столбцам. 30.01.2020
  • Как мне заставить это создать столбец в моей таблице, чтобы он был в моей таблице базы данных, а не на выходе? 26.05.2021
  • Выберите PK и row_number для этого вывода и снова присоединитесь к той же таблице с помощью PK (первичный ключ) и используйте оператор обновления. 02.06.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..