Bool的MySQL查询问题

Bool的MySQL查询问题,mysql,Mysql,我对以下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_in

我对以下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 ;

如果有人能解释如何调整我的查询以不返回该结果…

您可能缺少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)

我认为第二个更可能是您所追求的。

您可能缺少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)

我认为第二个更可能是你想要的。

因为你最后有一个OR。可能会有一个与Chair2_idPerson=16875和
TDPS_晨=1。在适当的地方用括号将语句分组。

因为在末尾有一个OR。可能会有一个与Chair2_idPerson=16875和
TDPS_晨=1。在适当的地方用括号将陈述分组。

是的,考虑到这个问题,第二个很可能是……是的,就是这样。谢谢你澄清这一点,我以前也有过这个问题,但这次显然没有注意到。谢谢是的,考虑到这个问题,第二个很可能是……是的,就是这样。谢谢你澄清这一点,我以前也有过这个问题,但这次显然没有注意到。谢谢神奇的词语是“优先”。神奇的词语是“优先”。