TSQL选择一列等于另一列的位置

时间:2013-03-02 15:03:24

标签: sql sql-server select

我正在尝试根据项目在同一个表格中的位置创建搜索。

因此,如果我为列a123输入BoxNo之类的值,则会选择列Goeswith中同样为a123的所有值。以下代码是我的尝试,但不起作用。

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

谢谢

5 个答案:

答案 0 :(得分:2)

也许你的意思,

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

或者这个,

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

答案 1 :(得分:2)

如果你想要BoxNo和GoesWith的所有行具有相同的值,那么它就是这样的:

SELECT *
FROM Equipment
WHERE BoxNo = GoesWith

答案 2 :(得分:1)

如果您要在a123列中搜索BoxNo之类的所有项目:

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

如果你想在两个栏目中搜索a123

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

答案 3 :(得分:1)

我怀疑你的意思是'以及',因此OR:

从BoxNo ='a123'或GoesWith ='a123'的设备中选择*

如果您需要进一步限制添加......,请小心添加包围。

答案 4 :(得分:1)

您是否正在寻找所有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。*,您可以获得单个匹配的列表。