SQL-запрос для выбора нескольких записей - PullRequest
13 голосов
/ 07 февраля 2012

У меня 9 полей, и мне нужно просмотреть все данные из этих полей, которые имеют определенный набор идентификаторов. Может ли кто-нибудь сказать мне SQL-запрос для этого?

Пример: База данных содержит 100 записей. Мне нужно выбрать список из 20 идентификаторов из поля BusID и соответствующие ему строки.

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

Ответы [ 7 ]

20 голосов
/ 07 февраля 2012

Если вы знаете список идентификаторов, попробуйте этот запрос:

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

или, если вы извлекаете их из другой таблицы, list of busIds может быть другим подзапросом:

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

Если вам нужно сравнить с другой таблицей, вам нужно объединение:

SELECT * FROM `Buses` JOIN OtheTable on Buses.BusesId = OtehrTable.BusesId
11 голосов
/ 07 февраля 2012

Вы можете попробовать это
ВЫБРАТЬ * ОТ Buses ГДЕ BusID in (1,2,3,4, ...)

6 голосов
/ 07 февраля 2012

Вы ищете предложение IN() :

SELECT * FROM `Buses` WHERE `BusID` IN (1,2,3,5,7,9,11,44,88,etc...);
5 голосов
/ 07 февраля 2012

Я настоятельно рекомендую использовать строчные поля | имена столбцов, это облегчит вашу жизнь.

Предположим, у вас есть таблица с именем users со следующим определением и записями:

id|firstname|lastname|username             |password
1 |joe      |doe     |joe.doe@email.com   |1234
2 |jane     |doe     |jane.doe@email.com  |12345
3 |johnny   |doe     |johnny.doe@email.com|123456

допустим, вы хотите получить все записи от пользователей таблиц, тогда вы делаете:

SELECT * FROM users;

Теперь давайте предположим, что вы хотите выбрать все записи из пользователей таблицы, но вас интересуют только поля id, имя и фамилия, поэтому игнорируются имя пользователя и пароль:

SELECT id, firstname, lastname FROM users;

Теперь мы подошли к тому моменту, когда вы хотите получить записи на основе условий, вам нужно добавить предложение WHERE, скажем, мы хотим выбирать из пользователей только тех, у которых username = joe. doe@email.com и пароль = 1234, что вы делаете:

SELECT * FROM users
WHERE ( ( username = 'joe.doe@email.com' ) AND ( password = '1234' ) );

Но что, если вам нужен только идентификатор записи с именем пользователя = joe.doe@email.com и паролем = 1234? тогда вы делаете:

SELECT id FROM users
WHERE ( ( username = 'joe.doe@email.com' ) AND ( password = '1234' ) );

Теперь, чтобы перейти к вашему вопросу, поскольку другие, до меня, отвечали, вы можете использовать предложение IN:

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

или, если вы хотите ограничить список записей между идентификаторами 20 и 40, то вы можете легко написать:

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

Надеюсь, это даст лучшее понимание.

4 голосов
/ 09 октября 2014

Попробуйте следующий код:

SELECT *
FROM users
WHERE firstname IN ('joe','jane');
2 голосов
/ 07 февраля 2012

Вы хотите добавить предложение IN() к вашему WHERE

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

Если у вас есть список идентификаторов, хранящихся в таблице, вы также можете сделать это:

SELECT * 
FROM `Buses` 
WHERE `BusID` IN (SELECT Id FROM table)
0 голосов
/ 27 июня 2018

У меня есть 3 поля для извлечения из базы данных Oracle, которая предназначена для приложений Форекс и валют.

SELECT BUY.RATE FROM FRBU.CURRENCY WHERE CURRENCY.MARKET = 10 и CURRENCY.CODE IN ('USD', 'AUD', 'SGD')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...