web-dev-qa-db-fra.com

Requête SQL pour la sélection de plusieurs enregistrements

J'ai 9 champs et j'ai besoin de voir toutes les données de ces champs qui ont un ensemble particulier d'identifiants. Quelqu'un pourrait-il me dire la requête SQL pour cela?

Ex: la base de données contient 100 enregistrements. Je dois sélectionner une liste de 20 identifiants dans le champ BusID et ses lignes correspondantes.

SELECT * 
FROM `Buses` 
WHERE `BusID` I am stuck after this.. how do I put in the list of 20 BusIds here?
12
user823911

Si vous connaissez la liste des identifiants, essayez cette requête:

SELECT * FROM `Buses` WHERE BusId IN (`list of busIds`)

ou si vous les tirez d'une autre table, list of busIds pourrait être une autre sous-requête:

SELECT * FROM `Buses` WHERE BusId IN (SELECT SomeId from OtherTable WHERE something = somethingElse)

Si vous avez besoin de comparer à une autre table, vous avez besoin d'une jointure:

SELECT * FROM `Buses` JOIN OtheTable on Buses.BusesId = OtehrTable.BusesId
20
TheBoyan

Tu peux essayer ça
SELECT * FROM Buses WHERE BusID in (1,2,3,4, ...)

10
Kamran Ali

Vous recherchez la clause IN() :

SELECT * FROM `Buses` WHERE `BusID` IN (1,2,3,5,7,9,11,44,88,etc...);
6
Michael Berkowski

Je recommande fortement d'utiliser des noms de champs en minuscules, cela vous facilitera la vie.

Supposons que vous avez une table appelée utilisateurs avec la définition et les enregistrements suivants:

id|firstname|lastname|username             |password
1 |joe      |doe     |[email protected]   |1234
2 |jane     |doe     |[email protected]  |12345
3 |johnny   |doe     |[email protected]|123456

disons que vous voulez obtenir tous les enregistrements des utilisateurs de la table, alors vous faites:

SELECT * FROM users;

Supposons maintenant que vous souhaitiez sélectionner tous les enregistrements d'utilisateurs de table, mais que les champs id, firstname et lastname ne vous intéressent que si vous ignorez le nom d'utilisateur et le mot de passe:

SELECT id, firstname, lastname FROM users;

Nous arrivons maintenant au point où vous souhaitez récupérer des enregistrements en fonction de condition (s). Ce que vous devez faire est d’ajouter la clause WHERE. Supposons que nous ne voulions choisir parmi les utilisateurs que ceux qui ont nomutilisateur = joe.doe@email .com et mot de passe = 1234, ce que vous faites est:

SELECT * FROM users
WHERE ( ( username = '[email protected]' ) AND ( password = '1234' ) );

Mais que se passe-t-il si vous n'avez besoin que de l'identifiant d'un enregistrement avec nom d'utilisateur = [email protected] et mot de passe = 1234? alors vous faites:

SELECT id FROM users
WHERE ( ( username = '[email protected]' ) AND ( password = '1234' ) );

Pour en venir à votre question, comme d'autres avant moi l'ont répondu, vous pouvez utiliser la clause IN:

SELECT * FROM users
WHERE ( id IN (1,2,..,n) );

ou, si vous souhaitez limiter à une liste d'enregistrements compris entre id 20 et id 40, vous pouvez facilement écrire:

SELECT * FROM users
WHERE ( ( id >= 20 ) AND ( id <= 40 ) );

J'espère que cela donne une meilleure compréhension.

5
ComputerSaysNo

Essayez le code suivant:

SELECT *
FROM users
WHERE firstname IN ('joe','jane');
4
M-Alam Charlotte

Vous voulez ajouter la clause IN() à votre WHERE 

SELECT * 
FROM `Buses` 
WHERE `BusID` IN (Id1, ID2, ID3,.... put your ids here)

Si vous avez une liste d'identifiants stockés dans une table, vous pouvez également le faire:

SELECT * 
FROM `Buses` 
WHERE `BusID` IN (SELECT Id FROM table)
2
Taryn

J'ai 3 champs à récupérer de la base de données Oracle, qui est pour Forex et application de la monnaie.

S&EACUTE;LECTIONNEZBUY.RATEDANSFRBU.CURRENCYO&UGRAVE;CURRENCY.MARKET = 10 ET CURRENCY.CODE IN ('USD', 'AUD', 'SGD')

0
Vinay Guru