我对sql非常陌生,对自己正在做的事情不太了解。我想弄清楚如何得到一个潜在客户和拥有者的列表,他们对应的竞选记录类型被称为“inter”
到目前为止,我已经尝试连接两个表,并运行在另一个堆栈溢出页上发现的字符串比较。他们分开工作很好,但一起一切都打破了。。。我只得到一个错误“你的sql语法有错误;“检查手册”
select a.LeadId, b.OwnerId from
(select * from CampaignMember as a
join
select * from Campaign as b
on b.id = a.CampaignId)
where b.RecordTypeId like "inter%"
架构:
Campaign CampaignMember
------------- ----------------
Id CampaignId
OwnerId LeadId
RecordTypeId ContactId
字符串比较也非常慢。我正在看一个有6亿美元价值的表格。有没有更快的选择?
有没有一种方法可以在mysql中获得更具体的错误?
3条答案
按热度按时间ahy6op9u1#
mysql通常很差,并且处理子选择,所以您应该尽可能避免使用它们。另外,您的子选择没有过滤任何行,因此它必须在应用
LIKE
过滤器。这有时是由查询引擎“智能”处理的,但是您应该尽量减少对引擎的依赖以优化查询。另外,您真的应该只返回您关心的列;
SELECT *
可以确认问题,但会减慢查询速度。因此,eric(上图)发布的查询实际上是最佳选择。
zbdgwd5y2#
试试这个:
zf9nrax13#
如果你正确格式化你的代码,你会很容易明白为什么它不起作用。
这不是一个有效的
JOIN
格式。最后一部分,sql使用单引号'
而不是双引号"
也许你想要的是这样的东西