2013-05-13 2 views
0

Je reçois cette erreur avec le SQL ci-dessous:erreur SQL 512 en faisant emploi sql

sous-requête retourné plus de 1 valeur. Ceci n'est pas autorisé lorsque la sous-requête suit =,! =, <, < =,>,> = ou lorsque la sous-requête est utilisée comme expression.

Est-ce que quelqu'un sait comment je peux le résoudre?

use character 

DECLARE @guild_codex varchar(25) 
DECLARE @character_name0 varchar(40) 
DECLARE @user_no0 varchar (25), @id varchar (25) 
DECLARE @user_no varchar (25), @group_id varchar (25), @amount varchar (25) 
DECLARE @free_amount varchar(25), @2mx_Leader varchar(3), @2mx_member varchar (3) 

SET @2mx_Leader = 700 SET @2mx_member = 500 SET @id = (SELECT id from 
[PC-ID].[Cash].[dbo].[user_cash] where free_amount LIKE 0) SET 
@user_no = (SELECT user_no from [PC-ID].[Cash].[dbo].[user_cash] 
where free_amount LIKE 0) SET @group_id = (SELECT group_id from 
[PC-ID].[Cash].[dbo].[user_cash] where free_amount LIKE 0) SET 
@amount = (SELECT amount from [PC-ID].[Cash].[dbo].[user_cash] 
where free_amount LIKE 0) SET @free_amount = (SELECT free_amount from 
[PC-ID].[Cash].[dbo].[user_cash] where free_amount LIKE 0) SET 
@guild_codex = (SELECT guild_code from siege_info where siege_tag LIKE'Y') 

SET @character_name0 = (SELECT character_name from guild_char_info 
where guild_code LIKE @guild_codex and peerage_code LIKE 0) SET 
@user_no0 = (SELECT user_no from user_character where character_name 
LIKE @character_name0) 
use cash 
UPDATE user_cash SET 
[email protected]_Leader WHERE user_no = @user_no0 
+2

'SELECT TOP 1 * FROM' - ou similaire –

+0

SQL Server accuse votre code d'essayer de mettre plusieurs valeurs dans un simple, pas à la table, variable. Vous avez plusieurs 'SELECT's qui n'ont pas de clause' WHERE'. Certains d'entre eux renvoient plus d'une valeur? – HABO

+0

a ajouté toute la clause where mais j'ai toujours cette erreur: \ dans la dernière partie je veux définir la valeur @user_nox à toutes les lignes dans siege_no coloumn où tous les user_nox sont comme user_nox. comment je fais ça? –

Répondre

0

Plusieurs problèmes avec SQL

Pour affecter des valeurs pour plusieurs variables, la sélection de la même table, avec la même clause where, vous effectuez plusieurs voyages à la DB, alors qu'il peut être fait en un seul appel, comme celui-ci:

SELECT 
     @id = id, 
     @user_no = user_no, 
     @group_id = group_id, 
     @amount = amount, 
     @free_amount = free_amount 
    FROM [PC-ID].[Cash].[dbo].[user_cash] 
    WHERE free_amount LIKE 0 

Vous utilisez LIKE, qui pourrait renvoyer plusieurs lignes de données, comme indiqué dans votre message d'erreur. Essayez d'utiliser = si vous le pouvez. Sinon, essayez d'exécuter les instructions Select chargées de remplir vos variables pour voir si plus d'une ligne de données est retournée.

Raj

+0

Merci, il a travaillé, je n'obtenir cette erreur plus .. mais cette partie: utilisation cash MISE À JOUR user_cash SET montant = montant + @ 2mx_Leader OÙ user_no = @ user_no0 DonT vraiment travailler, il ajoute un certain montant au « montant colonne "sur toutes les lignes! semble comme la clause where ne fonctionne pas o.O –