특정 값이 설정된 경우에만 MySQL 쿼리의 특정 열을 업데이트합니다.

제이슨 데이비스

PHP 및 MySQL로 구축중인 프로젝트 관리 애플리케이션이 있으며 아래 기능은 프로젝트와 관련된 모든 작업을 대량 업데이트하는 데 사용됩니다. 경우에 따라 한 번에 업데이트되는 MySQL 레코드는 200-300 개일 수 있습니다.

그래도 내 디자인에 결함이 있음을 깨달았습니다. 이 기능은 업데이트 내 데이터베이스 열 status, date_modifieddate_completed

이것은 대부분의 경우 훌륭하지만 사용자가 date_started을 설정하는 작업을 "시작"하는 것을 종종 잊는다는 것을 깨달았습니다 .

경우 date_started열이 설정되지 않습니다, 그것은의 값이됩니다 0000-00-00 00:00:00과과 date_started에 열 집합 0000-00-00 00:00:00하고 date_completed... 이러한 작업이 중단 내 Gantt 차트 기능을 지금 열 집합을.

그래서 아래의 SQL을 수정하여 a status설정할 때 열 === completed인지 확인 하고 만약 그렇다면 해당 열도 NOW로 업데이트해야합니다.date_stared0000-00-00 00:00:00

필자는 CASE검사를 수행하기 위해 모든 레코드를 PHP로 쿼리하고 필요할 때 별도의 UPDATE를 수행하는 대신 MySQL에서 사용 하는 것이 가능하다고 생각 하지만 이러한 고급 SQL 기능에 대한 경험은 거의 없습니다.

누군가가 해결책으로 나를 도울 수 있습니까?

public function completeAllTasks($projectId, $completed_date = true){
    // Update Project Task STATUS and Date_MODIFIED
    $sql = "UPDATE  `project_tasks`
    SET  `status` =  'Completed',
            `modified_user_id` = '$this->user_id',
            `date_completed` = UTC_TIMESTAMP()
            `date_modified` = UTC_TIMESTAMP()
    WHERE  `project_id` = '$projectId'
    AND `status` != 'Completed'
    AND `heading` != '1'";

    return $this->db->query($sql);
}

최신 정보

나는 약간의 테스트를했고 이것은 트릭을하는 것 같습니다 ...

`date_started` = (CASE
                    WHEN date_started = '0000-00-00 00:00:00'
                      THEN UTC_TIMESTAMP()
                      ELSE date_started
                END)
브라이언
$sql = "UPDATE  `project_tasks`
SET  `status` =  'Completed',
      `modified_user_id` = '$this->user_id',
      `date_completed` = UTC_TIMESTAMP(),
      `date_modified` = UTC_TIMESTAMP(),
      `date_started` = CASE
          WHEN date_started = '0000-00-00 00:00:00' THEN NOW()
          ELSE date_started
       END
WHERE  `project_id` = '$projectId'
AND `status` != 'Completed'
AND `heading` != '1'";

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

특정 열이 업데이트 된 경우에만 MySQL PHP 업데이트 DateTime

분류에서Dev

특정 값과 같은 경우 다른 UPDATE 필드의 값을 업데이트합니다.

분류에서Dev

특정 행이있는 경우 MYSQL 열을 특정 값으로 설정하는 방법은 무엇입니까?

분류에서Dev

MySQL 쿼리-3 개의 테이블에서 특정 값에서 다중 열을 선택하는 방법

분류에서Dev

특정 열에 값이없는 경우에만 테이블 업데이트

분류에서Dev

기본 키 테이블의 특정 열이 업데이트 (트리거 사용) 인 경우 새 열을 외래 키 테이블에 삽입합니다.

분류에서Dev

MySQL 트리거 : 특정 열이 채워진 경우에만 삽입하려면 어떻게해야합니까?

분류에서Dev

Pandas : 열 값은 같지만 행과 조건이 다른 특정 열 값을 업데이트합니다.

분류에서Dev

특정 열 범위에 누락 된 값이있는 경우 데이터 프레임의 열 값을 업데이트하는 방법은 무엇입니까?

분류에서Dev

Mysql 업데이트 쿼리 값이 25 자보다 큰 25 자에 열 값을 재설정하려면

분류에서Dev

Google Apps Script / Google Sheet에서 특정 열에 특정 값이 설정된 경우에만 자동으로 자동 정렬하는 방법은 무엇입니까?

분류에서Dev

Oracle 업데이트 쿼리는 false가 전달 된 경우에도 두 값 중 true로 값을 설정합니다.

분류에서Dev

특정 속성에서 새로운, 변경, 업데이트 된 객체의 두 목록을 비교합니다.

분류에서Dev

특정 열 집합의 값이 R에서 'NA'인 경우 행만 선택합니다.

분류에서Dev

특정 열 값이 존재하지 않는 특정 행을 찾기위한 MySQL 쿼리

분류에서Dev

테이블 행에서 특정 필드를 편집하고 MySQL 테이블에서 편집 된 값을 업데이트합니다.

