카테고리 없음
[mysql] 결과에 반환하지 않고 ORDER BY에 대해서만 열을 선택합니다.
필살기쓰세요
2021. 2. 17. 01:05
열이 테이블 / 뷰에 정의되어있는 경우 해당 열을 사용하고 ORDER BY
결과에서 생략 할 수 있습니다 . 그러나 귀하의 경우에는에서 계산 된 열 을 사용 ORDER BY
하고 있으므로 이러한 열을 생략하려면에서 ORDER BY
해당하는 공식 으로 대체해야합니다 . 예 :
ORDER BY
CASE WHEN (`name` = "John Smith") = 1 THEN (`name` = "John Smith") END DESC
-- etc...
나는 이것이 좋은 해결책이 아니라고 생각합니다. 대신 하위 쿼리를 사용하는 것이 좋습니다.
INSERT INTO relational (class_id, teacher_id, student_id)
SELECT id,1,1 FROM
(SELECT `id`,
(`name` = "John Smith") as exact_score,
(`name` RLIKE "[[:<:]]John Smith[[:>:]]") as reg_score,
(MATCH (`name`) AGAINST ("John Smith")) as match_score
FROM `teachers`
WHERE (`title` RLIKE "[[:<:]]John Smith[[:>:]]" || MATCH (`title`) AGAINST ("John Smith"))
ORDER BY
CASE WHEN exact_score = 1 THEN exact_score END DESC,
CASE WHEN reg_score > 1 THEN reg_score END DESC,
CASE WHEN reg_score = 0 AND exact_score = 0 THEN match_score END DESC)
AS t1;
출처
https://stackoverflow.com/questions/39940030