我有一个简单的问题,所以根据我对MySql JOINS的研究,我理解这个查询
int n = n;
int con = 3;
int frag = 0;
for(int i =0; i<= n; i++)
{
frag += i*con;
}
return frag;
如果他们的SELECT *
FROM Rule
INNER JOIN RuleList
ON Rule.ruleID = RuleList.ruleID
WHERE Rule.accountID = 'geoskygps@gmail.com'
匹配并且规则表中的ruleID
为accountID
,则应仅显示两个表中的项目,但对我来说,我得到的是所有geoskygps@gmail.com
的结果不仅仅是accountID
。
我也尝试使用geoskygps@gmail.com
子句而不是AND
,但我得到了相同的结果。
WHERE
如果有人能指出我正确的方向,我会非常感激。
谢谢,
麦克风
这是为了:show create Table Rule;
SELECT *
FROM Rule
INNER JOIN RuleList
WHERE Rule.ruleID = RuleList.ruleID
AND Rule.accountID = 'geoskygps@gmail.com'
这是针对RuleList的
| 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 |
答案 0 :(得分:0)
嗨所以我只是尝试了下面的内容。您的代码似乎按照我创建的粗略表格的预期运行。问题可能出在你正在使用的数据中吗?
create table Rule(ruleID INTEGER,accountID text,data text);
insert into Rule values(1, 'geoskygps@gmail.com' , 'data');
insert into Rule values(2, 'nothing@gmail.com' , 'data');
insert into Rule values(3, 'geoskygps@gmail.com' , 'data');
create table Rulelist(ruleID INTEGER,accountID text,data text);
insert into Rulelist values(1, 'geoskygps@gmail.com' , 'data1');
insert into Rulelist values(2, 'geoskygps@gmail.com' , 'data1');
insert into Rulelist values(3, 'geoskygps@gmail.com' , 'data1');
select * FROM Rule
JOIN RUlelist
ON rule.ruleID = RuleList.ruleID
WHERE Rule.accountID = 'geoskygps@gmail.com'
返回以下内容:
ruleID | accountID | data | ruleID | accountID | data
1 | geoskygps@gmail.com | data | 1 | data | data1
3 | geoskygps@gmail.com | data | 3 | data | data1
答案 1 :(得分:0)
所以我明白了。这是正确的查询。
我必须在我的WHERE子句中添加第二个参数,因为两个数据库都拥有相同记录的倍数。
equilateral()
感谢输入人员。
答案 2 :(得分:-1)
规则是SQL中的保留关键字。看看这个:https://msdn.microsoft.com/en-us/library/ms189822%28v=sql.105%29.aspx?f=255&MSPPError=-2147217396
您可以使用单引号设置规则=&gt; 'Rule'.ruleID
等等,但强烈建议您重命名。