2012-02-07 4 views
10

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

ответ

19

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

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

Вы хотите добавить статью 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) 
10

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

5

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

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

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; 

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

SELECT id, firstname, lastname FROM users; 

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

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

Но что, если вам нужно только идентификатор записи с именем пользователя = [email protected] и пароль = 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)); 

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

3

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

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

Этот ответ не приносит ничего нового к столу, я боюсь. – RandomSeed

Смежные вопросы