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,...)
Ответ 3
Вы ищете предложение IN()
:
SELECT * FROM `Buses` WHERE `BusID` IN (1,2,3,5,7,9,11,44,88,etc...);
Ответ 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)