1
當寫下面的查詢時,它會抱怨「so.id」列是未知的!下面的查詢在MS SQL中正常工作,但不在MySQL中?如何在MySQL中編寫嵌套的select語句?如何在MySQL中創建嵌套的SQL查詢?
這是什麼等價物?
select so.*
from smart_objects as so
inner join (
SELECT st.objectid, st.issueid
FROM smart_targets as st
WHERE st.issueid != 0
AND
( (st.objectid = so.id)
OR
(
st.objectid in (
SELECT sor.parent
FROM smart_objectrelations as sor
WHERE sor.child = so.id)
)
)) as soi
on soi.objectid = so.id
where so.id < 100;
我需要內部連接嵌套選擇SQL基本上。我的select語句比上面更復雜,上面只是一個簡化版本來解釋嵌套表。
我也嘗試過其他的建議:
select so.*
from smart_objects as so
inner join (
SELECT st.objectid, st.issueid
FROM smart_targets as st, smart_objects as so
WHERE st.issueid != 0
AND
( (st.objectid = so.id)
OR
(
st.objectid in (
SELECT sor.parent
FROM smart_objectrelations as sor
WHERE sor.child = so.id)
)
)) as soi
on soi.objectid = so.id
where so.id < 100;
上面的代碼進入一個永無止境的循環,而我只是想嵌套的SQL來爲母公司的每一行運行。
已更新與答案:
您是如何簡化下面的查詢?
select so.*
from smart_objects as so
inner join (
SELECT st.objectid, st.issueid
FROM smart_targets as st, smart_objects as so
WHERE st.objectid = so.id
and st.issueid != 0
AND
( (st.objectid = so.id)
OR
(
st.objectid in (
SELECT sor.parent
FROM smart_objectrelations as sor, smart_objects as so
WHERE sor.child = so.id)
)
)
) as soi
on soi.objectid = so.id
難道真的在MS SQL工作?這個小提琴在MySQL和MS SQL 2008或者2012中都不起作用:http://www.sqlfiddle.com/#!3/f32ce/1 – 2013-02-12 08:48:19
對不起,但是如何解決這個問題,so.id是未知的,而且查詢觸發無限循環? – 2013-02-12 08:52:47
已更新。你怎麼在MySQL中創建嵌套的select語句?你如何用父母的每條記錄運行另一條select語句? – 2013-02-12 08:56:07