同一个table的所有记录被一个字段释放但被另一个字段查询 - sqlserver

All records of the same table reladed by a field but queried by anothe field - sqlserver

数据库:SQLSERVER 我有这个 table:

id-description-code
1 -fdsdfsf     -A
2 -ghggh       -A
3 -tytytyty    -B
4 -hjhjydx     -A

我需要一个查询 "filtering on one id"(例如“2”)returns 我所有相同 table 的记录都与 "code"

相关

查找 id=2 结果应该是:

1 -fdsdfsf     -A
2 -ghggh       -A
4 -hjhjydx     -A

我写了这两个有效的查询:

SELECT * FROM TABLE S2 INNER JOIN
(select * from TABLE 
  WHERE ID=2) S1
  ON S1.CODE=S2.CODE


SELECT * FROM TABLE S2
WHERE S2.CODE IN (SELECT CODE FROM  TABLE S1 WHERE  ID =2)

你能否给我其他查询示例(使用不同的运算符,例如 CROSS APPLY、EXIST 或其他)以获得相同的结果

为什么要让它变得比需要的更复杂?

select * from sometable where code = 
(select code from sometable where id=2)

这似乎是一个奇怪的请求,只是在寻找返回相同信息的可能方式。但是您似乎跳过了最简单的方法。请注意我是如何发布消耗性数据以便其他人可以编写查询的?你以后应该这样做。

declare @Something table
(
    ID int
    , description varchar(20)
    , CODE char(1)
)

insert @Something values
(1, 'fdsdfsf', 'A')
,(2, 'ghggh', 'A')
,(3, 'tytytyty', 'B')
,(4, 'hjhjydx', 'A')


select *
from @Something s
join @Something s2 on s2.CODE = s.CODE
where s.ID = 2

或使用 CROSS APPLY

select *
from @Something s
cross apply (select * from @Something s2 where s2.CODE = s.CODE) x
where s.ID = 2