2009-11-07 5 views
3

Comment exclure des données d'une base de données SQL à l'aide d'une instruction SQL? Ma situation est que j'ai un utilisateur se connecter à leur page de profil où ils seront en mesure d'amis. Je veux afficher tous les utilisateurs sauf eux-mêmes qui se trouvent dans la base de données SQL.Exclure une instruction dans SQL

+0

C'est une question vraiment fondamentale. Considérons un bon livre sur la théorie de DB et SQL, il vous sera très utile. Voir mes recommandations: http://stackoverflow.com/questions/1046668/database-programming-concepts/1604980#1604980 – MaD70

Répondre

5

Que diriez-vous:

SELECT * FROM people WHERE person_id != $current_user_id 
+1

Cela devrait probablement être person_id <> current_user_id – Andomar

+0

Pourquoi? Le SGBDR que j'utilise supporte! = Opérateur. –

+0

Intéressant, juste vérifié et le support de SQL Server et MySQL! = – Andomar

8

Peut-être juste

SELECT * 
FROM 
    Users 
WHERE 
    UserId <> @ThisUserId 

ou en utilisant une Union de différence (Le mot-clé EXCEPT dans SQL Server, pas sûr d'autres implémentations SGBDR)

SELECT * 
FROM 
    Users 

EXCEPT 

SELECT * 
FROM 
    Users 
WHERE 
    UserId = @ThisUserId 
+1

Le mot-clé INTERSECT peut aussi être extrêmement utile, pour trouver des résultats communs à tous les résultats –

0

Si vous connaissez l'identifiant unique de cet utilisateur, vous pouvez utiliser quelque chose comme ceci:

SELECT * FROM usertable WHERE id!='myuserid' 

Ce que je fais avec un de mes scripts d'authentification est de stocker les informations pour la personne qui est actuellement connecté à une variable de sorte qu'il ressemblerait à ceci en PHP:

SELECT * FROM usertable WHERE id!='check(id)' 
2
select * from Foo where UserName not in ('Rohan', 'Rohan's friend', .....) 

Est-ce utile?

3

Oui, je sais que je suis en retard avec celui-ci. Quoi qu'il en soit, comme je suis tombé sur ces commentaires ici, tout en cherchant une réponse à une question similaire à celle-ci demander ("comment extraire les données d'une requête"), j'étais un peu confus. Confus parce que je savais que la réponse que je cherchais n'était pas seulement plus simple, mais encore plus élégante que celles proposées ici. J'ai déjà connu la réponse, mais je l'ai oublié. Je suis venu ici parce que j'étais trop paresseux pour me souvenir ...

Alors j'ai eu du mal à me souvenir de la solution facile et puis cela m'est revenu à l'esprit.

Supposons donc que vous avez les deux tables "Email" et "UnwantedEmail" avec à la fois la colonne "Adresse". La requête pour ne recevoir que les adresses e-mail, les adresses recherchées qui sont dans « Envoyer » mais pas « UnwantedEmail » pourrait ressembler à ce qui suit:

SELECT Email.Address FROM UnwantedEmail 
RIGHT JOIN Email ON UnwantedEmail.Address=Email.Address 
WHERE UnwantedEmail.Address Is Null; 

:-)

Vive

/a

Questions connexes