1
내가 같은 테이블에서
두 개의 열를 검색 할
하지만 현재 행의 특정 열이 설정되지 않은 경우에만. 검색 할 단 하나의 열만 있으면 아무런 문제가 없습니다. 일단 다른 컬럼이 필요하면, 다른 case-clause과 함께 또 다른 하위 쿼리가 필요할 것으로 보이지만, 이는 실제로 비효율적 인 것처럼 보입니다. 이전에 조인을 사용 해 본 적이 없지만 케이스 절과 실제로 복잡하다고 생각합니다.MySQL의 행 부질 케이스 (여러 열) (하지의 경우 절)
나는 그것이 필요한 경우 실제로는 (들었을 때) 낭비적인 하위 쿼리 만 실행한다는 것이 었습니다.
문서에서 나는 ROW()
을 사용한 비교가 가능하다는 것을 발견했습니다. AS
으로 열을 검색 할 수있는 동일한 항목이 있습니까?
아무리 조심해 주셔서 감사합니다. 조인스와 만 작동하는 경우, 올바른 방향으로 밀어 넣으십시오. 복잡하게 보이기 때문에 케이스 조항을 사용하면 앞으로 나아갈 경우 엉망이 될 수 있습니다.
루벤은
SELECT id, bekannt, (
CASE WHEN bekannt = ''
THEN (
SELECT bekannt
FROM vokabeln AS v2
WHERE v2.id = vokabeln.hinweis
LIMIT 1
)
ELSE NULL
END
) AS lueckentext, (
CASE WHEN bekannt = ''
THEN (
SELECT hinweis
FROM vokabeln AS v2
WHERE v2.id = vokabeln.hinweis
LIMIT 1
)
ELSE NULL
END
) AS lthinweis
FROM vokabeln
WHERE nutzer = 'test'
는 lot__을 __Thanks이 내가 예상대로 복잡 보이지 않는다. 조인이 조건부 일 수 있다는 것을 알지 못했습니다. 언젠가 나 스스로 제대로 할거야. – Ruben
네,'JOIN' 절의'ON' 하위 절은 부울 표현식이 될 수 있습니다 (그리고'OUTER' 조인은'SELECT' 목록의 두 번째 테이블 필드 대신'NULL's를 넣습니다. 첫 번째 표에서 두 번째 표의 행은 '켜짐'조건을 충족하지 않습니다. –
어떻게 든 _default_ 테이블을 가정으로 지정할 수있어서'v1.id'를 지정할 필요는 없지만'id'는 모호하지 않게'v1.id'로 결정됩니다 (여전히'v2.something' 만 지정되어 있습니다).)? – Ruben