我正在尝试按日期组织显示游戏列表,以便每个游戏都有一个条目。该表由每个游戏的两个条目组成,示例数据说明了布局。只需过滤位置中的“A”,即可轻松过滤Home vs Away。我的问题是,当中立站点的位置为“N”时,才会获得其中一个团队。创建SQL和版本信息如下。
查询的理想结果是:
('2011-08-01', 'Mustangs', 'Indians', 'A'),
('2011-08-14', 'Bulldogs', 'Indians', 'N'),
('2011-08-22', 'Braves', 'Bulldogs', 'A')
我尝试进行子选择以仅获取Team2,当位置= N时它不在Team1列表中但我无法使其成功运行。出于此查询的目的,没有其他可用字段使“游戏”唯一,并且无法更改表的结构。
感谢任何帮助。
-- Server version: 5.1.56
-- PHP Version: 5.2.17
-- Table structure for table `testTbl`
CREATE TABLE IF NOT EXISTS `testTbl` (
`gameDate` date NOT NULL,
`Team1` varchar(20) NOT NULL,
`Team2` varchar(20) NOT NULL,
`Location` varchar(5) NOT NULL,
KEY `gameDate` (`gameDate`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- Dumping data for table `testTbl`
INSERT INTO `testTbl` (`gameDate`, `Team1`, `Team2`, `Location`) VALUES
('2011-08-22', 'Bulldogs', 'Braves', 'H'),
('2011-08-22', 'Braves', 'Bulldogs', 'A'),
('2011-08-01', 'Indians', 'Mustangs', 'H'),
('2011-08-01', 'Mustangs', 'Indians', 'A'),
('2011-08-14', 'Bulldogs', 'Indians', 'N'),
('2011-08-14', 'Indians', 'Bulldogs', 'N');
答案 0 :(得分:3)
SELECT * FROM testTbl t
WHERE location = 'A' OR
(LOCATION = 'N' AND team1 <= team2)
对于每个记录对,这将仅显示Team1(按字母顺序)小于第2组的记录。
所以斗牛犬 - 印第安人将会出现,但印第安人 - 斗牛犬不会出现。