Qual é a diferença entre o operador IN e = operador em SQL?

Estou apenas a aprender SQL, e pergunto-me qual é a diferença entre as seguintes linhas:

Onde está o pai s. (seleccione o pai l.).....)

Versus

em que S. pai = (seleccione l. pai .....)

 0
Author: John Woo, 2013-03-03

6 answers

IN

Não irá gerar um erro se tiver vários resultados na sub-pesquisa. permite ter mais de um valor no resultado retornado pela subquery.

=

Irá gerar um erro se você tiver mais do que um resultado no subquery.

 8
Author: John Woo, 2013-03-03 05:42:09

Quando está a usar 'IN', pode comparar vários valores....tipo

Seleccione * do nome do tabuleiro onde está o nome do student_ nome ('mari', 'sruthi', 'takudu')

Mas quando está a usar ' = ' não consegue comparar vários valores

Seleccione * de tablenameonde student_ name = 'sruthi'

Espero que esta seja a resposta certa.
 3
Author: Dhanya Raj, 2013-03-06 11:50:29
A cláusula " IN " também é muito mais lenta. Se tiver muitos resultados na parte seleccionada de

IN (SELECT l.parent .....),

Será extremamente ineficiente, uma vez que gera uma instrução SQL seleta separada para cada resultado dentro da instrução seleta ... por isso, se devolveres "gato", "cão", "vaca"

Irá essencialmente criar uma declaração sql para cada resultado... se tiver 200 resultados... recebes a declaração sql 200 vezes...demora uma eternidade... (Presente foi há alguns anos... talvez já esteja comprometido... mas foi horrivelmente lento em grandes conjuntos de resultados.)

Muito mais eficiente para fazer uma junção interior como:

Select id, parent
from table1 as T
inner join (Select parent from table2) as T2 on T.parent = T2.parent
 3
Author: Dan B, 2014-06-05 14:44:21

In pode corresponder um valor com mais de um valor, por outras palavras, verifica se um valor está na lista de valores, por exemplo, para

x in ('a', 'b', 'x') irá devolver o resultado verdadeiro como x está na lista de Valores

Enquanto = espera apenas um valor, é tão simples como

O X = y devolve false

E

O X = x devolve verdadeiro

 1
Author: Pawan Nogariya, 2013-03-03 05:41:09

A regra geral é:

O = espera um único valor para comparar. Assim:

WHERE s.parent = 'father_name'

IN é extremamente útil em cenários onde = não pode funcionar, ou seja, cenários onde você precisa da comparação com vários valores.

WHERE s.parent IN ('father_name', 'mother_name', 'brother_name', 'sister_name')
Espero que isto seja útil!!!
 1
Author: Satwik Nadkarny, 2014-06-04 22:02:38

para futuros visitantes.

  • , Basicamente, em caso de igual (apenas lembre-se de que aqui estamos a falar como where a.name = b.name), cada valor de célula a partir da tabela 1, será comparado a um por um, para cada valor de célula de todas as linhas da tabela 2, se corresponder, em seguida, essa linha será selecionada (aqui essa linha será selecionada significa que a linha da tabela 1 e tabela 2) para todo o conjunto de resultados, caso contrário não será selecionado.
  • Agora, em caso de IN, resultado completo definido no lado direito de a, serão utilizados para fins de comparação, e mesmo assim cada valor da tabela 1, será verificado se este valor da célula está presente no conjunto de resultados completo do EM, se ele estiver presente, então, que o valor será mostrado para todas as linhas do conjunto de resultado, então vamos dizer que NO conjunto de resultados tem 20 linhas, de modo que o valor da célula da tabela 1 estará presente no resultado global do conjunto de 20 vezes (por exemplo, que determinado o valor da célula terá 20 linhas).

Para mais clareza, veja abaixo a imagem, Observe abaixo que como conjunto de resultados completo do direito do IN (e NOT IN) é considerado, em geral, conjunto de resultados; toda a ênfase está no fato de que no caso de comparação, usando =, correspondente linha da segunda tabela é selecionada, enquanto que no caso de IN resultado completo da segunda tabela é selecionada.

enter image description here

 1
Author: hagrawal, 2017-11-19 18:34:10