2017-12-14 7 views
1

하나의 테이블에 대해 두 개의 쿼리를 만듭니다.행에서 데이터를 선택하고 한 번에 업데이트하는 방법은 무엇입니까?

SELECT url FROM links WHERE post = '0' AND keywords = 'key'; 

그런

UPDATE links SET post='1' WHERE keywords = 'key'; 

는하지만 많은 스레드 때문에 중복을 얻는다. 두 요청을 하나로 결합하는 방법은 무엇입니까? 감사

+0

단일 명령문에서 선택 및 업데이트 할 수 없습니다. 이 작업을 수행하려면 저장된 proc 또는 트랜잭션이 필요합니다. –

+1

흠, 좀 더 설명 해주세요 .. 무엇을 성취하려고합니까? – Conan

+0

@Conan 키 (키워드)에 해당하는 모든 링크 (URL)를 표 (링크)에서 선택해야하지만 동시에 (게시 = '1') 표시하여 다른 스레드가 수행하도록해야합니다 그들을 다시 데려 가지 마라. 다른 방법으로 구현하는 방법을 알려 주시면 감사하겠습니다. – Astraport

답변

2

경쟁 조건을보십시오.

UPDATE links SET post='1' WHERE keywords in 
(SELECT keywords FROM links WHERE post = '0' AND keywords = 'key'); 
+1

참조 링크를 제공하는 것이 좋습니다. 그러나 앞으로는 링크를 사용할 수 없을 수도 있습니다. 그래서, 응답 자체에 몇 가지 설명, 코드를 제공해주십시오. – Jay

+0

여기에 Noobie, 마음에 계속됩니다 –

1

이 당신을 위해 작동 할 수 있습니다 읽어주고, 다음 링크를이

UPDATE links SET post='1' WHERE keywords = 'key' AND post = '0'; 

또는

이라고
UPDATE links SET post='1' WHERE url in 
(SELECT url FROM links WHERE post = '0' AND keywords = 'key');