>  Q&A  >  본문

값이 존재하지 않는 경우에만 행을 반환합니다.

<p>테이블이 2개 있습니다. - <code>Booking</code>: </p> <pre class="brush:php;toolbar:false;">some_other_column | --+------ 1 | 값 2|값 3 | 값</pre> <p>두 번째 테이블 - <code>reservation_log</code>: </p> <pre class="brush:php;toolbar:false;">reservation_id | -----+---+------------- 1 | 1 | 2 | 2 | 3 | 3 | 4 | 1 | 취소 5 | 2 | 취소</사전> <p>취소되지 않은 예약만 선택하면 됩니다(이 경우 ID 3만 해당). 간단한 <code>WHEREchange_type = cancel</code> 조건을 사용하여 "취소"를 쉽게 선택할 수 있지만 간단한 <code>WHERE</code> 여기서는 일하지 마세요. </p>
P粉043470158P粉043470158422일 전340

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

  • P粉596161915

    P粉5961619152023-08-25 09:32:07

    완전함을 위해(저는 이것이 더 적합하다고 믿습니다) 간단한 NOT EXISTS을 사용하는 것이 좋습니다.

    으아악

    회신하다
    0
  • P粉692052513

    P粉6920525132023-08-25 00:35:13

    으아아아

    또는:

    으아아아

    첫 번째 버전이 더 직관적이지만 일반적으로 두 번째 버전을 사용하면 더 나은 성능을 얻을 수 있다고 생각합니다(조인에 사용된 열에 인덱스가 있다고 가정).

    두 번째 버전은 LEFT JOIN이 첫 번째 테이블의 모든 행에 대해 하나의 행을 반환하기 때문에 작동합니다. ON 条件成功时,这些行将包含第二个表中的列,就像 INNER JOIN 一样。当条件失败时,返回的行将包含第二个表中所有列的 NULL。然后,WHERE l.id IS NULL 테스트가 이 행과 일치하면 테이블 간에 일치하지 않는 모든 행을 찾습니다.

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