Hướng dẫn declare variable in mysql select query - khai báo biến trong truy vấn chọn mysql

Tôi muốn chọn một giá trị duy nhất vào một biến. Tôi đã cố gắng theo dõi:

DECLARE myvar INT(4);

- Ngay lập tức trả về một số lỗi cú pháp.

SELECT myvalue 
  FROM mytable 
 WHERE anothervalue = 1;

- Trả về một số nguyên duy nhất

SELECT myvalue 
  INTO myvar 
  FROM mytable 
 WHERE anothervalue = 1;

- Không hoạt động, cũng đã thử @MyVar

Có thể sử dụng khai báo bên ngoài các thủ tục hoặc chức năng được lưu trữ?

Có lẽ tôi chỉ không nhận được khái niệm về các biến người dùng ... Tôi vừa thử:

SELECT myvalue INTO @var FROM `mytable` WHERE uid = 1;
SELECT @var;

... mà hoạt động giống như nó. Nhưng nếu tôi chạy từng truy vấn tại một thời điểm, tôi chỉ nhận được @var null.

Hướng dẫn declare variable in mysql select query - khai báo biến trong truy vấn chọn mysql

hỏi ngày 19 tháng 6 năm 2010 lúc 10:21Jun 19, 2010 at 10:21

Matt BannertMatt BannertMatt Bannert

26.8K36 Huy hiệu vàng140 Huy hiệu bạc203 Huy hiệu đồng36 gold badges140 silver badges203 bronze badges

Tôi đã gặp phải vấn đề tương tự, nhưng tôi nghĩ rằng tôi biết điều gì gây ra sự nhầm lẫn. Nếu bạn sử dụng Trình phân tích truy vấn MySQL, bạn có thể làm điều này tốt thôi:

SELECT myvalue 
INTO @myvar 
FROM mytable 
WHERE anothervalue = 1;

Tuy nhiên, nếu bạn đặt cùng một truy vấn đó vào MySQL Workbench, nó sẽ gây ra lỗi cú pháp. Tôi không biết tại sao họ sẽ khác, nhưng họ là như vậy.

Để giải quyết vấn đề trong MySQL Workbench, bạn có thể viết lại truy vấn như thế này:

SELECT @myvar:=myvalue
FROM mytable
WHERE anothervalue = 1;

Hướng dẫn declare variable in mysql select query - khai báo biến trong truy vấn chọn mysql

informatik01

15.8k10 Huy hiệu vàng73 Huy hiệu bạc102 Huy hiệu Đồng10 gold badges73 silver badges102 bronze badges

Đã trả lời ngày 7 tháng 9 năm 2011 lúc 18:46Sep 7, 2011 at 18:46

Tim Gautiertim GautierTim Gautier

Phim thương hiệu vàng 27,9K55 gold badges48 silver badges52 bronze badges

3

Cuối cùng, một thủ tục được lưu trữ là giải pháp cho vấn đề của tôi.

Đây là những gì đã giúp:

DELIMITER //

CREATE PROCEDURE test ()
BEGIN
  DECLARE myvar DOUBLE;
  SELECT somevalue INTO myvar FROM mytable WHERE uid = 1;

  SELECT myvar;
END//

DELIMITER ;

call test();

Hướng dẫn declare variable in mysql select query - khai báo biến trong truy vấn chọn mysql

informatik01

15.8k10 Huy hiệu vàng73 Huy hiệu bạc102 Huy hiệu Đồng10 gold badges73 silver badges102 bronze badges

Đã trả lời ngày 7 tháng 9 năm 2011 lúc 18:46Jun 19, 2010 at 11:57

Matt BannertMatt BannertMatt Bannert

26.8K36 Huy hiệu vàng140 Huy hiệu bạc203 Huy hiệu đồng36 gold badges140 silver badges203 bronze badges

1

Tôi đã gặp phải vấn đề tương tự, nhưng tôi nghĩ rằng tôi biết điều gì gây ra sự nhầm lẫn. Nếu bạn sử dụng Trình phân tích truy vấn MySQL, bạn có thể làm điều này tốt thôi:

