MySQL에서 찾을 수없는 값 목록을 반환하는 방법

유선

colA에 대한 값 목록으로 table1쿼리 하고 발견되지 않은 값 목록을 다시 가져올 수있는 방법은 무엇입니까?

즉, all_values = [ "a", "b", "c", "d"]

Table1 에 "b", "c"에 대한 colA 가있는 행이 이미 있습니다.

전체 all_values 목록을 보내고 new_values = [ "a", "d"]를 반환 할 수있는 쿼리를 만들고 싶습니다 .

현재는 먼저 모든 existing_values =를 얻은 SELECT colA FROM table1다음 응용 프로그램 계층 (ruby)에서 new_values = all_values - existing_values 를 수행해야 합니다. 그러나 all_values가 매우 커지면 비용이 많이 드는 루틴이 될 수 있습니다 . 여기에서 db 파워를 활용하여 애플리케이션 계층에 큰 목록을 먼저 반환 할 필요없이 내 목록의 어떤 값이 이미 존재하지 않는지 알려주고 싶습니다.

아래의 David Faber의 확인 된 답변에서 [ Solution ] 누군가가 관심이있을 경우를 대비하여 애플리케이션 레이어 관점 (루비 온 레일)의 솔루션입니다. 사용하려는 모든 모델에 포함될 수 있도록 메서드를 작성했으며 열과 값 목록을 인수로 허용합니다. [ Update ] 임시 테이블 이름을 매개 변수화하고 데이터 유형을 적절하게 설정합니다.

    def self.unfound_values_by_column values, column
      quoted_values = values.collect {|value| "('#{value}')"}.join(",")
      conn = self.connection # get this model's connection if different than base
      temp_table_name = "temp_values_for_unfound_lookup_table"
      datatype = self.columns_hash[column].sql_type
      begin
        conn.execute(
          "DROP TEMPORARY TABLE IF EXISTS #{temp_table_name}"
        )
        conn.execute(
          "CREATE TEMPORARY TABLE #{temp_table_name} (`#{column}` #{datatype})"
          )
        conn.execute(
          "INSERT INTO #{temp_table_name} (#{column}) VALUES #{quoted_values}"
        )
        unfound = conn.select_values(
          "SELECT temp.`#{column}` FROM `#{temp_table_name}` temp 
            WHERE NOT EXISTS ( 
              SELECT 1 FROM `#{self.table_name}` my
                WHERE my.`#{column}` = temp.`#{column}`
            )"
        )
      ensure
        conn.execute(
          "DROP TEMPORARY TABLE IF EXISTS #{temp_table_name}"
        )
      end
     unfound
    end
데이비드 페이버

가장 좋은 방법은 임시 테이블 (현재 세션에만 표시되고 해당 세션이 종료 될 때 삭제됨)을 만들고에 모든 값을 삽입 all_values한 다음 기존 테이블과 비교하는 것입니다. 예를 들면

CREATE TEMPORARY TABLE `all_values`
(
    `myvalue` VARCHAR(30)
);

-- insert values

SELECT av.`myvalue`
  FROM `all_values` av
 WHERE NOT EXISTS ( SELECT 1 FROM `table1` t
                     WHERE t.`ColA` = av.`myvalue` );

나는 개인적으로 WHERE EXISTS구문이 LEFT JOINwith 보다 key = NULL쉽지만 YMMV를 찾습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

MySQL에서 찾을 수없는 값 목록을 반환하는 방법

분류에서Dev

mongodb 찾기 쿼리에서만 값 목록을 반환하는 방법

분류에서Dev

목록의 목록을 반환하는 대신 목록에 .map ()의 반환 값을 추가하는 방법

분류에서Dev

정수 목록에서 최대 값을 찾는 방법

분류에서Dev

함수에서 값 배열을 반환하는 방법 php mysql

분류에서Dev

사전 목록에서 값을 참조하고 반환하는 방법

분류에서Dev

사전 내에있는 목록에서 값을 찾는 방법

분류에서Dev

사전 내에있는 목록에서 값을 찾는 방법

분류에서Dev

사전 내에있는 목록에서 값을 찾는 방법

분류에서Dev

사전에서 목록의 최대 값을 찾는 방법

분류에서Dev

목록에서 유형 값을 찾는 방법

