2013-06-21 4 views
-1

저는 SQL을 처음 사용하기 때문에이 쿼리가 결과를 반환하지 않는 이유를 알 수 없습니다.하지만 OR 조건을 잘못 사용하고 있기 때문에 그 이유를 알 수 있습니다. 이 경우MySQL 쿼리에서 OR을 사용하는 방법

누군가가 올바른 방법을 보여 주실 수 있습니까?

AND (exch.name = 'AMEX' 
OR exch.name = 'CBOE' 
OR exch.name = 'ISE' 
OR exch.name = 'PHLX') 

또한 IN 사용할 수 있습니다 : 당신이 어떤 괄호 원하는처럼

SELECT trddata.id, trddata.ts, instr.name, instr.underlying, instr.expiration,instr.strike, instr.callput,opnint.vol, trdind.name ind,exch.name exch, trddata.price,trddata.bidprcbbo,trddata.askprcbbo 
FROM trdopt trddata 
JOIN instropt instr 
ON trddata.optid = instr.id 
JOIN trdindopt trdind 
ON trdind.id = trddata.ind 
JOIN exchopt exch 
ON trddata.exchcode = exch.id 
JOIN opnintopt opnint 
ON opnint.optid = trddata.optid 
WHERE opnint.ds = DATE_FORMAT(trddata.ts, '%Y-%m-%d') 
AND trddata.id >= 71125752 
AND trddata.ts <= '2013-06-20 16:30:36' 
AND instr.underlying = 'AAPL' 
AND exch.name = 'AMEX' 
OR exch.name = 'CBOE' 
OR exch.name = 'ISE' 
OR exch.name = 'PHLX' 
ORDER BY trddata.id 
LIMIT 100; 

답변

7

같습니다

AND exch.name IN ('AMEX','CBOE','ISE','PHLX') 
+0

감사합니다! –

6

을 당신이 예를 들어) ( 를 사용한다고 생각을

SELECT trddata.id, trddata.ts, instr.name, instr.underlying, instr.expiration,instr.strike, instr.callput,opnint.vol, trdind.name ind,exch.name exch, trddata.price,trddata.bidprcbbo,trddata.askprcbbo 
FROM trdopt trddata 
JOIN instropt instr 
ON trddata.optid = instr.id 
JOIN trdindopt trdind 
ON trdind.id = trddata.ind 
JOIN exchopt exch 
ON trddata.exchcode = exch.id 
JOIN opnintopt opnint 
ON opnint.optid = trddata.optid 
WHERE opnint.ds = DATE_FORMAT(trddata.ts, '%Y-%m-%d') 
AND trddata.id >= 71125752 
AND trddata.ts <= '2013-06-20 16:30:36' 
AND instr.underlying = 'AAPL' 
AND (exch.name = 'AMEX' 
OR exch.name = 'CBOE' 
OR exch.name = 'ISE' 
OR exch.name = 'PHLX') 
ORDER BY trddata.id 
LIMIT 100; 
+0

고마워요 !!! 다시 감사합니다! –

1

이 쿼리를 사용해보십시오 OR 조건으로 인한 것이면 승낙 :

SELECT trddata.id, trddata.ts, instr.name, instr.underlying, instr.expiration,instr.strike, instr.callput,opnint.vol, trdind.name ind,exch.name exch, trddata.price,trddata.bidprcbbo,trddata.askprcbbo 
FROM trdopt trddata 
JOIN instropt instr 
ON trddata.optid = instr.id 
JOIN trdindopt trdind 
ON trdind.id = trddata.ind 
JOIN exchopt exch 
ON trddata.exchcode = exch.id 
JOIN opnintopt opnint 
ON opnint.optid = trddata.optid 
WHERE opnint.ds = DATE_FORMAT(trddata.ts, '%Y-%m-%d') 
AND trddata.id >= 71125752 
AND trddata.ts <= '2013-06-20 16:30:36' 
AND instr.underlying = 'AAPL' 
AND exch.name in ('AMEX' , 'CBOE', 'ISE','PHLX') 
ORDER BY trddata.id 
LIMIT 100; 
+0

감사합니다! 그게 해결 됐어! –

관련 문제