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

发布于 2024-12-21 15:57:36 字数 920 浏览 0 评论 0原文

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

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'

I Created a table like this for indian railways project:

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;

then i inserted rows this way :

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');

My problem is when i select start station as Bangalore and destination as mumbai, I am getting all the train numbers because bangalore exist for all trid ie trainid but mumbai exist only for 100 and 300.

I need a query that can return only those trid who have both mumbai and bangalore. Also the si ie Serialnumber of bangalore must be lesser than si of mumbai.

i used this query but it seems to return all the record

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-12-28 15:57:36

试试这个,

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

希望这能回答你的问题

try this,

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

hope this answers your question

嘿哥们儿 2024-12-28 15:57:36
SELECT d1.trid 
FROM dennis d1
INNER JOIN dennis d2 ON d2.trid=d1.trid
WHERE d1.place = 'bangalore' and d2.place = 'mumbai'
SELECT d1.trid 
FROM dennis d1
INNER JOIN dennis d2 ON d2.trid=d1.trid
WHERE d1.place = 'bangalore' and d2.place = 'mumbai'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文