database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 30194 게시물 읽기
No. 30194
update 할떄 where 절에 조건을 주려고 합니다...(자체조인)
작성자
박순채(pict7942)
작성일
2012-01-25 17:30
조회수
10,278

update a set wr_8 = '답변완료'

where wr_id in

(select wr_id , count(wr_num) as cnt  from where cnt > 1 )
 

이런식으로 하고 싶은데 결과가...

You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT wr_id , count(wr_num) AS cnt  FROM WHERE cnt > 1 )' at l

이러케 나오네요...

wr_num 의 값중에 같은 값이 두개인 것은 wr_8 = '답변완료' 로 하고 싶은데요

where 절에 select 가 적용이 안되는인지...왜 그런건지 모르겠네요.......

-------------

제가 하고 싶은것은요

wr_num 필드에 값은 갑이 두개인 것중 wr_id 가 낮은것에 대하여 wr_8 값을 답변 완료라고 써주고 싶습니다.

어떻케 해야 할까요 위처람 해도 안되네요..ㅜ.ㅡ 알려주세요

이 글에 대한 댓글이 총 4건 있습니다.

질문하신 내용을 제대로 이해했는지 모르겠습니다만 아래와 같이 수행해보시길 바랍니다.

 

update a

set wr_8='답변완료'

where wr_id in (select wr_id from a group by wr_id having count(wr_num)>1);

정상규(pajama)님이 2012-01-25 23:38에 작성한 댓글입니다.
이 댓글은 2012-01-25 23:38에 마지막으로 수정되었습니다.

내 정확히 이해 하신것 같습니다.

17   -5 
18  -5    A
19   -6 
20   -6    A
 

17 번과 19번에 답변 완료라고 적고 싶은 겁니다.

그런데 오류가....

sqlgate(데이터베이스 접근 프로그램)

You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT wr_id FROM a  GROUP BY wr_id HAVING

myadmin (웹어드민)

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT wr_id FROM a GROUP BY wr_id HAVING

 

이렇게 나옵니다  업데이터 할때는 where 절에 select 를 하면 안되는걸까요..??

박순채(pict7942)님이 2012-01-26 18:21에 작성한 댓글입니다.
이 댓글은 2012-01-26 18:24에 마지막으로 수정되었습니다.

데이터 컬럼을 wr_id, wr_num, wr_8로 가정하고 테스트를 해봤습니다.

 

update a

set wr_8='답변완료'

where wr_id in

(select * from (select min(wr_id) from a group by wr_num having count(wr_num)>1) as x);

 

mysql에서는 셀프조인시 같은 테이블을 쓸 수 없어 위와 같은 형식으로 작성했습니다.

그리고 update시 셀프조인은 버전에 따라 지원이 안될 수도 있습니다.

그런 경우에는 temp 테이블을 사용하셔야 합니다. 참고하시고 틀린 부분이 있으면 지적 부탁드립니다.

정상규(pajama)님이 2012-01-26 23:50에 작성한 댓글입니다.
이 댓글은 2012-01-27 00:00에 마지막으로 수정되었습니다.

You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM (SELECT min(wr_id) FROM a GR
-----------------------------------------------------------------
update a set wr_8='답변완료'
where wr_id in
(select * from (select min(wr_id) from a group by wr_num having count(wr_num)>1) as x)

라고 에러 메시지가 뜨네요

mysql 버전은 (PHP4, MySQL4.x)

이구요 아마 버전이 낮아서 그런거 같네요...

sql 문 하나로 쉽게 하려고 했는데...

프로그램을 태워서 수정해야 겠네요....아무튼 답변 감사합니다..ㅜ.ㅡ

 

박순채(pict7942)님이 2012-01-30 17:53에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
30197자꾸 lock timeout에 걸리는데요.. [6]
최진규
2012-02-02
10752
30196MySQL DB 시간표 ERD 관련... [2]
한동희
2012-02-01
9193
30195효율적인 query ? [1]
백영민
2012-01-26
7484
30194update 할떄 where 절에 조건을 주려고 합니다...(자체조인) [4]
박순채
2012-01-25
10278
30193커서 선언에 대해 질문 드려요
박세정
2012-01-19
7759
30192innodb 대용량 용으로 많이 쓴다고 하는데요.. [5]
최진규
2012-01-19
7926
30191enum 질문 드립니다.. [2]
밀로즈
2012-01-18
7880
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다