
在 StackOverflow 上查看了一些答案后,這似乎不適用于 SQL Server。但通常用戶會遵循EXISTS.
我發現的例子都是針對子查詢的(相關的)。而這只是一個相交陳述句。所以,我希望有人可以告訴我如何使用常規子查詢實作多列。像這樣的東西:
select *
from person.person
where EXISTS (
select *
from (
(
select top 10 businessEntityid
from v
INTERSECT
select businessEntityid
from Person.Person
)
) as a
)
-
select *
from person.person
where EXISTS (
select * from (
(
select top 10 businessEntityid, firstname, lastname
from v
INTERSECT
select businessEntityid, firstname, lastname
from Person.Person
)
) as a
)
盡管如此,這似乎不起作用 - 子查詢僅回傳 10 個不同的 businessid,而整個查詢回傳所有內容 - 幾乎就像甚至沒有使用子查詢一樣。
所以EXISTS在這里解釋一下會很棒。
謝謝
uj5u.com熱心網友回復:
您嘗試的查詢沒有多大意義。我不知道你為什么在top那里,也不知道你為什么交換了intersect表格的順序
從 Cookbook 中清除查詢后,你有這個
select
emp.no,
emp.name,
emp.job,
emp.salary,
emp.deptno
from emp
where (emp.name, emp.job, emp.salary) in (
select
emp.name, emp.job, emp.salary
from emp
intersect
select
v.name, v.job, v.salary
from v
)
這可以EXISTS通過將比較移動到子查詢內部來簡單地轉換為。你可以這樣做INTERSECT
where exists (
select
emp.name, emp.job, emp.salary
intersect
select
emp2.name, emp2.job, emp2.salary
from emp2
intersect
select
v.name, v.job, v.salary
from v
)
或使用三個=等式謂詞
where exists (
select
emp2.name, emp2.job, emp2.salary
from emp2
where emp2.name = emp.name
and emp2.job = emp.job
and emp2.salary = emp.salary
intersect
select
v.name, v.job, v.salary
from v
)
這兩者之間實際上存在差異,在于它們如何處理空值,但結果在不可為空的列上是相同的。
但是,對此似乎有一種更簡單的方法。該查詢似乎只是要求來自 的匹配結果v,因此您可以洗掉額外的查詢emp
where exists (
select
emp.name, emp.job, emp.salary
intersect
select
v.name, v.job, v.salary
from v
)
或與 =
where exists (select 1
from v
where v.name = emp.name
and v.job = emp.job
and v.salary = emp.salary
)
最后一個版本通常是為 SQL Server 撰寫的。
uj5u.com熱心網友回復:
這個查詢
select empno,ename,job,sal,deptno
from emp
where (ename,job,sal) in (
select ename,job,sal from emp
intersect
select ename,job,sal from V
)
相當于
select empno,ename,job,sal,deptno
from emp
where (ename,job,sal) in ( select ename,job,sal from V )
其中,與 EXISTS 將是
select empno,ename,job,sal,deptno
from emp e
where exists (
select *
from V
where ename = e.ename
and job = e.job
and sal = e.sal
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/380117.html
標籤:sql sql-server 查询语句
下一篇:SQLJOIN省略了一些欄位
