我遇到以下MySQL查询的问题:
SELECT * FROM TPDSessions WHERE TPDS_Morning = 0 AND TPDD_Id = 1 AND TPDS_Chair1_idPerson = 16785 OR TPDS_Chair2_idPerson = 16785
返回的行有TPDS_Morning,值为1,我不明白为什么。这是表结构:
CREATE TABLE `TPDSessions` (
`TPDS_Id` int(11) NOT NULL auto_increment,
`TPDR_Id` int(32) NOT NULL,
`TPDD_Id` int(32) NOT NULL,
`TPDS_Morning` tinyint(1) NOT NULL,
`TPDS_Name` varchar(200) NOT NULL,
`TPDS_Chair1_idPerson` int(11) NOT NULL,
`TPDS_Chair2_idPerson` int(11) NOT NULL,
PRIMARY KEY (`TPDS_Id`),
KEY `chair1_idPerson` (`TPDS_Chair1_idPerson`,`TPDS_Chair2_idPerson`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
如果有人可以解释如何调整我的查询以不返回该结果......
答案 0 :(得分:2)
您可能会遗漏OR语句的一些括号。
可能是
SELECT *
FROM TPDSessions
WHERE (TPDS_Morning = 0
AND TPDD_Id = 1
AND TPDS_Chair1_idPerson = 16785)
OR TPDS_Chair2_idPerson = 16785
SELECT *
FROM TPDSessions
WHERE TPDS_Morning = 0
AND TPDD_Id = 1
AND (TPDS_Chair1_idPerson = 16785
OR TPDS_Chair2_idPerson = 16785)
我认为第二种可能性更大。
答案 1 :(得分:1)
因为你最后有一个OR。可能有一行与Chair2_idPerson = 16875和 TDPS_Morning = 1.在适当的位置放置括号以对语句进行分组。