programing

mySQL 서브쿼리 제한

nicescript 2022. 9. 30. 12:15
반응형

mySQL 서브쿼리 제한

이건 아마 쉬운 문제일 거야이 쿼리를 사용하여 원하는 것을 달성하려면 어떻게 해야 합니까?

delete from posts where id not in
(SELECT id FROM posts order by timestamp desc limit 0, 15)

그래서 요약하자면, 저는 최신 15일에 없는 모든 게시물을 삭제하고 싶습니다.

내가 그 질문을 해보면, 나는 그것을 이해한다.

MySQL은 아직 'LIMIT & IN / ALL / ANY / SOME 서브쿼리'를 지원하지 않습니다.

편집

mySQL Server version: 5.5.8
mySQL Client version: mysqlnd 5.0.7-dev - 091210 - $Revision: 304625 $

오류: #1235 - 이 버전의 MySQL은 아직 'LIMIT & IN / ALL / ANY / SOME 서브쿼리'를 지원하지 않습니다.

이것을 시험해 보세요.

DELETE 
FROM posts 
WHERE id not in (
      SELECT * FROM (
            SELECT id 
            FROM posts 
            ORDER BY timestamp desc limit 0, 15
      ) 
      as t);

다음과 같이 시험해 보십시오.

DELETE 
    p1.* 
FROM 
    posts p1 INNER JOIN 
    (SELECT 
            id 
    FROM 
            posts 
            ORDER BY timestamp DESC 
            LIMIT 0, 15
    ) AS p2 
ON p1.id = p2.id;

내림차순으로 주문하면 항상 처음 15개부터 최신 15개가 오니까요.처음 15번 안에 들어가지 않은 아이디는 삭제해도 됩니다.그래서 그냥 해봤는데 잘 됐어요.누군가에게 도움이 됐으면 좋겠다.

Delete from `table` where id not in (SELECT * FROM (Select id from `table` order by id desc limit 15) as derivedTable);

언급URL : https://stackoverflow.com/questions/7124418/mysql-subquery-limit

반응형