1樓:心平氣和
1、select a.* from tb a where exists(select 1 from tb where name = a.name ) ,exists返回真假,即exists括號中的判斷是真,則返回1,否則返回0。
2、例如exists的執行流程:select * from t1 where exists ( select null from t2 where y = x )可以理解為: for x in ( select * from t1 ) loop if ( exists ( select null from t2 where y = x.
x ) then output the record end if end loop。
拓展資料:
1、sql語言,是結構化查詢語言(structured query language)的簡稱。sql語言是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理關聯式資料庫系統;同時也是資料庫指令碼檔案的副檔名。
2、sql語言是高階的非過程化程式語言,允許使用者在高層資料結構上工作。它不要求使用者指定對資料的存放方法,也不需要使用者瞭解具體的資料存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的結構化查詢語言作為資料輸入與管理的介面。sql語言語句可以巢狀,這使他具有極大的靈活性和強大的功能。
3、結構化查詢語言sql(structured query language)是最重要的關聯式資料庫操作語言,並且它的影響已經超出資料庫領域,得到其他領域的重視和採用,如人工智慧領域的資料檢索,***軟體開發工具中嵌入sql的語言等。
4、sql 是2023年10 月由美國國家標準局(ansi)通過的資料庫語言美國標準,接著,國際標準化組織(iso)頒佈了sql正式國際標準。2023年4月,iso提出了具有完整性特徵的sql89標準,2023年11月又公佈了sql92標準,在此標準中,把資料庫分為三個級別:基本集、標準集和完全集。
2樓:王大傻傻大王
比如在northwind資料庫中有一個查詢為
select c.customerid,companyname from customers c
where exists(
select orderid from orders o where o.customerid=c.customerid)
這裡面的exists是如何運作呢?子查詢返回的是orderid欄位,可是外面的查詢要找的是customerid和companyname欄位,這兩個欄位肯定不在orderid裡面啊,這是如何匹配的呢?
exists用於檢查子查詢是否至少會返回一行資料,該子查詢實際上並不返回任何資料,而是返回值true或false。
exists 指定一個子查詢,檢測行的存在。
語法: exists subquery
引數: subquery 是一個受限的 select 語句 (不允許有 compute 子句和 into 關鍵字)。
結果型別: boolean 如果子查詢包含行,則返回 true ,否則返回 flase 。
在子查詢中使用 null 仍然返回結果集
select * from tablein where exists(select null)
等同於: select * from tablein
比較使用 exists 和 in 的查詢。注意兩個查詢返回相同的結果。
select * from tablein where exists(select bid from tableex where bname=tablein.aname)
select * from tablein where aname in(select bname from tableex)
比較使用 exists 和 = any 的查詢。注意兩個查詢返回相同的結果。
select * from tablein where exists(select bid from tableex where bname=tablein.aname)
select * from tablein where aname=any(select bname from tableex)
not exists 的作用與 exists 正好相反。如果子查詢沒有返回行,則滿足了 not exists 中的 where 子句。
結論:exists(包括 not exists )子句的返回值是一個bool值。 exists內部有一個子查詢語句(select ...
from...), 我將其稱為exist的內查詢語句。其內查詢語句返回一個結果集。
exists子句根據其內查詢語句的結果集空或者非空,返回一個布林值。
一種通俗的可以理解為:將外查詢表的每一行,代入內查詢作為檢驗,如果內查詢返回的結果取非空值,則exists子句返回true,這一行行可作為外查詢的結果行,否則不能作為結果。
分析器會先看語句的第一個詞,當它發現第一個詞是select關鍵字的時候,它會跳到from關鍵字,然後通過from關鍵字找到表名並把表裝入記憶體。接著是找where關鍵字,如果找不到則返回到select找欄位解析,如果找到where,則分析其中的條件,完成後再回到select分析欄位。最後形成一張我們要的虛表。
where關鍵字後面的是條件表示式。條件表示式計算完成後,會有一個返回值,即非0或0,非0即為真(true),0即為假(false)。同理where後面的條件也有一個返回值,真或假,來確定接下來執不執行select。
分析器先找到關鍵字select,然後跳到from關鍵字將student表匯入記憶體,並通過指標找到第一條記錄,接著找到where關鍵字計算它的條件表示式,如果為真那麼把這條記錄裝到一個虛表當中,指標再指向下一條記錄。如果為假那麼指標直接指向下一條記錄,而不進行其它操作。一直檢索完整個表,並把檢索出來的虛擬表返回給使用者。
exists是條件表示式的一部分,它也有一個返回值(true或false)。
在插入記錄前,需要檢查這條記錄是否已經存在,只有當記錄不存在時才執行插入操作,可以通過使用 exists 條件句防止插入重複記錄。
insert into tablein (aname,a***)
select top 1 '張三', '男' from tablein
where not exists (select * from tablein where tablein.aid = 7)
exists與in的使用效率的問題,通常情況下采用exists要比in效率高,因為in不走索引,但要看實際情況具體使用:
in適合於外表大而內表小的情況;exists適合於外表小而內表大的情況。
3樓:熱愛資料庫的同學
exists 運算子用於判斷查詢子句是否有記錄,如果有一條或多條記錄存在返回 true,否則返回 false。
既然樓主需要例子,那這邊不再過多列舉具體的語法格式,直接上一個例項~演示資料庫在這裡,我們將使用 shulanxt 樣本資料庫。下面是選自 「websites」 表的資料:
-from 樹懶學堂
sql exists 例項現在我們想要查詢總訪問量(count 欄位)大於 200 的**是否存在。
我們使用下面的 sql 語句:
exists 可以與 not 一同使用,查詢出不符合查詢語句的記錄:
資料** -shulanxt
整理不易,希望樓主可以採納哦~
4樓:
按name分組取val最大的值所在行的資料。
select a.* from tb a where not exists(select 1 from tb where name = a.name and val > a.val)
5樓:匿名使用者
exists一般不再where中用
比如 if exists(select * from table1 where 欄位=..)
sql中exists是什麼意思,怎麼講解?
6樓:
sql exists:exists 運算子用於判斷查詢子句是否有記錄,如果有一條或多條記錄存在返回 true,否則返回 false。
具體語法參考:
-from 樹懶學堂
sql exists 例項現在我們想要查詢總訪問量(count 欄位)大於 200 的**是否存在。
我們使用下面的 sql 語句:
exists 可以與 not 一同使用,查詢出不符合查詢語句的記錄:
-from shulanxt
回答不易,望樓主採納哦~
7樓:流浪雲風
exists 方法 描述如果在 dictionary 物件中指定的關鍵字存在,返回 true,若不存在,返回 false。
舉個例子吧:
select * from a where exists(select * from b where a.id = b.id);
a表和b表使用id關聯,這條語句的含義是,當b表能夠查詢出結果時,exists(select * from b where a.id = b.id)子句為真,只有滿足exists結果為真時,才會查詢出a表的記錄。
這樣解釋你明白了嗎。
8樓:勢星海
存在的意思 可以在條件上用可以是if exists()
9樓:
sql結構化查詢語言(structured query language)
exists出現
SQL查詢中in和exists的區別分析
在用in的子查詢中只能返回一列值,比如 where 成績 in select 成績,學號 from 成績表 這種用法是不允許的。exists是一個函式,是根據子查詢有無記錄返回判斷條件的成立,如果子查詢有記錄返回,那麼條件成立,否則不成立,所以子查詢中給出列名無意義的,因此子查詢通常用 返回所有列。...
sql中exists是什麼意思,怎麼講解
sql exists exists 運算子用於判斷查詢子句是否有記錄,如果有一條或多條記錄存在返回 true,否則返回 false。具體語法參考 from 樹懶學堂 sql exists 例項現在我們想要查詢總訪問量 count 欄位 大於 200 的 是否存在。我們使用下面的 sql 語句 exi...
SQL語句錯誤但是我在SQL2019中執行是正確的,到MYSQL是錯誤的大家幫看一下額
改為create table jobinfo id int 11 not null auto increment,pid varchar 20 default null,pvid varchar 20 default null,username varchar 20 default null,job...