2017-11-27 6 views
-1

처음에는 가난한 영어에 대해 유감입니다.시간 경과에 따른 복잡한 MySQL (mariadb) 테이블의 데이터 조건부 수정

MariaDB []> desc articles; 
+ ------------ + ------------------ + ------ + ----- + ---- ----- + ---------------- + 
| Field | Type | Null | Key | Default | Extra | 
+ ------------ + ------------------ + ------ + ----- + ---- ----- + ---------------- + 
| id | int (10) unsigned | NO | PRI | NULL | auto_increment | 
| user_id | int (10) unsigned | NO | MUL | NULL | | 
| title | varchar (191) | NO | MUL | NULL | | 
| content | text | NO | | NULL | | 
| created_at | timestamp | YES | | NULL | | 
| updated_at | timestamp | YES | | NULL | | 
| limit_count | int (11) | NO | | 0 | | 
+ ------------ + ------------------ + ------ + ----- + ---- ----- + ---------------- + 

기사에 많은 게시물이 있습니다.
각 게시물의 경과 시간 (현재 시간 - create_at)을 기준으로 mariadb의 각 게시물의 'limit_count'를 늘리고 싶습니다.

나는 다음을 시도했지만, 그것이 완벽하다고는 생각하지 않는다.

UPDATE articles 
    SET limit_count = limit_count + ((NOW() - created_at) * 10) 
    WHERE exists (select * from articles where limit_count> 0); 

어떻게 작동합니까?
도움 주셔서 감사합니다.

답변

1

는 ** 크게 ** 당신이 NOW() 직접 연산을 할 수 없습니다

WHERE limit_count> 0 

WHERE 절을 단순화합니다. NOW() - created_at 대신에

UNIX_TIMESTAMP() - created_at