programing

이 버전의 MariaDB는 아직 'LIMIT & IN / ALL / ANY / SOME 서브쿼리'를 지원하지 않습니다.여러 WHERE 및 LIMITS

goodsources 2022. 10. 10. 18:32
반응형

이 버전의 MariaDB는 아직 'LIMIT & IN / ALL / ANY / SOME 서브쿼리'를 지원하지 않습니다.여러 WHERE 및 LIMITS

제가 지금 하고 있는 건SELECT와 함께WHERE IN를 포함합니다.LIMIT(아래), 마리아가 지원하지 않는 것 같습니다.DB:

This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

여기에서는 다른 솔루션에서 권장하는 솔루션도 살펴보았습니다.INNER JOIN단, 이 예에서는 동작하지 않습니다.이러한 예는 2가지입니다.WHERE둘 다 포함된 쿼리LIMIT

SELECT * FROM table1
WHERE uuid IN (
  SELECT uid FROM table1
  WHERE updated_at LIKE '2019-07-12 08%'
  AND player_id IS NOT NULL
  LIMIT 1
)
OR uuid IN (
  SELECT old_uuid FROM table1
  WHERE updated_at LIKE '2019-07-12 08%'
  AND player_id IS NOT NULL
  LIMIT 1
)

결과는 다음과 같습니다.

SELECT uuid, old_uuid FROM table1
WHERE updated_at LIKE '2019-07-12 08%'
AND player_id IS NOT NULL
LIMIT 1

두 값을 가져온 후 다음 위치에 삽입합니다.

SELECT * FROM table1
WHERE uuid LIKE *VALUE1* --(uuid from above)
OR uuid LIKE *VALUE2* --(old_uuid from above)

하지만 첫 번째 문을 실행할 필요 없이 값을 복사하여 두 번째 문에 붙여넣고 다시 실행합니다.

여기서 파생 테이블을 사용할 수 있습니다.입수하다uid그리고.old_uuid서브쿼리(파생표)의 조건에 따라 다음 작업을 수행합니다.JOIN둘 중 하나와 일치하는 메인 테이블과uuid:

SELECT 
  t1.*
FROM 
  table1 AS t1 
JOIN 
(
  SELECT uid, old_uuid 
  FROM table1
  WHERE updated_at LIKE '2019-07-12 08%'
    AND player_id IS NOT NULL
  LIMIT 1
) AS dt ON dt.uid = t1.uuid 
           OR dt.old_uuid = t1.uuid 

언급URL : https://stackoverflow.com/questions/57006450/this-version-of-mariadb-doesnt-yet-support-limit-in-all-any-some-subquery

반응형