SELECT
c.cy_id AS cy_id,
(SELECT
c.to_id
FROM c
WHERE (c.to_id = se.ar))AS tsn,
(SELECT
se.x
FROM se
WHERE (c.to_id = se.ar)) AS X,
(SELECT
se.y
FROM se
WHERE (c.to_id = se.ar)) AS y
FROM (c
JOIN se)
WHERE (c.to_id = se.ar)
위의 쿼리에서 mysql을 실행하면 오류 하위 쿼리에서 두 개 이상의 행을 반환합니다. 하지만 아래의 쿼리를 수행하면 결과가 반환됩니다.mysql의 하위 쿼리 오류
SELECT
c.cy_id AS cy_id,
(SELECT DISTINCT
c.to_id
FROM c
WHERE (c.to_id = se.ar))AS tsn,
(SELECT
se.x
FROM se
WHERE (c.to_id = se.ar)) AS X,
(SELECT
se.y
FROM se
WHERE (c.to_id = se.ar)) AS y
FROM (c
JOIN se)
WHERE (c.to_id = se.ar).
이유가 필요합니다.
당신이 DISTINCT 사용하는 경우, 쿼리가 다른 행을 반환이 시도하고 당신에게 당신이 원하는 결과를 얻을 수 있는지 확인 두 가지 (또는 그 이상)의 결과가 모두 동등하기 때문에 하나의 결과. 첫 번째 하위 쿼리를 확인하고 반환되는 행 수를 확인하십시오. – Sirac
@Sirac : 내 첫 번째 쿼리 does not 반환 모든 row.it subquery 하나 이상의 행을 반환하지만 내가 DISTINCT 사용하여 두 번째 쿼리를 실행할 때 그것은 나에게 78 행을 제공하는 오류가 주어진다. 차이점은 무엇입니까? – user3454116
당신이 이것을 실행해야한다는 것을 의미합니다 :'SELECT c.to_id FROM c WHERE (c.to_id = se.ar)'그리고 반환되는 행의 수를 봅니다. 둘 이상의 행이있는 경우 DISTINCT를 어떻게 사용해야합니다. DISTINCT를 사용하지 않고 문제를 해결하려면 c.to_id 열을 primary 또는 unique 열로 선언해야합니다. (따라서 PRIMARY 및 UNIQUE 키워드를 확인하십시오) – Sirac