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

Po wykonaniu tego zapytania z zmienną set pojawia się ten błąd.Sposób zapisywania wyniku kwerendy w zmiennej przy użyciu 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 –

Odpowiedz

98

Otoczenie zaznaczane za pomocą nawiasów.

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

Czy to pod-zapytanie powinno zawierać tylko 1 wiersz i 1 kolumnę? 1. '# 1242 - Podzapytanie zwraca więcej niż 1 wiersz', 2. '# 1241 - Operand powinien zawierać 1 kolumnę (y)' – Shafizadeh

+0

SELECT @ v1; Ta linia nie działa dla mnie –

+0

@RajatGupta: gdzie to robisz? I zdefiniuj "nie działa". –

19

Dodatkowo, jeśli chcesz ustawić wiele zmiennych naraz jednym zapytaniu można użyć innej składni dla ustawiania zmiennych, które idzie tak: SELECT @varname:=value.

Praktyczny przykład:

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

użycie tego

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

przetestowane i workes porządku ...

+0

co oznacza nawias '[]' w tym zestawieniu? – alex

+0

nic to tylko znak zastępczy [] i po prostu wpisz wartość w pojedyncze cudzysłowy –

Powiązane problemy