mysql 테이블 열을 편집 할 수있는 양식이 있습니다. 링크를 클릭하여 이전, 다음, 처음 또는 마지막 행을로드 할 수 있습니다. 열을 정렬 할 수 있습니다 (최대 4 열을 주문할 수 있음). 그래서 내가 Prev. 또는 다음으로 열을 먼저 정렬 한 다음 결과를 얻을 수 있습니다. 나는 이것을 위해 MySQL View를 사용한다. 열은 텍스트이지만 id는 숫자라는 것을 아는 것이 중요합니다. 나는 일반적으로 첫 번째 텍스트 열을 기준으로 정렬 한 다음 ID를 기준으로 정렬합니다.여러 텍스트 열 순서로 이전 또는 다음 행을 선택하는 방법
그리고 단일 열 순서에 대해 저에게 도움이되는 쿼리가 있습니다. 이전
:
SELECT x.*
FROM test_view x, test_view y
WHERE y.`id` = 13
AND (x.`cat` < y.`cat` OR (x.`cat` = y.`cat` AND x.`id` < y.`id`))
ORDER BY x.`cat`, x.`id` DESC
LIMIT 0,1
다음 :
SELECT x . *
FROM ukazka_view x, ukazka_view y
WHERE y.`id` =1
AND (
x.`cat` < y.`cat`
OR (
x.`cat` = y.`cat`
AND x.`id` < y.`id`
)
)
AND (
x.`typ` < y.`typ`
OR (
x.`typ` = y.`typ`
AND x.`id` < y.`id`
)
)
AND (
x.`diff` < y.`diff`
OR (
x.`diff` = y.`diff`
AND x.`id` < y.`id`
)
)
ORDER BY x.`cat` DESC , x.`typ` DESC , x.`diff` DESC , x.`id` DESC
LIMIT 0 , 1
을하지만이 결과가 없습니다 :
SELECT x.*
FROM test_view x, test_view y
WHERE y.`id` = 13
AND (x.`cat` > y.`cat` OR (x.`cat` = y.`cat` AND x.`id` > y.`id`))
ORDER BY x.`cat`, x.`id` ASC
LIMIT 0,1
나는이 같은 여러 열을 찾으려면이 확장했습니다.
편집 됨 :..
I 실제 행 ID 1.
SELECT x.* FROM ukazka_view x INNER JOIN ukazka_view y ON
(x.`cat` < y.`cat` OR
(x.`cat` = y.`cat` AND x.`id` < y.`id`) OR
(x.`cat` = y.`cat` AND y.`id` = 1 AND x.`id` > y.`id`))
AND (X typ
< Y typ
OR (X 인 경우에 대한 쿼리를 작성하려고 typ
. = y. typ
AND x. id
<y. id
) 또는 (x. typ
= y. typ
그리고 y. id
= 1 AND x. id
> y. id
)) AND (X. diff
< Y. diff
OR (X. diff
= Y. diff
AND X. id
< Y. id
) OR (X. diff
= Y. diff
AND Y. id
= 1 AND x. id
> y. id
)) 어디 y. id
= 1 주문 x. cat
DESC, x. typ
DESC, x. diff
DESC, x. id
DESC LIMIT 0,1
이전 행을 찾습니다. 행동은 조금 이상하지만 작동합니다. 그래서 마지막 값으로 갈 때, 나는 id = 1을 얻었습니다. 그런 다음 Previous (이 쿼리)를 누르면 id = 82가됩니다. 이전 id = 81 등을 다시 누르면 id = 2가됩니다. 나는 Last를 누르거나 선택했을 때만 id = 1로 갈 수 없다.
암시 적 조인은 anti-pattern입니다. 명시 적 조인을 사용하고 1989 년을 빠져 나가는 것이 좋습니다. – Johan
첫 번째 두 코드는 SQL을 훨씬 잘 이해하는 사람이 나에게주었습니다. 나는 초보자 일 뿐이므로 귀하의 의견을 이해할 수 없습니다. 또한 처음 두 코드는 우리나라에서 매우 좋은 평판을 얻은 한 사이트의 예에서 가져온 것입니다. – Joe
암시 적 조인의 문제점은 필터와 조인 기준을 혼합한다는 것입니다. 이것은 나쁘고 혼란스럽고 이런 이유로 명시 적 조인 구문은 아래 답변을 참조하십시오. 1992 년에 발명되었습니다 (!). 여기서는 조인 기준이 별도로 나열됩니다. 쿼리를 훨씬 명확하고 쉽게 디버깅 할 수 있습니다. 그렇지 않으면 동일하게 작동합니다. – Johan