2014-02-13 90 views
0

我有2個表。例如: -SQL查詢 - 選擇包含不同表中的數據的行

table1: 

|Alias1|Alias2  |Alias3| 
--------------------- 
|qaz | **abc**def |wsx | 
|edc |rfv   |tgb | 

table2: 

|Alias1 |Alias2 |Alias3| 
--------------------- 
|**abc** | qwe |rty | 
|zxc  |zxc |vbn | 

我想在那裏的table2alias1包含在Alias2table1table1只顯示行?

+7

這是偉大的。你有什麼嘗試?這不是一個硬性SQL查詢。 –

+2

非常簡單直接加入..so問題是什麼 – Sankara

+0

只是爲了澄清我認爲他使用「包含」一詞意味着他正在尋找部分匹配。所以它不僅僅是這兩個領域的內在聯繫。 –

回答

1
select * from table1 t1 
    where exists ( select 1 from table2 t2 
         where t2.Alias1 = t1.Alias2) 
2
SELECT t1.* 
FROM table1 t1 
INNER JOIN table2 t2 on t1.Alias2=t2.alias1 
0

嘗試:

select * 
    from table1 
where exists 
(select 'x' 
      from table2 
     where table1.alias2 like concat('%', table2.alias1, '%')) 
0

我希望下面的查詢將有助於

CREATE TABLE #Table1 (
         Alias1 VARCHAR(35), 
         Alias2 VARCHAR(35), 
         Alias3 VARCHAR(35) 
         ) 
Go 

CREATE TABLE #Table2 (
         Alias1 VARCHAR(35), 
         Alias2 VARCHAR(35), 
         Alias3 VARCHAR(35) 
         ) 
GO 
INSERT INTO #Table1(Alias1,Alias2,Alias3) 
SELECT 'qaz','**abc**','wsx' 
UNION ALL 
SELECT 'edc','rfv','tgb' 
GO 
INSERT INTO #Table2(Alias1,Alias2,Alias3) 
SELECT '**abc**','qwe','rty' 
UNION ALL 
SELECT 'zxc','zxxc','vbn' 
GO 
SELECT 
     t1.Alias1, 
     t1.Alias2, 
     t1.Alias3 
FROM #Table1 t1 
JOIN #Table2 t2 
ON t1.Alias2 = t2.Alias1 
GO 
DROP TABLE #Table1 
DROP TABLE #Table2 
+0

他的第一行table1(alias2的值)顯示'** abc ** def',而不僅僅是'** abc **',因此查詢在他的示例中不會產生匹配。他不在尋找完全匹配。這也是Pieter B發佈的相同查詢。 –

+0

歡呼聲指出隊友。 –

相關問題