declare @id varchar(12) = 'user1' declare @var int = (select count(*) from table1 where [user] = @id) select * from table1 where [user] = @id or @var = 0
6 Réponses :
Vous devrez peut-être faire un chèque d'abord quelque chose comme celui-ci
C'est faisable. Mais je finirai par manger de la RAM juste en sélectionnant le nombre de données avant de faire le code. Nous parlons de gros nombre de données ici.
Ajouter un index sur la colonne utilisateur
declare @tab table (id int , value varchar(10)) declare @id int = 4 insert into @tab select 1,'Ajay' union all select 2,'Ajay1' union all select 3,'Ajay2' union all select 4,'Ajay3' union all select 5,'Ajay4' select * from @tab where id = case when exists (select * from @tab where id = @id) then @id else id end
Il ne va pas bien. Cela a fini par sélectionner toutes les données.
c'est bon. J'espère que le cas échéant est une tâche facile pour mon serveur lorsque ces données deviennent plus grandes et plus grandes. Merci
@ajespiritu - Créez un index sur la colonne utilisateur. Cela sera alors plus rapide lorsque la table devient grande avec plus d'utilisateurs.
DECLARE @id VARCHAR(5) = 'user1';
--DECLARE @id VARCHAR(5) = 'user5';
WITH UsersAndDepartments
AS ( SELECT *
FROM ( VALUES ( 'dept1', 'user1'), ( 'dept2', 'user2'),
( 'dept3', 'user3'), ( 'dept4', 'user4') ) x ( [department], [user] )
)
SELECT *
FROM UsersAndDepartments ud1
WHERE ud1.[user] =
CASE
WHEN EXISTS ( SELECT 1 FROM UsersAndDepartments ud2 WHERE ud2.[user] = @id ) THEN @id
ELSE ud1.[user]
END
The above just checks on user column if any row exists for an id, else matches on all.
Merci. Vous avez eu la même réponse que @ajay. Il vient de le faire tôt.
Acclamations. le monde appartient à ceux qui se lèvent tôt!
Vous pouvez essayer ceci:
DECLARE @id varchar(12) = 'user1' IF EXISTS(SELECT COUNT(*) FROM table1 WHERE [user] = @id) BEGIN SELECT * FROM table1 WHERE [user] = @id END ELSE BEGIN SELECT * FROM table1 END
Vous pouvez avoir un plan d'exécution légèrement meilleur si vous séparez la logique "si existent" de la requête réelle:
Je ferais cela avec un simple En général, vous voulez Évitez les Je suggérerais: p> ou code>, pas un cas code> expression code> dans le où code>. code> expressions dans le où code> clause pour plusieurs raisons: p>
et code>, ou code>, et non code>) rend la logique plus difficile pour les gens à suivre. li>
Quelle est votre question ici exactement? Pouvez-vous expliquer ce que sont ces scénarios? Qu'est-ce que tu as essayé jusque-là?
J'ai besoin d'une requête qui sélectionnera toutes les données si l'utilisateur n'existe pas dans la table. S'il y a, sélectionnez uniquement uniquement les données correspondant. Je vais éditer mon contenu. J'espère que cela aiderait.
Aucune aide. Je ne peux pas faire une requête qui serait plus utile. laissez-moi donner à ma requête existante