2013-03-02 82 views
1

我試圖根據項目在同一個表中放在一起的位置來創建搜索。TSQL選擇其中一列等於另一列的地方

因此,如果我爲BoxNo列輸入類似a123的值,則選擇列Goeswith中的所有值,這些值也是a123。下面的代碼是我的嘗試,但不起作用。

SELECT * 
FROM Equipment 
WHERE (BoxNo LIKE '%') = GoesWith 

感謝

+0

'選擇*從設備的WHERE BoxNo = GoesWith'。 – danihp 2013-03-02 15:05:39

+1

你的問題很混亂,你可以給樣品記錄與期望的結果? – 2013-03-02 15:10:59

回答

1

也許你的意思是,

SELECT * 
FROM tableName 
WHERE 'a123' IN (BoxNo, GoesWith) 

也許這一點,

SELECT * 
FROM tableName 
WHERE BoxNo LIKE '%a123%' AND 
     BoxNo = GoesWith 
1

如果你要搜索的BoxNo柱像a123所有項目:

SELECT * From Equipment WHERE BoxNo LIKE '%a123%' 

如果你想在兩列搜索a123作者:

DECLARE @Search Varchar(50) = 'a123' 
SELECT * From Equipment WHERE BoxNo = @Search AND GoesWith = @Search 
2

如果你想去的地方BoxNo和GoesWith具有相同值的所有行則是這樣的:

SELECT * 
FROM Equipment 
WHERE BoxNo = GoesWith 
1

我懷疑你意味着 '以及',因此OR:

SELECT * FROM設備,其中BoxNo = 'A123' OR GoesWith = 'A123'

如果您需要進一步添加約束條件,請注意添加包圍...

0

您是否在尋找所有Box記錄中包含其他條目的普遍匹配? 如果是這樣,那麼你需要一個自連接(使用別名來識別記錄):

select 
    b.BoxNo, 
    g.GoesWith 
from 
    equipment as b 
inner join equipment as g on b.BoxNo = g.GoesWith 

這標識都具有匹配盒(和他們一起去的東西)的記錄。 更改爲左連接以包含不匹配的記錄。 如果Box有多個GoesWith條目,但通過返回DISTINCT b。*或DISTINCT g。*,您可以獲得多個匹配,您可以獲得單個匹配的列表。

相關問題