我有一个快速的问题,所以根据我对MySql JOINS的研究,我知道此查询
SELECT *
FROM Rule
INNER JOIN RuleList
ON Rule.ruleID = RuleList.ruleID
WHERE Rule.accountID = '[email protected]'
[如果它们的ruleID
匹配并且规则表中的accountID
为[email protected]
,则仅显示两个表中的项目,但是对我来说,我从所有accountID
中得到的结果不仅仅是[email protected]
]。
我也尝试使用AND
子句代替WHERE
,但得到的结果完全相同。
SELECT *
FROM Rule
INNER JOIN RuleList
WHERE Rule.ruleID = RuleList.ruleID
AND Rule.accountID = '[email protected]'
[如果有人可以指出正确的方向,我将不胜感激。
谢谢,麦克风这是为了:show create Table Rule;
Rule | CREATE TABLE `Rule` (
`accountID` varchar(32) NOT NULL,
`ruleID` varchar(32) NOT NULL,
`isCronRule` tinyint(4) DEFAULT NULL,
`ruleTag` varchar(24) DEFAULT NULL,
`selector` text,
`actionMask` int(10) unsigned DEFAULT NULL,
`cannedActions` varchar(80) DEFAULT NULL,
`priority` smallint(5) unsigned DEFAULT NULL,
`minNotifyAge` int(10) unsigned DEFAULT NULL,
`triggerReset` smallint(5) unsigned DEFAULT NULL,
`notifyEmail` varchar(128) DEFAULT NULL,
`emailSubject` text CHARACTER SET utf8,
`emailText` text CHARACTER SET utf8,
`smsText` text CHARACTER SET utf8,
`useEmailWrapper` tinyint(4) DEFAULT NULL,
`ruleDisable` varchar(64) DEFAULT NULL,
`ruleEnable` varchar(64) DEFAULT NULL,
`sendCommand` text,
`isActive` tinyint(4) DEFAULT NULL,
`description` varchar(128) CHARACTER SET utf8 DEFAULT NULL,
`lastUpdateTime` int(10) unsigned DEFAULT NULL,
`creationTime` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`accountID`,`ruleID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
这是用于RuleList
| RuleList | CREATE TABLE `RuleList` (
`accountID` varchar(32) NOT NULL,
`deviceID` varchar(32) NOT NULL,
`groupID` varchar(32) NOT NULL,
`statusCode` int(10) unsigned NOT NULL,
`ruleID` varchar(32) NOT NULL,
`lastUpdateTime` int(10) unsigned DEFAULT NULL,
`creationTime` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`accountID`,`deviceID`,`groupID`,`statusCode`,`ruleID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
嗨,所以我尝试了以下方法。您的代码似乎对我创建的粗糙表具有预期的功能。问题可能出在您使用的数据中?
所以我想通了。这是正确的查询。