분류에서Dev

mysql에서 json 문자열 값을 반환하는 방법

분류에서Dev

열에서 값을 찾고 Python에서 열 이름을 반환하는 방법

분류에서Dev

스칼라의 if 블록에서 값을 반환하는 방법

분류에서Dev

중첩 목록에서 목록 값을 구분하는 방법

분류에서Dev

cfscript 함수에서 객체 목록을 반환하는 방법

분류에서Dev

Excel VBA-열에서 값을 찾고 해당 행을 반환하는 방법

분류에서Dev

범위 목록에서 숫자를 찾고 색인을 반환하는 방법

분류에서Dev

목록에서 범주를 찾을 수없는 경우 Excel 합계 값 (더 나은 코딩 방법)

분류에서Dev

파이썬에서 함수 (반환 값 포함)로 목록을 업데이트하는 방법

분류에서Dev

키가 일치하지 않는 사전 목록에서 값을 찾는 방법

분류에서Dev

avg 함수 (mysql)에서 반환 한 값을 각도로 표시하는 방법

분류에서Dev

두 목록에없는 값을 찾는 가장 좋은 방법 C #

분류에서Dev

목록에서 모든 국소 최댓값과 최솟값을 찾는 방법

분류에서Dev

Google 스크립트를 사용하여 다른 목록에없는 목록에서 값을 반환하는 방법

분류에서Dev

AVL 트리에서 특정 값을 찾고 노드를 반환하는 방법

분류에서Dev

약속 함수에서 값을 반환하는 방법

분류에서Dev

비동기 함수에서 값을 반환하는 방법

분류에서Dev

함수에서 키 값 쌍을 반환하는 방법

Related 관련 기사

  1. 1

    MySQL에서 찾을 수없는 값 목록을 반환하는 방법

  2. 2

    mongodb 찾기 쿼리에서만 값 목록을 반환하는 방법

  3. 3

    목록의 목록을 반환하는 대신 목록에 .map ()의 반환 값을 추가하는 방법

  4. 4

    정수 목록에서 최대 값을 찾는 방법

  5. 5

    함수에서 값 배열을 반환하는 방법 php mysql

  6. 6

    사전 목록에서 값을 참조하고 반환하는 방법

  7. 7

    사전 내에있는 목록에서 값을 찾는 방법

  8. 8

    사전 내에있는 목록에서 값을 찾는 방법

  9. 9

    사전 내에있는 목록에서 값을 찾는 방법

  10. 10

    사전에서 목록의 최대 값을 찾는 방법

  11. 11

    목록에서 유형 값을 찾는 방법

  12. 12

    mysql에서 json 문자열 값을 반환하는 방법

  13. 13

    열에서 값을 찾고 Python에서 열 이름을 반환하는 방법

  14. 14

    스칼라의 if 블록에서 값을 반환하는 방법

  15. 15

    중첩 목록에서 목록 값을 구분하는 방법

  16. 16

    cfscript 함수에서 객체 목록을 반환하는 방법

  17. 17

    Excel VBA-열에서 값을 찾고 해당 행을 반환하는 방법

  18. 18

    범위 목록에서 숫자를 찾고 색인을 반환하는 방법

  19. 19

    목록에서 범주를 찾을 수없는 경우 Excel 합계 값 (더 나은 코딩 방법)

  20. 20

    파이썬에서 함수 (반환 값 포함)로 목록을 업데이트하는 방법

  21. 21

    키가 일치하지 않는 사전 목록에서 값을 찾는 방법

  22. 22

    avg 함수 (mysql)에서 반환 한 값을 각도로 표시하는 방법

  23. 23

    두 목록에없는 값을 찾는 가장 좋은 방법 C #

  24. 24

    목록에서 모든 국소 최댓값과 최솟값을 찾는 방법

  25. 25

    Google 스크립트를 사용하여 다른 목록에없는 목록에서 값을 반환하는 방법

  26. 26

    AVL 트리에서 특정 값을 찾고 노드를 반환하는 방법

  27. 27

    약속 함수에서 값을 반환하는 방법

  28. 28

    비동기 함수에서 값을 반환하는 방법

  29. 29

    함수에서 키 값 쌍을 반환하는 방법

뜨겁다태그

보관