카테고리 없음

[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