2009-09-14 6 views
-2

J'utilise plusieurs opérateurs IN et dans ma requête SQL clause where donnée ci-dessous ...Comportement étrange: SQL opérateur Et avec plusieurs opérateurs IN

--- 
where ID in (1, 3, 234, 2332, 2123, 989) AND tag in ('wow', 'wonderful') 

Mais étonnamment comportement du résultat semble être OU tapez plutôt que le type ET. Ce que je veux dire, c'est qu'il ignore l'opérateur ET ...

Pouvez-vous m'expliquer pourquoi?

+2

Qu'est-ce qui vous fait dire ça? Avez-vous récupéré une ligne de résultat à laquelle vous ne vous attendiez pas? A quoi cela ressemble-t-il? –

+4

Les colonnes sont-elles identifiées et id dans un tableau ou différent? Il est préférable de voir toute la requête. –

+0

Merci X2 et Mark_s il a été résolu ... votre compteur questions m'a donné des conseils qui l'ont conduit à se résoudre ... J'utilisais la table jointe dans la requête et incorrectement mappés id ... Merci encore –

Répondre

1

Je ne pouvais pas reproduire le résultat en utilisant SQL Server 2008.

SELECT * FROM 
(
    SELECT 0 AS ID, 'wow' as Tag 
) X 
WHERE ID in (1, 3, 234, 2332, 2123, 989) AND tag in ('wow', 'wonderful') 

Résultat: No records

SELECT * FROM 
(
    SELECT 1 AS ID, 'wow' as Tag 
) X 
WHERE ID in (1, 3, 234, 2332, 2123, 989) AND tag in ('wow', 'wonderful') 

Résultat:

ID Tag 
1 wow 

Vérifiez à nouveau votre code.