아래 쿼리를 작성할 때 "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;
중첩 된 Select 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 부모의 모든 행에 대해 실행하려는 반면 위의 코드는 끝없는 루프로 전환 :
는 또한 다른 제안을 시도했다.당신이 아래의 쿼리를 단순화 어떻게 됐어 :
는 ANSWER와 더불어 최신의 것으로 바꾼다?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
작동합니다 같아요? 이 바이올린은 MySQL, MS SQL 2008 또는 2012에서 작동하지 않습니다. http://www.sqlfiddle.com/#!3/f32ce/1 –
죄송 합니다만, so.id는 알 수 없으며 쿼리가 무한 루프를 유발합니까? –
업데이트 됨. MySQL에서 중첩 된 select 문을 어떻게 만들었습니까? 부모의 모든 기록으로 다른 select 문을 어떻게 실행 했습니까? –