Tuy nhiên, nếu bạn đặt cùng một truy vấn đó vào MySQL Workbench, nó sẽ gây ra lỗi cú pháp. Tôi không biết tại sao họ sẽ khác, nhưng họ là như vậy.

Để giải quyết vấn đề trong MySQL Workbench, bạn có thể viết lại truy vấn như thế này:

15.8k10 Huy hiệu vàng73 Huy hiệu bạc102 Huy hiệu Đồng

Đã trả lời ngày 7 tháng 9 năm 2011 lúc 18:46Sep 9, 2014 at 21:51

Tim Gautiertim GautierGarr Godfrey

Phim thương hiệu vàng 27,9K52 gold badges23 silver badges20 bronze badges

2

Cuối cùng, một thủ tục được lưu trữ là giải pháp cho vấn đề của tôi.

SET @myvar := (SELECT somevalue INTO myvar FROM mytable WHERE uid=1);

SELECT myvar;

Đây là những gì đã giúp:Oct 13, 2014 at 2:33

1

Đã trả lời ngày 19 tháng 6 năm 2010 lúc 11:57

Những câu trả lời này không bao gồm nhiều biến rất tốt.Jun 19, 2010 at 10:26

1

Thực hiện gán nội tuyến trong một quy trình được lưu trữ khiến những kết quả đó cũng được gửi lại trong kết quả. Điều đó có thể gây nhầm lẫn. Để sử dụng chọn ... thành cú pháp với nhiều biến bạn làm:

http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

SELECT a, b INTO @a, @b FROM mytable LIMIT 1;

http://dev.mysql.com/doc/refman/5.0/en/select-into-statement.html

Example:

mysql> SELECT 1 INTO @var;
Query OK, 1 row affected (0.00 sec)

mysql> SELECT @var;
+------+
| @var |
+------+
| 1    |
+------+
1 row in set (0.00 sec)

Việc chọn phải trả về chỉ 1 hàng, do đó giới hạn 1, mặc dù điều đó không phải lúc nào cũng cần thiết.Jun 19, 2010 at 10:36

Đã trả lời ngày 9 tháng 9 năm 2014 lúc 21:51Mike

Garr Godfreygarr Godfrey2 gold badges41 silver badges65 bronze badges

3

7.7122 Huy hiệu vàng23 Huy hiệu bạc20 Huy hiệu đồng

SELECT myvalue 
  FROM mytable 
 WHERE anothervalue = 1;
0

Bạn cũng có thể sử dụng bộ thay vì khai báo

Đã trả lời ngày 13 tháng 10 năm 2014 lúc 2:33May 17, 2014 at 23:11

Theo các tài liệu MySQL tuyên bố chỉ hoạt động khi bắt đầu ... khối kết thúc như trong một chương trình được lưu trữ.Tman

Đã trả lời ngày 19 tháng 6 năm 2010 lúc 10:261 silver badge1 bronze badge

Bạn không cần phải khai báo một biến trong MySQL. Loại của biến được xác định tự động khi lần đầu tiên được gán một giá trị. Loại của nó có thể là một trong những: số nguyên, thập phân, dấu phẩy động, chuỗi nhị phân hoặc không phân giải hoặc giá trị null. Xem tài liệu biến do người dùng xác định để biết thêm thông tin:

SELECT myvalue 
  FROM mytable 
 WHERE anothervalue = 1;
3

Bạn có thể sử dụng Chọn ... vào để gán các cột cho một biến:NOT use

SELECT myvalue 
  FROM mytable 
 WHERE anothervalue = 1;
4 global variables like:

SELECT myvalue 
  FROM mytable 
 WHERE anothervalue = 1;
5

Đã trả lời ngày 19 tháng 6 năm 2010 lúc 10:36

MikemikeJan 30, 2014 at 3:05

b.b3rn4rdb.b3rn4rdb.b3rn4rd

