我剛學SQL,我想知道有什麼區別以下線之間:SQL中的IN運算符和=運算符有什麼區別?
WHERE s.parent IN(SELECT l.parent .....)
與
WHERE s.parent =(SELECT l.parent .....)如果你有子查詢多個結果
我剛學SQL,我想知道有什麼區別以下線之間:SQL中的IN運算符和=運算符有什麼區別?
WHERE s.parent IN(SELECT l.parent .....)
與
WHERE s.parent =(SELECT l.parent .....)如果你有子查詢多個結果
謝謝。所以,換句話說,只要使用=運算符就可以使用IN運算符,而不是相反呢? – user1363410 2013-03-03 05:43:00
* ..只要使用=運算符,就可以使用IN運算符。* - 我沒有明白你的意思,但問題是,如果子查詢返回多個值,則使用'IN'。 – 2013-03-03 05:47:30
In
可以匹配與多於一個的值的值,換句話說,它會檢查是否一個值是在值的列表所以對於例如
x in ('a', 'b', 'x')
將返回真結果作爲x爲值
的列表而=
預計只有一個值,其那樣簡單
X = Y返回false
和
x = x返回true
當您使用'IN'時,它可以比較多個值....例如
SELECT * FROM表名,其中student_name在( '真理', 'sruthi', 'takudu')
但是當你使用 '=' 你不能多值
SELECT * FROM比較tablenamewhere student_name =「sruthi」
我希望這是正確的答案
的「IN」的條款也非常非常多的要慢得多。如果你有在
IN (SELECT l.parent .....)
選擇部分許多成果,
這將是非常低效的,因爲它實際上是爲每個單獨的選擇SQL語句並在SELECT語句中的每一個結果......所以如果你返回'貓','狗','牛'
它將基本上爲每個結果創建一個sql語句...如果您有200個結果...您將獲得完整的sql語句200次...需要永久。 ..(這是幾年前的......也許現在已經被打亂了......但是在大的結果集上它的速度非常慢。)
更有效做內連接,例如:
Select id, parent
from table1 as T
inner join (Select parent from table2) as T2 on T.parent = T2.parent
一般的經驗法則是:
的=
要求單一值與之比較。就像這樣:
WHERE s.parent = 'father_name'
IN
是在場景中=不能工作,你需要有多個值的比較,即場景中是非常有用的。
WHERE s.parent IN ('father_name', 'mother_name', 'brother_name', 'sister_name')
希望這是有用的!
對於未來的訪問者。
where a.name = b.name
)從表2,表1中的每個單元格的值進行比較逐一所有行的每個單元格的值,如果它匹配,那麼將選擇該行將被選擇(這裏該行將被選擇意味着來自表1和表2的行),否則將不會選擇整個結果集。爲了更清楚看到下面的屏幕截圖,低於通知結果從右側設置如何完成IN
(和NOT IN
)在整個結果集考慮; 整體強調的是在使用=
的情況下比較的情況下,選擇第二張表的匹配行,而在IN
的情況下選擇第二張表的完整結果。
你應該在你提出問題之前將它谷歌。 – 2013-03-03 05:27:42
雖然每個技術問題的答案都是如此,但這不是很棒嗎?然後當你谷歌搜索時,他們會在這裏結束。 – 2013-03-03 05:28:22
你試過你的查詢嗎? – Habibillah 2013-03-03 05:28:30