我刚学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