source

임시 테이블 mariadb에 결과 삽입

goodcode 2022. 11. 5. 11:44
반응형

임시 테이블 mariadb에 결과 삽입

이전에 작성한 임시 테이블에 결과를 삽입하려고 합니다.왜 이것이 작동하지 않는지 모르겠다.도움이 필요해요.코드:

SET @serial = '75900101';
DROP TEMPORARY TABLE IF EXISTS machinenametable;
CREATE TEMPORARY TABLE machinenametable (id INT, name VARCHAR(100));

WITH machine_data AS (
SELECT
    *
FROM
    machine m
WHERE 
    @serial = m.serial
), machine_id AS (
SELECT
    1 AS id,
    (IF(
        md.identifier LIKE 'PP%',
        (SELECT 'PP'),
        IF(
            md.identifier LIKE 'SHL',
            (SELECT 'SHL'),
            (SELECT 'SL')
        )
    ))  AS machine
FROM machine_data md
)
INSERT INTO machinenametable (id, name)
SELECT id, name FROM machine_id

이 삽입처에는 뭔가 문제가 있습니다만, 그 이유를 알 수 없습니다.에러 메시지 표시:

SQL-Error[1064] [42000]: (conn=3127818) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO machinenametable (id, name)

편집: 동작하고 있습니다.

INSERT INTO machinenametable (id, name)
    SELECT
        1 AS id,
            (CASE WHEN m.identifier LIKE 'PP%' THEN 'PP'
             WHEN m.identifier LIKE 'SHL' THEN 'SHL'
             ELSE 'SL'
             END) AS name
    FROM machine m
    WHERE @serial = m.serial

당신은 단순해 보이는 것에 대해 매우 복잡한 논리를 가지고 있습니다.내 생각엔 이게 네가 원하는 거야

INSERT INTO machinenametable (id, name)
    SELECT 1,
           (CASE WHEN md.identifier LIKE 'PP%' THEN 'PP'
                 WHEN md.identifier LIKE 'SHL' THEN 'SHL'
                 ELSE 'SL'
            END)
    FROM machine m
    WHERE  @serial = m.serial;

CTE는 아무런 도움이 되지 않습니다.또,IF대신CASE난해하다.또, 사용방법SELECT상수는 불필요합니다.

insert 명령어 사용에 문제가 있는 것 같습니다.

INSERT 명령을 편집하여 다음과 같이 사용합니다.

INSERT INTO machinenametable VALUES(id, name)

언급URL : https://stackoverflow.com/questions/66349667/insert-result-into-temp-table-mariadb

반응형