MySQL підтримує змінні з іменами виду @ ім'я_змінної. Ім'я змінної може складатися з алфавітно-цифрових символів поточного набору, а також з _, $ і.
Змінні не повинні бути ініційовані. Вони містять NULL за замовчуванням і можуть зберігати ціле число, реальне або строкове значення. Всі змінні для поточного сеансу зв'язку будуть звільнені, коли сеанс зв'язку з сервером буде завершено. Всі змінні застосовуються лише до активного сеансу зв'язку. В інших сеансах можуть використовуватися змінні з тими ж самими іменами, але вони будуть вже самі по собі.
Ви можете встановлювати змінну через виклик SET:
А також встановлювати змінну в вираженні @variable: = expr, напрі¬мер так:
Тут треба використовувати синтаксис. = Тому, що символ = вже зарезервовано для порівнянь.
Змінні користувача можуть застосовуватися там, де допускаються вираження. Зверніть увагу, що в даний час вони не використовуються в контекстах, де явно потрібно число, наприклад в реченні LIMIT виклику SELECT.
В інструкції SELECT кожен вираз обчислено тільки тоді, коли воно надіслано користувачеві. Це означає, що в GROUP BY або ORDER BY ви не можете звернутися до вираження, яке включає змінні, встановлені в SELECT. Наприклад, така інструкція НЕ буде працювати, як ви очікуєте:
SELECT (@aa: = id) AS а, (@ аа + 3) AS b FROM table_name HAVING b = 5;
Причина: @aa буде містити не значення поточного рядка, а значення id попередньої прийнятої рядки.