Як зберігати результат запиту у змінній за допомогою mysql


91
SET @v1 := SELECT COUNT(*) FROM user_rating;
SELECT @v1

Коли я виконую цей запит із setзмінною, відображається ця помилка.

Error Code : 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 'SELECT count(*) FROM user_rating' at line 1

Execution Time : 00:00:00:000
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:000

(1 row(s) returned)
Execution Time : 00:00:00:343
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:343

Відповіді:


147

Оточіть вибраний текст дужками.

SET @v1 := (SELECT COUNT(*) FROM user_rating);
SELECT @v1;

12
Чи повинен цей підзапит містити лише 1 рядок і 1 стовпець? 1. #1242 - Subquery returns more than 1 row , 2.#1241 - Operand should contain 1 column(s)
Шафізаде

1
@RajatGupta: де ти це запускаєш? І визначте "не працює".
Серхіо Туленцев

2
@Shafizadeh: так, цей підзапит повинен повертати лише один рядок і стовпець
Серхіо Туленцев

Не працює у мене, спробував на phpmyadmin mysql. З'являється помилка із запитанням "Нову інструкцію знайдено, але між нею та попередньою не існує роздільника" (переклад з німецької).
Чорний

1
Здається, що повернене значення має бути одне, а не перелік цінностей
Віктор С

34

Крім того, якщо ви хочете встановити кілька змінних одночасно одним запитом, ви можете використовувати інший синтаксис для установки змінних, виглядає наступним чином : SELECT @varname:=value.

Практичний приклад:

SELECT @total_count:=COUNT(*), @total_price:=SUM(quantity*price) FROM items ...

8

використовуй це

 SELECT weight INTO @x FROM p_status where tcount=['value'] LIMIT 1;

перевірено і працює чудово ...


що означає дужки []в цьому висловлюванні?
amin

нічого, це просто пропущений заповнювач [] і просто вкажіть значення в одинарних лапках
Аман Маурія

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.