programing

선택 쿼리의 결과를 삽입 선택 쿼리의 매개 변수로 사용

jooyons 2023. 11. 6. 21:47
반응형

선택 쿼리의 결과를 삽입 선택 쿼리의 매개 변수로 사용

저는.SELECT12~16시간 전에 추가된 일치하는 행을 모두 반환하는 쿼리.0, 1 또는 여러 행을 반환할 수 있습니다.

SELECT
  service,
  service_host_name,
  time,
  reports_added
FROM
  detections
WHERE
  reports_added = 0
  AND time BETWEEN DATE_SUB(NOW(), INTERVAL 16 HOUR)
  AND DATE_SUB(NOW(), INTERVAL 12 HOUR);
+---------------+-------------------+---------------------+---------------+
| service       | service_host_name | time                | reports_added |
+---------------+-------------------+---------------------+---------------+
| instagram.com | instagram         | 2020-10-29 08:41:25 |             1 |
| instagram.com | instagram         | 2020-10-29 08:41:25 |             0 |   
| twitter.com   | twitter           | 2020-10-29 03:41:25 |             0 |
| twitter.com   | twitter           | 2020-10-28 17:00:11 |             0 |
| twitter.com   | twitter           | 2020-10-29 15:01:14 |             0 |
| instagram.com | instagram         | 2020-10-29 22:04:23 |             0 |
+---------------+-------------------+---------------------+---------------+

위 쿼리의 일치하는 행을 아래 매개 변수로 사용해야 합니다.INSERT... SELECT질의.

INSERT
  IGNORE INTO my_detections (
    service,
    service_host_name,
    date
  ) (
    SELECT
      service,
      service_host_name,
      date
    FROM
      report_issue
      INNER JOIN report_domain ON report_issue.issue_id = report_domain.id
    WHERE
      service = service
      AND date BETWEEN DATE_SUB(time, INTERVAL 12 HOUR)
      AND DATE_ADD(time, INTERVAL 12 HOUR)
  )
UNION
(
  SELECT
    service,
    service_host_name,
    date
  FROM
    report_recent
  WHERE
    service = service
    AND date BETWEEN DATE_SUB(time, INTERVAL 12 HOUR)
    AND DATE_ADD(time, INTERVAL 12 HOUR)
);

위의 모든 쿼리는 자체적으로 잘 작동합니다.

이상적으로, 저 또한 그렇게 하고 싶습니다.UPDATEreports_added에 있는 칼럼detections의 테이블.1후에INSERT... SELECT를 해당 행으로 마칩니다.

만약 그게 불가능하다면 난 그냥UPDATE완성 후에 예를 들면

update
  detections
set
  reports_added = 1
where
  reports_added = 0;

일치하는 행을 사용하려면 어떻게 해야 합니까?detections표를 매개 변수로 지정합니다.INSERT... SELECT질문?

결국, 나는 전체 쿼리를 a 안에 추가할 것입니다.mysql-event한 시간에 한 번씩 달리니 답이 이벤트 안에 있으면 좋겠지만, 저도 괜찮을 것 같아서 꼭 필요한 것은 아닙니다.

언급URL : https://stackoverflow.com/questions/64612298/using-results-from-select-query-as-parameters-for-insert-select-query

반응형