2014-03-02 116 views
0

嗨,我有這個查詢,但它給我一個操作數的錯誤應該包含1列(s)不知道爲什麼?嵌套的SELECT SQL查詢工作臺

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

你可以粘貼你得到確切的錯誤信息? – wlk

+0

錯誤代碼:1241.操作數應該包含1列 – mariovass

回答

1

根據您的查詢你想從儀器instrumentModel表,並在你的情況下,其預計「從表名」的數據後,您的選擇*。當子選擇查詢運行以獲取其結果是其沒有找到表instrument.InstrumentModelId爲了通過匹配從表中獲取結果,您可以使用join。或者,也可以通過tableName.fieldName選擇細分字段,並在where條件中使用您的條件。

喜歡:

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

請不要在where子句中使用過時的隱式連接。使用現代顯式的'JOIN'語法 –

0

您可以使用連接到從2個連接表

select * 
from Instrument i 
join InstrumentModel m on m.InstrumentModelID = i.InstrumentModelID 
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 ...

與表1是每個子查詢執行一次,導致了這種類型的查詢的表現很糟糕的table0的加入。

因此,您應該加入表格,如其他答案所述。