用于选择多个记录的SQL查询

use*_*911 13 mysql sql

我有9个字段,我需要查看这些字段中具有特定ID集的所有数据.可以有人告诉我SQL查询吗?

例如:数据库包含100条记录.我需要从字段BusID中选择20个ID的列表,并且它是相应的行.

SELECT * 
FROM `Buses` 
WHERE `BusID` I am stuck after this.. how do I put in the list of 20 BusIds here?
Run Code Online (Sandbox Code Playgroud)

The*_*yan 20

如果您知道ID列表,请尝试以下查询:

SELECT * FROM `Buses` WHERE BusId IN (`list of busIds`)
Run Code Online (Sandbox Code Playgroud)

或者如果你从另一个表中拉出它们list of busIds可能是另一个子查询:

SELECT * FROM `Buses` WHERE BusId IN (SELECT SomeId from OtherTable WHERE something = somethingElse)
Run Code Online (Sandbox Code Playgroud)

如果您需要与另一个表进行比较,则需要加入:

SELECT * FROM `Buses` JOIN OtheTable on Buses.BusesId = OtehrTable.BusesId
Run Code Online (Sandbox Code Playgroud)


Kam*_*Ali 11

您可以在(1,2,3,4,...)中尝试此
SELECT*FROM BusesWHEREBusID


Mic*_*ski 6

您正在寻找IN()条款:

SELECT * FROM `Buses` WHERE `BusID` IN (1,2,3,5,7,9,11,44,88,etc...);
Run Code Online (Sandbox Code Playgroud)


Com*_*sNo 5

我强烈建议使用小写字段|列名称,这将使您的生活更轻松.

假设您有一个名为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
Run Code Online (Sandbox Code Playgroud)

假设您想从表用户那里获取所有记录,那么您可以:

SELECT * FROM users;
Run Code Online (Sandbox Code Playgroud)

现在让我们假设您要从表用户中选择所有记录,但您只对字段id,firstname和lastname感兴趣,从而忽略用户名和密码:

SELECT id, firstname, lastname FROM users;
Run Code Online (Sandbox Code Playgroud)

现在我们得到你想要根据条件检索记录的点,你需要做的是添加WHERE子句,假设我们只想从用户中选择那些有username = joe.doe@email的用户.com和密码= 1234,你要做的是:

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

但是,如果您只需要username = joe.doe@email.com和密码= 1234的记录的ID,该怎么办?然后你做:

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

现在回答你的问题,正如我之前的其他人回答你可以使用IN子句:

SELECT * FROM users
WHERE ( id IN (1,2,..,n) );
Run Code Online (Sandbox Code Playgroud)

或者,如果您希望限制在id 20和id 40之间的记录列表,那么您可以轻松地写:

SELECT * FROM users
WHERE ( ( id >= 20 ) AND ( id <= 40 ) );
Run Code Online (Sandbox Code Playgroud)

我希望这能让我们更好地理解.