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
운영게시판
최근게시물
Sybase Q&A 2040 게시물 읽기
No. 2040
UNION 대신 다른 방법으로 수정해야 하는데요
작성자
왕초보
작성일
2007-09-19 11:24
조회수
6,426

Text 형의 컬럼이 있어서 UNION을 사용할 수 없네요
컬럼 데이터 타입을 안바꾸려니 사이베이스에서는 TEXT 데이터 타입에서는 UNION 이 허용이 안되는군요
UNION을 사용하지 않고 같은 결과를 얻으려면 어떻게 수정해야 하는지요?

        SELECT
                USERS_ID,
                USERS_PASSWD,
                DATE_FORMAT(USERS_ABSENT_SDATE, '%Y-%c-%e %T') USERS_ABSENT_SDATE,
                DATE_FORMAT(USERS_ABSENT_EDATE, '%Y-%c-%e %T') USERS_ABSENT_EDATE,
        FROM
                USERS
        WHERE
                USERS_IDX = ?
        UNION
        SELECT
                A.USERS_ID,
                A.USERS_PASSWD,
                DATE_FORMAT(A.USERS_ABSENT_SDATE, '%Y-%c-%e %T') USERS_ABSENT_SDATE,
                DATE_FORMAT(A.USERS_ABSENT_EDATE, '%Y-%c-%e %T') USERS_ABSENT_EDATE
                FROM
                USERS A,
                ACCOUNT B
        WHERE
                B.ACCOUNT_IDX = ?
                AND
                B.USERS_IDX = A.USERS_IDX
                AND
                B.ACCOUNT_ISVALID = 1
                AND
                (
                        B.ACCOUNT_ISDATED = 0
                        OR
                        (
                                B.ACCOUNT_ISDATED = 1
                                AND
                                ACCOUNT_SDATE <= NOW()
                                AND
                                ACCOUNT_EDATE >= NOW()
                        )
                )

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

union은 union all 한결과를 distinct하게 가져옵니다.
처음부터 distinct한 결과를 가져오도록 쿼리를 수정하면 될 듯..


ex)
create table #temp1
(
 c char(1) null,
 d text null
)
go
create table #temp2
(
 c char(1) null,
 d text null
)
go
insert #temp values ('1', '2')
go
insert #temp2 values ('1', '2')
go

select * from #temp
union all
select * from #temp2 a where not exists (select 1 from #temp where a.c = c)

영빈~(backfish)님이 2007-09-20 10:07에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
2043BCP ..-J옵션이 있는데요 J는 뭐에 약자 인가요? [1]
호기심
2007-09-21
6211
2042sybase ASE에 원격 접속이 안되요? [1]
초보
2007-09-21
8063
2041자동증가 burning값 [2]
김선진
2007-09-20
6676
2040UNION 대신 다른 방법으로 수정해야 하는데요 [1]
왕초보
2007-09-19
6426
2039sybase를 처음써봐서 그러는데 조금 이상하네요 [2]
김선진
2007-09-17
6634
2038시스템 테이블의 lock scheme변경 [3]
^^
2007-09-14
6780
2037cursor 사용시 top 을 사용하면 이상해집니다. [4]
영빈~
2007-09-12
7593
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다