从“游戏”列表中获取不同的行

时间:2011-08-23 14:34:46

标签: mysql

我正在尝试按日期组织显示游戏列表,以便每个游戏都有一个条目。该表由每个游戏的两个条目组成,示例数据说明了布局。只需过滤位置中的“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');

1 个答案:

答案 0 :(得分:3)

SELECT * FROM testTbl t
WHERE location = 'A' OR 
 (LOCATION = 'N' AND team1 <= team2)

对于每个记录对,这将仅显示Team1(按字母顺序)小于第2组的记录。

所以斗牛犬 - 印第安人将会出现,但印第安人 - 斗牛犬不会出现。