2014-06-19 1 views
-2

내가 MYSQL에 초보자이고 내가 아래 쿼리에 대한 SQL 구문 예외를 얻고 이유를 찾으려면 : 편집기에서 내가 and b.interface_id=?에서 구문 오류를 참조 MySQL의 워크 벤치에서SQL 구문 예외

select a.file_id 
    from FILE_XFER_TRACKING_DETAIL a, FILE_XFER_TRACKING_HEADER b 
where b.transaction_id = a.transaction_id 
and b.interface_id =? 
and a.file_name =? 
and a.status = 'InProcess' 
and a.update_time > sysdate- 0.003472222222222222 
and a.file_id <> ? 
and b.direction = ? 

. 나는 초보자이며이를 고칠 방법이 확실하지 않다.

+1

'대체?' – Horaciux

+0

당신이 정확한 구문 오류를 줄 수 실제 값? – BanksySan

답변

3

?의 실제 값을 입력해야합니다. 예를 들어 and b.interface_id = 100

나머지 부분에 대해서도 마찬가지입니다.

+0

사람들이 다운 투표에 대한 이유를 남겨두면 좋을 것입니다. 쿼리의 모든 문제는 아니지만 다음 중 하나를 처리합니다. 그들. –

1

SQL을 준비된 문장으로 사용하려는 코드에서이 코드를 복사했다.

?은 where 절에서 비교할 값으로 바꿔야합니다.

where b.transaction_id = a.transaction_id 
    and b.interface_id = '<your value here>' 
    and a.file_name = '<your value here>' 
    and a.status = '<your value here>' 
    and a.update_time > sysdate- 0.003472222222222222 
    and a.file_id <> '<your value here>' 
    and b.direction = ''<your value here>' 
+0

**'sysdate - 0.03472' **는 유효한 Oracle 구문이지만 MySQL에서는 유효하지 않습니다. MySQL에서, 우리는 ** NOW() + INTERVAL -5 MINUTE' ** – spencer7593

+0

과 같은 것으로 대체 할 것입니다. 나는 고유 한 컬럼 이름이라고 생각했습니다. – Ray

+1

그 가능성은 완전히 나를 피했습니다. 나는 테이블 별칭으로 _EVERY_ 열 참조를 한정하는 데 익숙하기 때문에 실제로 열을 참조 할 수 있다는 것을 잊지 마라. 저것과 나는 결코 "sysdate"란 이름을 짓는 것을 고려하지 않을 것입니다. 실제로'sysdate'_is가 열 이름이고 열의 데이터 유형이 DATE, DATETIME 또는 TIMESTAMP가 아닌 경우 이전 주석에서 말한 내용은 적용되지 않습니다. (OP 쿼리는 구식 오라클 구문과 매우 흡사합니다.) – spencer7593

2

또한, bareword는 sysdate에 대한 참조 오라클에 대한 올바른 구문은, 그러나 MySQL을에 대해 유효합니다.

MySQL에서 현재 날짜 시간을 반환하려면 SYSDATE() 함수 또는 NOW() 함수를 참조해야합니다.

DATE 표현식에서 숫자 값을 빼는 것은 Oracle에서 유효합니다. MySQL에서는 유효하지 않습니다.

쿼리 (0.003472222222222222)에 지정된 특정 숫자 값은 오라클에 의해 5 분으로 본질적으로 부분으로 해석됩니다.

NOW() + INTERVAL -5 MINUTE 
또한

이의에 대한 구식 쉼표 구문을 도랑 (= 1/24/60 * 5) MySQL의에서

이 동등 할, 당신은 뭔가를 원하는 것 대신 조작을 수행하고 JOIN 키워드를 사용하고 WHERE 절의 조인 술어를 ON 절로 재배치하십시오. (쉼표는 그냥 아주 오래된 그리고 개선 된 구문은 오랜 시간 동안 사용할 수있다, 운영자가 여전히 유효 구문 조인.)

FROM FILE_XFER_TRACKING_DETAIL a 
    JOIN FILE_XFER_TRACKING_HEADER b 
    ON b.transaction_id = a.transaction_id 
WHERE ...