同一个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
数据库: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