>  Q&A  >  본문

mysql의 쿼리는 테이블 중 하나가 비어 있으면 결과가 0입니다.

다음 3개의 테이블이 있습니다:

으아악

다음 조건 중 하나 이상을 만족하는 보고서 테이블의 행을 가져오고 싶습니다.

으아악

먼저 공개적으로 액세스할 수 있는 새 보고서를 만듭니다.

으아악

그러면 user_id = 1로만 다른 보고서에 액세스할 수 있습니다.

으아악

그러면 다른 보고서는 group_id=1로만 액세스할 수 있습니다

으아악

이제 3개의 행이 있습니다. 각 행은 액세스 가능하고, 한 행은 user_id = 1만 액세스할 수 있고, 다른 행은 group_id = 1만 액세스할 수 있습니다.

user_id = 1인 모든 행을 제공하세요:

으아악

2줄이 있어요. 효과가있다.

group_id = 1인 모든 행을 제공하세요:

으아악

2줄이 있어요. 효과가있다.

하지만. report_users 또는 report_groups가 비어 있으면 결과가 나오지 않습니다. 먼저 이 쿼리를 실행합니다.

으아악

이전과 동일한 쿼리를 실행하면 빈 집합이 나타납니다. 왜? 실제로 제가 보내는 user_id와 group_id는 별 차이가 없는 것 같습니다. 나는 항상 0 행을 얻습니다.

두 테이블 중 하나가 비어 있다고 해서 결과가 나오지 않는 것 같아요. 쿼리 자체에 문제가 있는 걸까요?

P粉848442185P粉848442185402일 전423

모든 응답(1)나는 대답할 것이다

  • P粉087951442

    P粉0879514422023-09-14 12:48:37

    이 코드 줄로 무엇을 합니까?

    으아악

    는 3개의 테이블에 대한 (이전 스타일) CROSS JOIN입니다. 즉, 테이블 중 하나가 비어 있으면 결과도 비어 있습니다.

    대신 EXISTS를 사용하세요:

    으아악

    회신하다
    0
  • 취소회신하다