MySQL:面对带有INNER JOIN的Where子句的问题

问题描述 投票:1回答:3

我有一个快速的问题,所以根据我对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 |
mysql
3个回答
0
投票

嗨,所以我尝试了以下方法。您的代码似乎对我创建的粗糙表具有预期的功能。问题可能出在您使用的数据中?


0
投票

所以我想通了。这是正确的查询。


© www.soinside.com 2019 - 2024. All rights reserved.