【发布时间】:2012-01-22 21:47:17
【问题描述】:
我为印度铁路项目创建了一个这样的表:
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 即 trainid 但孟买仅存在于 100 和 300。
我需要一个查询,该查询只能返回同时拥有孟买和班加罗尔的三元组。此外,班加罗尔的 si 即序列号必须小于孟买的 si。
我使用了这个查询,但它似乎返回了所有记录
SELECT DISTINCT trid FROM dennis WHERE place ='mumbai' OR place='bangalore'
【问题讨论】:
-
您的架构没有意义。什么是 trid,什么是 si,什么是 dennis?