2017-05-16 1 views
-2

Je ne sais pas si cela est possible en fonction de ce que j'ai recherché en ligne. Mais je veux juste vérifier pour être sûr.Existe-t-il un moyen de joindre un paramètre à une table?

Si j'ai un paramètre tel que:

declare @Person nvarchar(4000) 
set @Person = '1234567' 

et moi avons une table appelée [People], alors je peux joindre les deux ensemble?

Quelque chose comme:

SELECT * FROM [People] t1 JOIN @Person t2 ON (t1.ID = t2.ID) 

Une telle chose est possible et si oui quelqu'un peut-il s'il vous plaît fournir la syntaxe ou un exmaple?

+0

le paramètre est une valeur scalaire. pourquoi voulez-vous le rejoindre et qu'attendez-vous comme résultat? aussi quel est le numéro 1234567? est-ce l'ID? évidemment vous pouvez déclarer une variable de table et la remplir et la joindre à votre table. Cela me semble étrange. – FLICKER

+0

Pour l'auditoire: [this] (http://stackoverflow.com/questions/44008157/exists-in-filter-returning-too-many-values) et [this] (http://stackoverflow.com/questions/ 43989977/too-many-parameter-values-slowing-down-query) forment l'arrière-plan sans lequel cette question n'a guère de sens. Toutefois, ... . La balise 'ssms' est, bien sûr, fausse. Et le logiciel de base de données est implicite mais non déclaré. – HABO

+0

@HABO a correctement étiqueté ce post comme étant le troisième d'une série par quelqu'un qui n'est pas disposé à apprendre ou à lire des réponses. Ne perds pas ton temps ici, ils n'écoutent pas. –

Répondre

0

En utilisant ces données d'échantillon:

CREATE TABLE dbo.People (id int, peopleInfo nvarchar(4000)); 
INSERT dbo.People VALUES (123, 'joe'), (223, 'sally'), (323, 'Mary'); 

Vous pouvez faire ceci:

declare @Person nvarchar(4000) = '323' 

SELECT t1.* 
FROM dbo.People t1 
JOIN (VALUES (@Person)) t2(id) ON t1.ID = t2.ID; 

Mais pourquoi ne pas le faire cela?

SELECT t1.* 
FROM dbo.People t1 
WHERE t1.id = @Person;