이것은 초보자로서 지금 당장 나를 괴롭 히고 있습니다. 정확히 무엇을 찾아야할지 잘 모르겠습니다. 몇 시간의 인터넷 검색 결과 만족스러운 답변을 찾을 수 없었습니다. 나는 그 new_field_*
의 약 30가, 원래의 질의에다른 하위 쿼리 (최적화)에서 WHERE IN의 하위 쿼리 결과 사용
SELECT field_a1,
field_a2,
(SELECT Count(*)
FROM table_b
WHERE field_b1 IN (SELECT field_x1
FROM table_x) AND field_b2 = 1) AS new_field_1,
(SELECT Count(*)
FROM table_c
WHERE field_c1 IN (SELECT field_x1
FROM table_x) AND field_c2 = 2) AS new_field_2,
(SELECT Count(*)
FROM table_d
WHERE field_d1 IN (SELECT field_x1
FROM table_x) AND field_d2 = 3) AS new_field_3
FROM table_a
WHERE field_a1 IN (SELECT field_x1
FROM table_x)
:
내가
내가 벗겨되고 단순화 상대적으로 복잡한 쿼리가 있습니다. 모든 것이 잘 작동하는 것처럼 보이고 몇 가지 매우 만족스러운 결과 (최종 결과 및 성능)를 얻고 있습니다.SELECT field_x1
FROM table_x
시간의 꽤 많은 수의 반복된다 (행 30 * 번호가 반환) 항상 WHERE IN
이 경기를 찾습니다있는 세트로 사용된다
내 문제는이 쿼리는 것이다.
내 질문 :
는 한 번만이 작은 쿼리를 실행하고 그 결과를 유지하고 반복적으로 사용할 수 있습니까?
temp = (SELECT field_x1
FROM table_x)
SELECT field_1
FROM table_1
WHERE field_1 IN temp
또는 클라이언트 측에서 한 번이 쿼리를 실행 (웹 서버 실행 PHP) 한 후 그 결과를 추가 : 내가 생각할 수
유일한 두 (말도) 일이 (가상 솔루션) 같은 것을했다 이 같은 것을 이용하여 미래의 쿼리 :
$IN_Condition = implode(',', $stmt->execute()->fetchAll(PDO::FETCH_NUM));
$sql_query = "SELECT field_1
FROM table_1
WHERE field_1 IN ($IN_Condition)"
확인이 링크를. 나는 당신이 일할 생각을 갖기를 바랍니다. http://www.tutorialsp.com/mysql/mysql-temporary-tables.htm –
@ V.P.Verma, 감사합니다. 나는 임시 테이블을 고려해 봤지만 각 하위 쿼리에서 여전히 SELECT를 선택해야합니다. 나는 그것이 내가 찾고있는 것이라고 생각하지 않는다. – Adi