2012-02-08 2 views
0

특정 사용자가 이미 내 시스템에 존재하지 않는지 확인하고 싶습니다. 확인 된 사용자와새 사용자 이름이 두 개의 별도 테이블에 없음을 확인하십시오.

  • 일 (xymply_users)이 확인되지 않은 사용자 (xymply_newusers)와
  • 하나 : 나는 두 개의 테이블이있다.

지금 가입 한 사람을 확인하고 싶습니다. 이미 테이블에없는 사용자 이름을 선택했습니다. 나는이 시도 :

SELECT * FROM xymply_users, xymply_newusers 
WHERE xymply_users.user ='test' 
OR xymply_newusers.user ='test' 

을하지만 사용자 테스트 'xymply_users에있을 경우이 쿼리, 왜 궁금하지으로 표시되지 않습니다?

답변

3

UNION! 사용자가 존재하는 경우가 모두 존재하는 경우

(SELECT 1 FROM xymply_users WHERE xymply_users.user ='test') 
UNION 
(SELECT 1 FROM xymply_newusers WHERE xymply_newusers.user ='test') 

2 개 기록, 1 개 기록을 줄 것이다, 레코드는 사용자가 존재하지 않는 경우.

SELECT 1은 단지 최적화에 불과합니다. 그것보다 더 빨리 SELECT *

+0

네 (SELECT * 잘못 항상 보통)의 완벽! 감사! – cerr

1
SELECT * FROM xymply_users.u, xymply_newusers.nu where u.username = nu.username 

또는

SELECT * FROM xymply_users.u, xymply_newusers.nu where u.username = 'username' AND nu.username = 'username' AND u.username = nu.username 
+0

글쎄, 그것은 동일한 사용자 이름이 __both__ 테이블에 있는지 확인하지만 OP는 username이 __either__ 테이블에 있는지 확인하려고합니다. –

+0

xymply_users의 사용자 이름은 xymply_newusers의 사용자 이름과 동일합니다. 분명히 발생하면 두 테이블 모두에서 종료됩니다. – tomexsans

+0

좋아, 나는 분명히 내 ANDs와 XOR을 혼동하기 때문에 나이가 들고 노쇠 해지고있다 ... 나는 OP가 XOR을 원한다는 인상을 받았다. AND .... 그래서 그의 "test"이름은이 곳에 들어간다. ? –

관련 문제