뉴스 기사 데이터베이스에서 선택하는 것이므로 가능하면 한 번만 수행하는 것이 좋습니다. 결과에서 첫 번째 결과에만 적용되는 정렬 기준이 필요합니다.첫 번째 결과 뒤에 정렬 기준이 변경됩니다.
필자의 경우 첫 번째 결과에는 이미지가 있어야하지만 나머지는 이미지 상태를 신경 쓰지 않고 정렬해야합니다.
MySQL 쿼리에서 일종의 조건문 또는 사용자 변수로 할 수있는 것이 있습니까?
뉴스 기사 데이터베이스에서 선택하는 것이므로 가능하면 한 번만 수행하는 것이 좋습니다. 결과에서 첫 번째 결과에만 적용되는 정렬 기준이 필요합니다.첫 번째 결과 뒤에 정렬 기준이 변경됩니다.
필자의 경우 첫 번째 결과에는 이미지가 있어야하지만 나머지는 이미지 상태를 신경 쓰지 않고 정렬해야합니다.
MySQL 쿼리에서 일종의 조건문 또는 사용자 변수로 할 수있는 것이 있습니까?
하나의 쿼리처럼 보이는 쿼리를 관리하더라도 두 개의 쿼리가 논리적 일 것입니다. 실제로 하나의 쿼리를 작성해야한다면 MySQL UNION을보십시오 (하지만 여전히 2 개의 논리적 쿼리가됩니다). 첫 번째 이미지는 한도로 나머지는 나머지 두 번째 이미지로 결합 할 수 있습니다.
실제로는 2 개의 쿼리 (테이블이 정렬되어야하는 첫 번째 쿼리와 두 번째 정렬되지 않은 쿼리)가 가능하므로 처음에는 LIMIT 1
인 2 개의 쿼리를 사용할 수 있습니다.
이렇게하면 맨 위에 이미지가있는 기사가 표시됩니다.
SELECT
id,
title,
newsdate,
article
FROM
news
ORDER BY
CASE WHEN HasImage = 'Y' THEN 0 ELSE 1 END,
newsdate DESC
"첫 번째 결과"를 더 가깝게 정의하지 않는 한. 이 쿼리는 이미지가있는 기사를 선호하며 끝에없는 기사는 끝에 표시됩니다.
또 다른 변형 (르 dorfier, 어떤 이유에 대한 그의 대답을 삭제 사람 덕분에)이 될 것이다 :
SELECT
id,
title,
newsdate,
article
FROM
news
ORDER BY
CASE WHEN id = (
SELECT MIN(id) FROM news WHERE HasImage = 'Y'
) THEN 0 ELSE 1 END,
newsdate DESC
이것은 초기 정렬 이미지와 글 (가정 MIN (ID 것은) "최초"를 의미) 정상에.
작은 코드 샘플은 어떻게됩니까? – Martin