2012-04-09 27 views
55
SET @v1 := SELECT COUNT(*) FROM user_rating; 
SELECT @v1 

Khi tôi thực hiện truy vấn này với biến số set, lỗi này được hiển thị.Cách lưu kết quả truy vấn bằng biến mysql

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 
+0

http://stackoverflow.com/questions/6081436/how-to- use-alias-as-field-in-mysql/6081523 # 6081523 –

Trả lời

98

Bao quanh mà chọn bằng dấu ngoặc đơn.

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

Truy vấn phụ đó có chứa 1 hàng và 1 cột không? 1. '# 1242 - Truy vấn con trả về nhiều hơn 1 hàng', 2. '# 1241 - Toán tử phải chứa 1 cột (s)' – Shafizadeh

+0

SELECT @ v1; Dòng này không hoạt động với tôi –

+0

@RajatGupta: bạn đang chạy nó ở đâu? Và xác định "không hoạt động". –

19

Ngoài ra, nếu bạn muốn thiết lập nhiều biến cùng một lúc bằng một truy vấn, bạn có thể sử dụng cú pháp khác để thiết lập các biến mà đi như thế này: SELECT @varname:=value.

Một ví dụ thực tế:

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

sử dụng này

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

thử nghiệm và workes tốt ...

+0

dấu ngoặc nào '[]' có nghĩa trong câu lệnh này? – alex

+0

không có gì nó chỉ là một giữ chỗ bỏ qua [] và chỉ cần đặt giá trị của bạn trong dấu nháy đơn –

Các vấn đề liên quan