我为印度铁路项目创建了一个这样的表:
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/