2016-04-21 9 views
1

Ich weiß, dass dies zu einem mehrdeutigen Fehler führen wird, da Name in beiden Tabellen vorhanden ist. Aber Ich möchte den Namen aus diesen beiden Tabellen auswählen. Name ist eine Spalte in t_1 und t_2. Kann ich aus zwei Tabellen wählen? Gibt es eine Möglichkeit für mich, den Namen zwischen zwei Tabellen auszuwählen und eine einzelne Datenspalte zurückzugeben?Ist diese Abfrage möglich? SELECT 2 Tabellen wie

SELECT Name 
FROM t_1, t_2 
WHERE Name LIKE '%' + @USER + '%' 
+1

Verwenden 'UNION ALL' /' UNION', –

+0

Dank felix, sind die Antworten alle richtig, aber ich werde die erste Antwort von William annehmen, nur auf Abstimmung über die anderen, da der Spalt 47secs ist –

+0

Es gibt viele Antworten, die auf UNION oder UNION ALL hindeuten. Beachten Sie, dass UNION nur eine eindeutige Liste zurückgibt, und um dies zu erzeugen, muss SQL Server eine eindeutige Sortierung durchführen. Dies kann oft viel teurer sein als UNION ALL. Wenn Sie die eindeutige Sortierung nicht benötigen, sollten Sie nicht UNION über UNION ALL wählen. – DatumPoint

Antwort

4

Sie könnten versuchen, eine UNION;

SELECT Name 
FROM t_1 
WHERE Name LIKE '%' + @USER + '%' 
UNION 
SELECT Name 
FROM t_2 
WHERE Name LIKE '%' + @USER + '%' 

Hinweis, UNION ALL können auch verwendet werden, wird dies auch mehrere Instanzen des gleichen Namens zurück, wenn sie vorhanden sind. Verwenden Sie, was Ihren Anforderungen entspricht.

+0

danke, ich kann diese Antwort nach 10 Minuten –

+0

akzeptieren Keine Sorge, danke. – William

1
SELECT Name 
    FROM t_1 
    WHERE Name LIKE '%' + @USER + '%' 
UNION ALL 
SELECT Name 
    FROM t_2 
    WHERE Name LIKE '%' + @USER + '%' 
1

Sie müssen sich kombinieren mit UNION

SELECT Name 
FROM t_2 
WHERE Name LIKE '%' + @USER + '%' 
union 
SELECT Name 
FROM t_2 
WHERE Name LIKE '%' + @USER + '%' 
0

Sie können mit Aliasing.

SELECT t1.Name AS 'NAME-T1', t2.Name AS 'NAME-T2' 
FROM t_1 AS t1, t_2 AS t2 
WHERE t1.Name LIKE '%' + @USER + '%' OR t2.Name LIKE '%' + @USER + '%' 
Verwandte Themen