programing

mySQL: 쿼리가 계속 로드됩니다.

sourcejob 2023. 10. 6. 21:03
반응형

mySQL: 쿼리가 계속 로드됩니다.

저는 4개의 테이블을 같이 합치고 싶습니다.한 개의 테이블은 A 데이터베이스에서 온 것이고, 다른 세 개의 테이블은 B 데이터베이스에서 온 것입니다.다음 쿼리를 실행하면 오류나 결과가 보이지 않고 컴퓨터가 계속 로드됩니다.제 질문은 다음과 같습니다.

SELECT tableA.ts, tableA.voltage, tableB.Day0, tableC.Day0, tableD.Day0 FROM databaseA.tableA \
    -> INNER JOIN databaseB.tableB ON tableB.ts \
    -> INNER JOIN databaseB.tableC ON tableC.ts \
    -> INNER JOIN databaseB.tableD ON tableD.ts\
    -> BETWEEN tableA.ts - INTERVAL 50 SECOND AND tableA.ts + INTERVAL 50 SECOND

SQL을 처음 접하기 때문에 쿼리 설계가 합리적인지, 쿼리에 문제를 일으킬 수 있는 문제가 있는지(Non-stop loading) 묻고 싶었습니다.

현재 쿼리의 복잡성은 여러 데이터베이스에서 여러 테이블을 함께 결합해야 하는 데서 비롯됩니다.이러한 테이블이 결합해야 하는 공통점은 ts(타임스탬프)에 있습니다.추가했습니다.BETWEEN tableA.ts - INTERVAL 50 SECOND AND tableA.ts + INTERVAL 50 SECOND위의 쿼리 설계에서 테이블 사이의 타임스탬프가 몇 초 정도 꺼질 수 있기 때문입니다.

댓글을 달기엔 좀 긴데요.

당신의.ON조건이 올바르지 않습니다.당신은 테이블 사이에서 데카르트 제품을 하고 있습니다.

ON조건은 두 개(또는 그 이상)의 테이블 간의 부울 비교여야 합니다.따라서 표현식은 다음과 같이 표시됩니다.

ON tableB.ts = . . .

(균등성이 정상 연산자가 됩니다.)

MySQL은 다른 타입을 부울런으로 변환할 것입니다.숫자의 경우 0은 "false"로 간주되고 그 외의 모든 것은 "true"로 간주됩니다(NULL으스스한NULLs)아, 아.

그래서:

ON tableB.ts

허용됩니다.하지만 이는 정말로 단지 테스트일 뿐입니다.

ON tableB.ts <> 0

언급URL : https://stackoverflow.com/questions/48598399/mysql-query-just-keeps-loading

반응형