mysql - SQL查询根据同一字段中的2个不同值和条件选择记录

标签 mysql sql select

我为印度铁路项目创建了一个这样的表:

CREATE TABLE IF NOT EXISTS `dennis` (
  `trid` varchar(50) NOT NULL,
  `place` varchar(50) NOT NULL,
  `si` varchar(50) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

然后我这样插入行:

INSERT INTO `dennis` (`trid`, `place`, `si`) VALUES
('100', 'cochi', '3'),
('300', 'cochi', '1'),
('100', 'mumbai', '1'),
('100', 'bangalore', '2'),
('300', 'bangalore', '2'),
('300', 'mumbai', '3'),
('200', 'hyderabad', '1'),
('400', 'trivandrum', '1'),
('200', 'bangalore', '2'),
('200', 'trivandrum', '3'),
('400', 'bangalore', '2'),
('400', 'hyderabad', '3');

我的问题是,当我选择起始站为类加罗尔、目的地为孟买时,我得到了所有火车号码,因为类加罗尔存在所有 trid ie trainid,但孟买仅存在 100 和 300。

我需要一个查询,该查询只能返回同时拥有孟买和类加罗尔的 trid。另外,类加罗尔的 si 序列号必须小于孟买的 si。

我使用了这个查询,但它似乎返回了所有记录

SELECT DISTINCT trid FROM dennis WHERE place ='mumbai' OR place='bangalore'

最佳答案

试试这个,

SELECT DISTINCT d1.trid 
FROM dennis d1
     INNER JOIN dennis d2 ON d2.trid=d1.trid
WHERE d1.place = 'bangalore' and d2.place = 'mumbai' AND d1.si < d2.si

希望这能回答您的问题

关于mysql - SQL查询根据同一字段中的2个不同值和条件选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8549888/

相关文章:

php - 在 MYSQL 中使用 like 语句而不考虑顺序

mysql - 自动将不同数据源的数据加载到 MySQL 数据库

mysql 匹配/反对语法

sql - 使用 nodejs mssql 连接时出现输出问题

mysql按天排序也有WHERE

mysql - 具有匹配值且最新为正的最新记录

mysql - 获取Mysql数量

sql - 照原样从 Access 后端迁移到 SQL Server。需要效率帮助

MySql-拆分单元格并插入到另一个表中

select - 使用 and 嵌套 sql 语句