Phù hiệu vàng 21K241 Huy hiệu bạc65 Huy hiệu đồng2 gold badges40 silver badges54 bronze badges

Tôi đang sử dụng phiên bản 6 (Cộng đồng Workbench (GPL) của MySQL (GPL) cho Windows phiên bản 6.0.9 Bản sửa đổi 11421 Build 1170) trên Windows Vista. Tôi không có vấn đề với các tùy chọn sau. Có lẽ họ đã sửa nó vì những người này đã gặp vấn đề ba năm trước.

SELECT myvalue 
  FROM mytable 
 WHERE anothervalue = 1;
1

Tất cả các tùy chọn ở trên cho tôi một kết quả chính xác.

Cheers.

Hướng dẫn declare variable in mysql select query - khai báo biến trong truy vấn chọn mysql

Đã trả lời ngày 17 tháng 5 năm 2014 lúc 23:11

Tmantman2 gold badges27 silver badges49 bronze badges

Huy hiệu 611 Bạc1 Huy hiệu ĐồngNov 30, 2016 at 10:23

Điều đáng chú ý là mặc dù thực tế là bạn có thể

SELECT myvalue 
  FROM mytable 
 WHERE anothervalue = 1;
2 các biến toàn cầu như:

Bạn không thể sử dụng các biến toàn cầu

SELECT myvalue 
  FROM mytable 
 WHERE anothervalue = 1;
4 như:Aug 13, 2016 at 2:45

Có vẻ như nó không phải là một lỗi. Tôi hy vọng nó sẽ hữu ích cho ai đó ...HiMan

Đã trả lời ngày 30 tháng 1 năm 2014 lúc 3:052 bronze badges

1

8.2042 Huy hiệu vàng40 Huy hiệu bạc54 Huy hiệu đồng

Đối với những người chạy trong các vấn đề như vậy ngay bây giờ, chỉ cần cố gắng đặt bí danh cho bảng, điều này nên là thủ thuật, ví dụ:Jan 20, 2020 at 12:40

Hướng dẫn declare variable in mysql select query - khai báo biến trong truy vấn chọn mysql

Làm cách nào để khai báo một biến được chọn trong truy vấn MySQL?

Cú pháp để gán giá trị cho biến SQL trong truy vấn chọn là @ var_name: = value, trong đó var_name là tên biến và giá trị là giá trị mà bạn đang truy xuất. Biến có thể được sử dụng trong các truy vấn tiếp theo bất cứ nơi nào cho phép biểu thức, chẳng hạn như trong một mệnh đề WHERE hoặc trong một câu lệnh chèn.@ var_name := value , where var_name is the variable name and value is a value that you're retrieving. The variable may be used in subsequent queries wherever an expression is allowed, such as in a WHERE clause or in an INSERT statement.

Chúng ta có thể khai báo biến trong truy vấn chọn không?

Chọn @Local_Varable thường được sử dụng để trả về một giá trị duy nhất vào biến.Tuy nhiên, khi biểu thức là tên của một cột, nó có thể trả về nhiều giá trị.Nếu câu lệnh Chọn trả về nhiều hơn một giá trị, biến được gán giá trị cuối cùng được trả về.. However, when expression is the name of a column, it can return multiple values. If the SELECT statement returns more than one value, the variable is assigned the last value that is returned.

Chúng ta có thể khai báo biến trong truy vấn MySQL không?

Bạn có thể khai báo một biến bằng cách sử dụng @anyvariablename là biến phiên.Để tạo một biến phiên, bạn cần sử dụng lệnh set.. To create a session variable, you need to use SET command.

Làm thế nào để bạn đặt một biến trong một truy vấn?

Để gán một giá trị cho một biến, hãy sử dụng câu lệnh SET.Đây là phương pháp ưa thích để gán một giá trị cho một biến.Một biến cũng có thể có một giá trị được gán bằng cách được tham chiếu trong danh sách chọn của câu lệnh CHỌN.use the SET statement. This is the preferred method of assigning a value to a variable. A variable can also have a value assigned by being referenced in the select list of a SELECT statement.