반응형
임시 테이블 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
반응형
'source' 카테고리의 다른 글
실행으로 데이터 조작 문을 발행할 수 없습니다.쿼리() (0) | 2022.11.25 |
---|---|
날짜 범위 비교 (0) | 2022.11.25 |
PHP에서 하위 배열 키의 이름을 바꾸려면 어떻게 해야 합니까? (0) | 2022.11.05 |
중첩된 루프에서 벗어나다 (0) | 2022.11.05 |
vue 모드에서 요소 값을 표시하는 방법 (0) | 2022.11.05 |