Как перебрать таблицу и взять строку в MySQL? - PullRequest
0 голосов
/ 08 мая 2019

То, что я пытаюсь сделать, это перебрать все строки таблицы, взять по одной строке за раз и что-то с ней сделать. Как то так

BEGIN
    DECLARE x INT;
    DECLARE countmax INT; 
    DECLARE id INT;
    DECLARE name VARCHAR(255);
    SET x = 1;
    SET id = 0;
    SET countmax = (select count(*) from Appian.APPIAN_DATA);
    SET FOREIGN_KEY_CHECKS = 0;

    WHILE x < countmax DO
        SET name = (SELECT FULL_NAME
                    FROM Appian.APPIAN_DATA 
                    WHERE ID = x
                    );
        #do something with above result here later.
        SET x = x + 1;

    END WHILE;
    select name;

END

Сверху name возвращает ноль. Я проверил, правильно ли увеличивается x, и кажется, что все в порядке. Я хочу взять строку, где ID = x. Первый раз с использованием циклов в SQL, поэтому не уверен, что разрешено, а что нет. Однако я не видел людей, использующих селекторы внутри цикла, в основном манипулирующие данными и обновляющие строки. В конечном итоге целью будет создание временной таблицы и вставка в нее каждой строки после манипуляции. Для экспертов, что я тут делаю, что не могу вытащить данные из таблицы и присвоить их переменной? Редактировать: обновленный код стал более понятным

1 Ответ

0 голосов
/ 08 мая 2019

Отправленный код будет смотреть только на ID = 379, я полагаю, вы хотели использовать "WHERE ID = x".

Кроме того, вы обычно можете выполнять то, что вы хотите, без необходимости использовать цикл, но если вы настаиваете на итеративном программировании, рассмотрите вместо этого изучение курсоров.Он позаботится о мелких деталях в цикле while для вас с гораздо более простым синтаксисом.

https://dev.mysql.com/doc/refman/8.0/en/cursors.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...