嵌套的SELECT SQL查询工作台

时间:2014-03-02 18:11:49

标签: mysql sql subquery

嗨我有这个查询但它给我一个操作数错误应该包含1列不确定原因?

Select *, 
(Select *
FROM InstrumentModel
WHERE InstrumentModel.InstrumentModelID=Instrument.InstrumentModelID)
FROM Instrument

3 个答案:

答案 0 :(得分:1)

根据您的查询,您希望从instrument和instrumentModel表中获取数据,并且在您的情况下,在您选择*之后期望“来自表名”。当子选择查询运行以获得其结果时,其未找到表instrument.InstrumentModelId inorder通过匹配从表中获取结果,您可以使用join。或者您也可以通过tableName.fieldName选择perticuler字段,并在where条件中使用您的条件。

喜欢:

 select Instrument.x,InstrumentModel.y
 from instrument,instrumentModel
 where instrument.x=instrumentModel.y 

答案 1 :(得分:0)

您可以使用联接从2个连接的表中进行选择

select *
from Instrument i
join InstrumentModel m on m.InstrumentModelID = i.InstrumentModelID

答案 2 :(得分:0)

在列列表中使用子查询时,它们只需要返回一个值。您可以在documentation

中阅读更多内容

作为用户在文档中注释,使用这样的子查询可能会破坏您的性能:

  

当多次使用相同的子查询时,mysql不会使用此事实来优化查询,因此请注意不要遇到性能问题。

     

示例:

     

SELECT col0, (SELECT col1 FROM table1 WHERE table1.id = table0.id), (SELECT col2 FROM table1 WHERE table1.id = table0.id) FROM table0 WHERE ...

     

对于每个子查询,table0与table1的连接执行一次,导致这种查询的性能非常差。

因此,您应该加入表格,如另一个答案所述。