2011-10-28 6 views
2

다음 두 MySQL의 테이블을 고려해 다른 테이블에서 아이디의 일치하도록 :바꿔 MySQL의 테이블 열은

표 "회사"
companies 
----------------------- 
id ticker 
1 AA 
2 AAPL 
3 ABT 
4 AEP 

tweets 
----------------------- 
tweet_id query (etc...) 
1  $AA 
2  $AA 
3  $AAPL 
4  $ABT 
5  $AA 
6  $AEP 
7  $AEP 

다양한 주식에 대한 700 개 이상의 종목을 포함합니다. 테이블 "tweets"에는 수백만 개의 트윗이 포함되어 있습니다. 이 트윗은 Twitter.com에 특정 주식에 대해 이야기 할 때의 컨벤션이기 때문에 "$"가 앞에 붙은 각각의 티커에 대해 쿼리함으로써 수집되었습니다. 다음과 같이 지금, 트윗 테이블을 정상화하고 싶습니다 :

tweets 
----------------------- 
tweet_id query (etc...) 
1  1 
2  1 
3  2 
4  3 
5  1 
6  4 
7  4 

을 이제 tweet_id 하나 트윗은, ID 1과 시세를 쿼리 AA 것을 얻었다 (이하 "$"는 저장소에 필요하지 않습니다 더 이상 데이터베이스에 없습니다). 이제 내 질문에있을 것입니다 : 하나의 SQL 쿼리로 짹짹 테이블에있는 쿼리 - 열을 업데이트하는 방법이 있습니까? 가능하지 않다면 앞으로 많은 일이 벌어 질 것으로 보입니다 (아마도 PHP를 사용하여) 아마도 도움이 될 것입니다. :)

+0

@ a'r이 답을 얻었습니다. 그러나 정수형 (string.is) 열 ('tweets.query')에 integer-ish 외래 키 ('companies.id')를 저장하려는 것처럼 스키마가 약간 재 작업해야 할 수도 있습니다. – pilcrow

답변

4

업데이트 조인을 사용할 수 있습니다. 다음과 같은 내용이 있습니다.

UPDATE tweets t 
    JOIN companies c ON t.query = CONCAT('$', c.ticker) 
SET t.query = c.id;