我试图以这种方式从存储过程创建临时表;
CREATE TEMPORARY TABLE IF NOT EXISTS tempUvozTB engine = memory AS
(
SELECT
`rnuvozstavke`.`BrojRacuna`,
`pfrnstavke_i`.`TB`,
`pfrnstavke_i`.`Kolicina`,
`pfrnstavke_i`.`Tezina`,
`pfrnstavke_i`.`Vrijednost`,
`rnuvozstavke`.`Kolicina` AS UvozKol
FROM
`pfracun_i`
INNER JOIN `pfrnproizvodi_i` ON `pfracun_i`.`BrojRN` =
`pfrnproizvodi_i`.`BrojRacuna` AND `pfracun_i`.`Godina` =
`pfrnproizvodi_i`.`Godina`
INNER JOIN `pfrnstavke_i` ON `pfrnproizvodi_i`.`BrojRacuna` =
`pfrnstavke_i`.`BrojRacuna` AND `pfrnproizvodi_i`.`Godina` =
`pfrnstavke_i`.`Godina`
INNER JOIN `rnuvoz` ON `pfracun_i`.`BrojOdobrenja` = `rnuvoz`.`VezaKupca`,
`rnuvozstavke`
WHERE
`pfracun_i`.`BrojOdobrenja` = pBrojOdobrenja AND
`rnuvozstavke`.`BrojRacuna` = pBrojRN
GROUP BY
`pfrnstavke_i`.`SifraSirovine`,
`pfracun_i`.`BrojOdobrenja`,
`pfrnstavke_i`.`TB`,
`rnuvozstavke`.`BrojRacuna`
);
SELECT tempUvozTB.TB, SUM(tempUvozTB.Kolicina * tempUvozTB.Tezina * tempUvozTB.UvozKol) AS UkTezina, SUM(tempUvozTB.Vrijednost * tempUvozTB.UvozKol) AS UkVrijednost from tempUvozTB GROUP BY tempUvozTB.TB;
DROP TEMPORARY TABLE IF EXISTS tempUvozTB;
但是我得到的错误就像mydatabase.tempuvoztb不存在一样。我做错了什么?
答案 0 :(得分:-1)
您是否使用MySQL自动提交?如果不是,您可能需要在尝试从临时表中进行选择之前提交您的事务。
如果这不起作用,为什么不创建一个普通的表并在之后丢弃它?如果继续使用特定的命名约定(前缀temp),您可以随时清理这些表,而不是依靠数据库引擎来完成工作。
编辑:
我找到了适合您的链接