SQL-запрос для выбора нескольких записей

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

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

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

Ответ 1

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

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

Ответ 2

Вы можете попробовать это      SELECT * FROM Buses WHERE BusID в (1,2,3,4,...)

Ответ 4

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

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

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

скажем, вы хотите получить все записи от пользователей таблицы, а затем выполните следующие действия:

SELECT * FROM users;

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

SELECT id, firstname, lastname FROM users;

Теперь мы получаем то место, где вы хотите получить записи на основе условий (состояний), что вам нужно сделать, так это добавить предложение WHERE, скажем, мы хотим выбрать у пользователей только те, у которых есть имя пользователя = joe. [email protected] и password = 1234, что вы делаете:

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

Но что, если вам нужен только идентификатор записи с именем пользователя = [email protected] и password = 1234? то вы делаете:

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

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

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

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

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

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

Ответ 5

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

SELECT *
FROM users
WHERE firstname IN ('joe','jane');

Ответ 6

Вы хотите добавить предложение 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)