首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SQL WHERE子句中使用多个条件

在SQL WHERE子句中使用多个条件
EN

Stack Overflow用户
提问于 2012-06-18 23:31:40
回答 3查看 49.5K关注 0票数 1

我一直在网上搜索,甚至在Stackoverflow中关于这个问题的问题,但没有收到任何相关的回应。我在下面展示SQL查询,

代码语言:javascript
运行
复制
SELECT Scania.GensetType
    , Scania.EngineType
    , Scania.Engine60Hz
    , Scania.Alternator
    , Scania.PriceEur 
FROM Scania 
LEFT JOIN NordhavnGenset 
    ON Scania.GensetType=NordhavnGenset.Alternator 
WHERE (NordhavnGenset.MaxKva='46') 
    and (Generator.Alternator='ECP34-1LN/4') 
    and (insulation.Insulation='F (90ºC/45ºC)') 
    and (Klasse.Klasse='KRS\r') 
    and (airinletfilter.AirInletFilter='No') 
    and (Ip.IP='IP23');

总是返回下面的错误消息,并且我已经多次检查该列是否存在于表中!

代码语言:javascript
运行
复制
#1054 - Unknown column 'Generator.Alternator' in 'where clause'

但是,如果我通过在第一个Where子句处停止来执行查询,那么将显示结果,

代码语言:javascript
运行
复制
SELECT Scania.GensetType
    , Scania.EngineType
    , Scania.Engine60Hz
    , Scania.Alternator
    , Scania.PriceEur 
FROM Scania 
LEFT JOIN NordhavnGenset 
    ON Scania.GensetType=NordhavnGenset.Alternator 
WHERE (NordhavnGenset.MaxKva='46');

新查询

代码语言:javascript
运行
复制
    SELECT  Scania.GensetType, Scania.EngineType, Scania.Engine60Hz, Scania.Alternator, Scania.PriceEur
FROM Scania  
LEFT JOIN NordhavnGenset
    ON Scania.GensetType=NordhavnGenset.Alternator 
LEFT JOIN Generator
    ON Scania.Alternator=Generator.Alternator
LEFT JOIN Insulation 
    ON NordhavnGenset.Insulation=Insulation.Insulation
LEFT JOIN Klasse
    ON NordhavnGenset.Class=Klasse.Class
LEFT JOIN AirInletFilter
    ON NordhavnGenset.AirInletFilter=AirInletFilter.AirInletFilter
LEFT JOIN IP
    ON NordhavnGenset.Ip=IP.IP
WHERE (NordhavnGenset.MaxKva='46') and (Generator.Alternator='ECP34-1LN/4') and (Insulation.Insulation='F (90ºC/45ºC)') and (Klasse.Klasse='KRS\r') and (AirInletFilter.AirInletFilter='No') and (IP.IP='IP23');
EN

回答 3

Stack Overflow用户

发布于 2012-06-18 23:35:54

看起来您不是在名为Generator的表上联接。除非对表执行JOIN操作,否则不能在WHERE子句中包含该表。

如果将JOIN添加到Generator,则可以在WHERE子句中使用它。

代码语言:javascript
运行
复制
SELECT *
FROM Scania 
LEFT JOIN NordhavnGenset 
    ON Scania.GensetType=NordhavnGenset.Alternator 
LEFT JOIN Generator 
    ON ....
WHERE (Generator.Alternator='ECP34-1LN/4') ...

您的WHERE子句中还有其他不是JOINed on的表,因此也需要添加这些表。

票数 7
EN

Stack Overflow用户

发布于 2012-06-18 23:36:15

错误的原因是您没有联接在WHERE子句中使用的表。

下面的代码总是会给出错误-

代码语言:javascript
运行
复制
and (Generator.Alternator='ECP34-1LN/4') 
and (insulation.Insulation='F (90ºC/45ºC)') 
and (Klasse.Klasse='KRS\r') 
and (airinletfilter.AirInletFilter='No') 
and (Ip.IP='IP23');

您需要联接该表,或者该表的别名应该是“.”前面的名称。

票数 0
EN

Stack Overflow用户

发布于 2012-06-18 23:36:30

您没有在联接中包含Generator表。要么添加它,要么用NordhavnGenset.Alternator代替Generator.Alternator

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11086064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档