我想知道为什么我们使用
where column=id
对比
where column in (id)
我知道第一个只允许一个 id 而第二个将允许多个 id,但是为什么我们不总是使用 in 甚至单列搜索呢?
换句话说,为什么我们不总是使用“(id)中的列”?
我想知道为什么我们使用
where column=id
对比
where column in (id)
我知道第一个只允许一个 id 而第二个将允许多个 id,但是为什么我们不总是使用 in 甚至单列搜索呢?
换句话说,为什么我们不总是使用“(id)中的列”?
两者本质上是一样的,所以可以互换。使用哪个是个人喜好。
就个人而言,=
当我知道我永远不会检查一个以上的值时,我会使用它。IN
如果有很好的机会稍后我会修改查询以将新值添加到列表中,我会使用它。
当性能不是问题时IN
,我有时会使用它而不是 ,REGEXP
因为它更简洁,并且需要更少的输入:
WHERE column REGEXP '^(value1|value2)$'
或者
WHERE column REGEXP '[[:<:]](value1|value2)[[:>:]]'
当然,鲜为人知的“空安全”相等运算符<=>
:
WHERE column <=> id
没有等效IN
版本。