분류에서Dev

Pandas의 데이터 정리 : 이러한 문자열이 다른 열에 포함 된 경우 null 값을 특정 문자열로 대체

분류에서Dev

특정 열에 특정 값이있는 그리드의 모든 행을 전달합니다.

분류에서Dev

열에 특정 값이 포함 된 경우 미리 정의 된 문자열 선택

분류에서Dev

MySQL : 특정 조건이 충족되는 경우에만 항목 업데이트

분류에서Dev

특정 월 / 년 조합에 고유 한 MySQL 업데이트 값

분류에서Dev

특정 값과 같거나이 값 (pandas) 사이의 행에있는 경우에만 열 값을 유지합니다.

분류에서Dev

SQL : 특정 열에 특정 값이있는 계정의 모든 행을 선택합니다.

분류에서Dev

전체 랜덤 라인의 특정 값이 일부 변수와 같은 경우에만 특정 필드 값을 출력합니다.

분류에서Dev

열 X의 값이 ACCEPTED 인 경우 특정 div 색상 지정

분류에서Dev

다른 열에 값이있는 경우 특정 값의 열이있는 CREATE TABLE

분류에서Dev

다른 열에 BigQuery에서 특정 값이있는 경우에만 값 선택

분류에서Dev

행 그룹의 특정 열에 특정 값이 있는지 확인하는 SQL 쿼리

분류에서Dev

MySQL 쿼리는 특정 값을 계산합니다.

Related 관련 기사

  1. 1

    특정 열이 업데이트 된 경우에만 MySQL PHP 업데이트 DateTime

  2. 2

    특정 값과 같은 경우 다른 UPDATE 필드의 값을 업데이트합니다.

  3. 3

    특정 행이있는 경우 MYSQL 열을 특정 값으로 설정하는 방법은 무엇입니까?

  4. 4

    MySQL 쿼리-3 개의 테이블에서 특정 값에서 다중 열을 선택하는 방법

  5. 5

    특정 열에 값이없는 경우에만 테이블 업데이트

  6. 6

    기본 키 테이블의 특정 열이 업데이트 (트리거 사용) 인 경우 새 열을 외래 키 테이블에 삽입합니다.

  7. 7

    MySQL 트리거 : 특정 열이 채워진 경우에만 삽입하려면 어떻게해야합니까?

  8. 8

    Pandas : 열 값은 같지만 행과 조건이 다른 특정 열 값을 업데이트합니다.

  9. 9

    특정 열 범위에 누락 된 값이있는 경우 데이터 프레임의 열 값을 업데이트하는 방법은 무엇입니까?

  10. 10

    Mysql 업데이트 쿼리 값이 25 자보다 큰 25 자에 열 값을 재설정하려면

  11. 11

    Google Apps Script / Google Sheet에서 특정 열에 특정 값이 설정된 경우에만 자동으로 자동 정렬하는 방법은 무엇입니까?

  12. 12

    Oracle 업데이트 쿼리는 false가 전달 된 경우에도 두 값 중 true로 값을 설정합니다.

  13. 13

    특정 속성에서 새로운, 변경, 업데이트 된 객체의 두 목록을 비교합니다.

  14. 14

    특정 열 집합의 값이 R에서 'NA'인 경우 행만 선택합니다.

  15. 15

    특정 열 값이 존재하지 않는 특정 행을 찾기위한 MySQL 쿼리

  16. 16

    테이블 행에서 특정 필드를 편집하고 MySQL 테이블에서 편집 된 값을 업데이트합니다.

  17. 17

    Pandas의 데이터 정리 : 이러한 문자열이 다른 열에 포함 된 경우 null 값을 특정 문자열로 대체

  18. 18

    특정 열에 특정 값이있는 그리드의 모든 행을 전달합니다.

  19. 19

    열에 특정 값이 포함 된 경우 미리 정의 된 문자열 선택

  20. 20

    MySQL : 특정 조건이 충족되는 경우에만 항목 업데이트

  21. 21

    특정 월 / 년 조합에 고유 한 MySQL 업데이트 값

  22. 22

    특정 값과 같거나이 값 (pandas) 사이의 행에있는 경우에만 열 값을 유지합니다.

  23. 23

    SQL : 특정 열에 특정 값이있는 계정의 모든 행을 선택합니다.

  24. 24

    전체 랜덤 라인의 특정 값이 일부 변수와 같은 경우에만 특정 필드 값을 출력합니다.

  25. 25

    열 X의 값이 ACCEPTED 인 경우 특정 div 색상 지정

  26. 26

    다른 열에 값이있는 경우 특정 값의 열이있는 CREATE TABLE

  27. 27

    다른 열에 BigQuery에서 특정 값이있는 경우에만 값 선택

  28. 28

    행 그룹의 특정 열에 특정 값이 있는지 확인하는 SQL 쿼리

  29. 29

    MySQL 쿼리는 특정 값을 계산합니다.

뜨겁다태그

보관