A. mysql查詢 怎麼使用 in
in作為查詢條件,一般典型有兩種用法:
一是IN常量,例如下面語句查詢一、三年級的學生:
SELECT * FROM student WHERE grade IN ('一','三');
二是使用子查詢,也就是IN(SQL語句),例如下面的語句查詢不及格的班級的所有學生:
SELECT * FROM student WHERE classno IN (
select classno from scores where score<60
);
B. 資料庫in的用法
資料庫in的用法的用法你知道嗎?下面我就跟你們詳細介紹下資料庫in的用法的用法,希望對你們有用。
資料庫in的用法的用法如下:
MySQL IN 語法
IN 運算符用於 WHERE 表達式中,以列表項的形式支持多個選擇,語法如下:
WHERE column IN (value1,value2,...)
WHERE column NOT IN (value1,value2,...)
當 IN 前面加上 NOT 運算符時,表示與 IN 相反的意思,即不在這些列表項內選擇。
IN 使用實例
選取 uid 為 2、3、5 的用戶數據:
SELECT * FROM user WHERE uid IN (2,3,5)
返回查詢結果如下:
uid
username
password
regdate
2 小明 [email protected] 1278063917
3 Jack [email protected] 1278061380
5 5idev [email protected] 1291107029
IN 子查詢
更多情況下,IN 列表項的值是不明確的,而可能是通過一個子查詢得到的:
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
在這個 SQL 例子里,我們實現了查出所有狀態為 0 的用戶(可能是被禁止)的所有文章。首先通過一個查詢得到所有所有 status=0 的用戶:
SELECT uid FROM user WHERE status=0
然後將查詢結果作為 IN 的列表項以實現最終的查詢結果,注意在子查詢中返回的結果必須是一個欄位列表項。
IN 運算符補充說明
IN 列表項不僅支持數字,也支持字元甚至時間日期類型等,並且可以將這些不同類型的數據項混合排列而無須跟 column 的類型保持一致:
SELECT * FROM user WHERE uid IN(1,2,'3','c')
一個 IN 只能對一個欄位進行范圍比對,如果要指定更多欄位,可以使用 AND 或 OR 邏輯運算符:
SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')
使用 AND 或 OR 邏輯運算符後,IN 還可以和其他如 LIKE、>=、= 等運算符一起使用。
關於 IN 運算符的效率問題
如果 IN 的列表項是確定的,那麼可以用多個 OR 來代替:
SELECT * FROM user WHERE uid IN (2,3,5)
// 等效為:
SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)
一般認為,如果是對索引欄位進行操作,使用 OR 效率高於 IN,但對於列表項不確定的時候(如需要子查詢得到結果),就必須使用 IN 運算符。另外,對於子查詢表數據小於主查詢的時候,也是適用 IN 運算符的。
C. SQL語句中 in和or的區別
SQL語句中 in和or的區別為:操作不同、適合不同、執行效率不同。
一、操作不同
1、in:in是把父查詢表和子查詢表作hash連接。
2、or:or是對父查詢表作loop循環,每次loop循環再對子查詢表進行查詢。
二、適合不同
1、in:in適合用於子查詢表數據比父查詢表數據多的情況。
2、or:or適合用於子查詢表數據比父查詢表數據少的情況。
三、執行效率不同
1、in:在沒有索引的情況下,隨著in後面的數據量越多,in的執行效率不會有太大的下降。
2、or:在沒有索引的情況下,隨著or後面的數據量越多,or的執行效率會有明顯的下降。
D. sql語句中in的用法
IN 操作符允許我們在 WHERE 子句中規定多個值。
SQL IN 語法:
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
(4)資料庫查詢時in的操作擴展閱讀:
1、IN 與 = ANY 等價,均表示,變版量在(子查詢)列權表之中,即 a IN (table B) 表示 a = ANY B.b
2、NOT IN 與 <> ALL 等價,而不等於<> ANY,前兩者均表示,變數不在(子查詢)列表之中,即 a NOT IN (table B) 表示 a <> ALL B.b。而如果a <> ANY B.b,則只要任意一個b<>a就true了。
3、IN 與 EXISTS 的性能區別主要來自,IN 會編列子查詢的每行記錄,然後再返回,而EXISTS 則只要遇到第一個滿足條件的記錄就馬上返回。
E. Sql Server 中 in 和 between 的用法..
操作符 BETWEEN ... AND 會選取介於兩個值之間的數據范圍。這些值可以是數值、文本或者日期。
結構化查詢語言(Structured Query Language)簡稱SQL(發音:/ˈes kjuː ˈel/ "S-Q-L"),是一種特殊目的的編程語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統;同時也是資料庫腳本文件的擴展名。
結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的介面。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。
F. mysql查詢 怎麼使用 in
in作為查詢條件,一般典型有兩種用法:
一是IN常量,例如下面語句查詢一、三年級的學生:
SELECT * FROM student WHERE grade IN ('一','三');
二是使用子查詢,也就是IN(SQL語句),例如下面的語句查詢不及格的班級的所有學生:
SELECT * FROM student WHERE classno IN (
select classno from scores where score<60
);
G. 在ASP.NET中使用SQL的IN操作
這篇文章將建立一列包含CheckBox控制項的DataGrid 這個控制項允許用戶對明細瀏覽進行多列選擇 如果沒有恢復對於動態SQL獲得該功能的一種方法 那麼必須使用IN操作 在文章的結尾 我們寫了一個SQL Server用戶自定義函數(UDF) 為了將一個字元串分解成帶分隔符的子字元串 在這篇文章中 我們能看到這樣一個UDF如何派得上用場 我們將建立一個web表單 在此用戶可以通過選擇checkbox控制項而選擇一些在DataGrid中的記錄 對這些被檢查的記錄的明細將會出現在表單中的另一個DataGrid中 這個表單像來如圖所示 在下面顯示了我們用來建立表單的ASPX 注意 如何使用TemplateColumn和Checkbox控制項增加DataGrid列 我們也使用DataGrid的DataKeyField屬性來告訴對象 在資料庫記錄的哪一個欄位將會包含第一行的關鍵字標示符 <form id= Form method= post runat= server ><asp:DataGrid id= DataGrid runat= server AutoGenerateColumns= False DataKeyField= EmployeeID ><Columns><asp:TemplateColumn><ItemTemplate><asp:CheckBox runat= server ID= EmployeeCheckBox /></ItemTemplate></asp:TemplateColumn><asp:TemplateColumn><ItemTemplate><%# DataBinder Eval(Container DataItem LastName ) %> <%# DataBinder Eval(Container DataItem FirstName ) %></ItemTemplate></asp:TemplateColumn></Columns></asp:DataGrid><hr><asp:Button id= Orders runat= server Text= View Orders ></asp:Button><hr><asp:DataGrid ID= DataGrid Runat= server AutoGenerateColumns= True /></form>當表單載入初始化時 需要組裝頂端的DataGrid 代碼使用Enterprise Library來存取SQL Sever Northwind例子資料庫並且執行 SELECT EmployeeID FirstName LastName FROM Employees 這一語句 載入事件的代碼如下 private void Page_Load(object sender System EventArgs e){if(!Page IsPostBack){Database db = DatabaseFactory CreateDatabase();DBCommandWrapper dbCommandWrapper;using(dbCommandWrapper = db GetSqlStringCommandWrapper(SELECT_EMPLOYEES)){using (IDataReader dataReader = db ExecuteReader(dbCommandWrapper)){DataGrid DataSource = dataReader;DataGrid DataBind();}}}}當用戶單擊 Orders 按鈕時 我們想顯示與資料庫中的那些與Employees相配並與Orders數據相關的第二個數據表格 這樣做的一種方法是建立動態的SQL並且使用所有EmployeeIDs所需的WHERE語句的OR條件 第二個方法是使用WHERE語句的IN操作 IN操作將會一列表達式進行比較 例如 下列語句返回employee中IDS 和 之間的信息 SELECT EmployeeID FirstName LastName FROM Employees WHERE EmployeeID IN ( )在觀念上說 我願意使用一個單一字元串參數來查詢所傳遞的IDs 然而 也許作為一個單字元串 不能對IN操作使用一個單一字元串參數 如果那樣 SQL語句會這樣 WHERE Employee IN ( ) 並且資料庫因為EmployeeID屬於類型int—不屬於varchar類型而返回一個錯誤消息 不過 我們使用文章中構造的split函數將字元串分離成不同的值 向split函數傳遞字元串 並且我們會得到與值 和 相對應的兩條記錄 選擇employees並且計算它們的定單總數的SQL查詢 將會如下 SELECT count(*) AS Orders E FirstName E LastNameFROM Orders OINNER JOIN Employees E ON O EmployeeID = E EmployeeIDWHERE E EmployeeID IN(SELECT Value FROM fn_Split(@employeeIDs ))GROUP BY FirstName LastNameORDER BY count(*) DESC使用以上查詢所需要的是必須建立和傳遞@employeeIDs參數 這個參數將是用逗號隔開的IDs列表 為了建立該字元串 為了弄明白行是否被用戶選擇 我們需要使用一個循環 這一循環以行數循環次數 並且檢查每一個checkbox控制項 如果用戶選擇了行 通過從表的DataKeys屬性中(它被建立在ASPX文件中來指向EmployeeID欄位)提取檢驗人 將關鍵字保存在employee中 private string GetCheckedEmployeeIDs(){String delimiter = String Empty;StringBuilder employeeIDs = new StringBuilder();for(int i = ; i < DataGrid Items Count; i++){CheckBox checkbox;checkbox = DataGrid Items[i] FindControl( EmployeeCheckBox ) as CheckBox;if(checkbox != null && checkbox Checked == true){employeeIDs Append(delimiter + DataGrid DataKeys[i] ToString()) ;delimiter = ;}}return employeeIDs ToString();}以上方法返回一個字元串 像 對Orders按鈕單擊事件處理器將涉及這樣一個方法 將信息傳遞至SQL以得到employees和orders的列表 並且將其結果綁定在第二個DataGrid對象中 private void Orders_Click(object sender System EventArgs e){string employeeIDs = GetCheckedEmployeeIDs();Database db = DatabaseFactory CreateDatabase();DBCommandWrapper dbCommandWrapper;using(dbCommandWrapper = db GetSqlStringCommandWrapper(SELECT_ORDERS)){dbCommandWrapper AddInParameter( @employeeIDs DbType String employeeIDs);using (IDataReader dataReader = db ExecuteReader(dbCommandWrapper)){DataGrid DataSource = dataReader;DataGrid DataBind();}}} lishixin/Article/program/ASP/201311/21852
H. sql語句中in的用法
你這樣構造in的范圍不對。你這樣是把in後面處理成一個字元串了。而in後面跟的應該是一個范圍。
你可以自己寫一個返回數據集的函數來將aa.ddid值處理成in的范圍,
類似於:
假設函數:
ft01(nvarchar(1000))
returns
table
tb
(val
int)。
那麼,
這樣更新裡面子查詢的in條件:
where
id
in
(select
val
from
ft01(aa.ddid))。
另外,
此解決方法只是從in條件上來說。
如果子查詢只有1條記錄,in和=是沒有區別,如果子查詢有多條記錄,用=會出錯的,所以in是無論只查詢有多少條記錄都可以使用,而=只有當子查詢只有1條記錄的時候才能使用。
in和exists理解上其實是差不多,但對資料庫而言,in的執行順序是先執行只查詢條件,然後把記錄和外查詢核對,找符合條件的。
而exists是先執行外查詢,再執行子查詢,找到外查詢記錄後和只查詢對比符合條件的,如果外查詢和子查詢的條目數差異很大,那麼效率相差很明顯的。
I. in在sql中是什麼意思
SQL中的IN 操作符,表示允許在 WHERE 子句中規定多個值。
from 樹懶學堂