Sorgu Sonucu mysql kullanılarak değişkende nasıl saklanır


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

Bu sorguyu setdeğişken ile çalıştırdığımda bu hata gösteriliyor.

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

Yanıtlar:


149

Seçimi parantezle çevreleyin.

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

12
Bu alt sorgu sadece 1 satır ve 1 sütun mu içermelidir? 1. #1242 - Subquery returns more than 1 row , 2.#1241 - Operand should contain 1 column(s)
Shafizadeh

1
@RajatGupta: Onu nerede çalıştırıyorsun? Ve "çalışmıyor" u tanımlayın.
Sergio Tulentsev

3
@Shafizadeh: evet, bu alt sorgu yalnızca bir satır ve sütun döndürmeli
Sergio Tulentsev

1
@Siyah: Belki diğer cevaplardan bazıları işe yarayacaktır.
Sergio Tulentsev

2
Görünüşe göre dönüş değeri bir değer listesi değil, bir olmalı
Victor S

35

Bir sorguda seferde birden çok değişkeni ayarlamak istiyorsanız Ek olarak, böyle gider değişkenleri ayarlamak için diğer sözdizimi kullanabilirsiniz: SELECT @varname:=value.

Pratik bir örnek:

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

8

bunu kullan

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

test edildi ve iyi çalışıyor ...


[]Bu ifadede parantez ne anlama geliyor?
amin

hiçbir şey sadece bir yer tutucu atla [] ve değerinizi tek tırnak içine koyun
Aman Maurya

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.