MySQL临时表插入

MySQL临时表插入,mysql,Mysql,我正在使用MySQL并尝试创建一个临时表。我将在PHP中执行2 while循环语句来填充临时表。首先,尽管我似乎无法让插入到临时表中的内容正常工作。我已经尝试了很多不同版本,一些用于表和各种各样的东西,SQL server和MySQL命令有什么不同吗?。这是我的最后一次尝试。另外,Select语句本身运行良好 CREATE TEMPORARY TABLE temp ( aID varchar(15) NOT NULL, bID varchar(15) NOT NULL ) INSERT INTO

我正在使用MySQL并尝试创建一个临时表。我将在PHP中执行2 while循环语句来填充临时表。首先,尽管我似乎无法让插入到临时表中的内容正常工作。我已经尝试了很多不同版本,一些用于表和各种各样的东西,SQL server和MySQL命令有什么不同吗?。这是我的最后一次尝试。另外,Select语句本身运行良好

CREATE TEMPORARY TABLE temp
(
aID varchar(15) NOT NULL,
bID varchar(15) NOT NULL
)
INSERT INTO temp
SELECT aID, bID
FROM tags
WHERE placeID = "abc" AND tagID = "def";
谢谢你的帮助


另外,只是一个普通的问题……这个查询将需要运行很多次。使用临时表可以吗?还是会导致服务器问题?

您可以通过以下方式创建临时表并插入select statemet:

create temporary table temp
SELECT aID, bID
FROM tags
WHERE placeID = "abc" AND tagID = "def";
在再次创建临时表之前删除临时表。在创建临时表之前放置以下语句:

drop temporary table if exists temp;

注意:如果您可以将所有这些代码都放在存储过程中就好了。并调用它来创建临时表。

您可以通过以下方式创建临时表并插入select statemet:

create temporary table temp
SELECT aID, bID
FROM tags
WHERE placeID = "abc" AND tagID = "def";
在再次创建临时表之前删除临时表。在创建临时表之前放置以下语句:

drop temporary table if exists temp;

注意:如果您可以将所有这些代码都放在存储过程中就好了。并调用它创建临时表。< /P> < P>关于Code Monk所写的,请考虑以下内容:

drop procedure if exists uspK;
DELIMITER $$
create procedure uspK ()
BEGIN
    drop temporary table if exists temp; -- could be some other random structure residue

    create temporary table temp
    SELECT aID, bID
    FROM tags
    WHERE placeID = "abc" AND tagID = "def";

    -- use the temp table somehow
    -- ...
    -- ...
    -- ...

    drop temporary table temp; -- otherwise it survives the stored proc call
END
$$ -- signify end of block
DELIMITER ; -- reset to default delimiter
测试存储过程 有什么不可以做的 人们不会在以下方面找到太多的运气。如果你认为是这样,运行几次

drop procedure if exists uspK;
DELIMITER $$
create procedure uspK ()
BEGIN
    -- drop temporary table if exists temp;

    create temporary table if not exists temp
    SELECT aID, bID
    FROM tags
    WHERE placeID = "abc" AND tagID = "def";

    -- use the temp table somehow
    -- ...
    -- ...
    -- ...

    -- drop temporary table temp; -- otherwise it survives the stored proc call
END
$$ -- signify end of block
DELIMITER ; -- reset to default delimiter
因为如果不存在创建临时表,则临时表是片状的

一般性意见 在对分隔符这个简单的主题有点流利之前,不应该开始编写存储过程。在一个名为Delimiters的部分中写到了它们。只是希望阻止你在这么简单的事情上浪费不必要的时间,而不是浪费大量的调试时间


另外,在您的问题中,以及在该参考资料中,请记住,表的创建是DDL,它可能占总体评测性能的很大一部分。与使用预先存在的表相比,它会降低进程的速度。人们可能会认为这个电话是即时的,但事实并非如此。因此,对于性能而言,使用预先存在的表,将其结果放入自己的分段ROWID中要比持久DDL开销快得多。

< P>在Code Monk写的文章中,考虑以下内容:

drop procedure if exists uspK;
DELIMITER $$
create procedure uspK ()
BEGIN
    drop temporary table if exists temp; -- could be some other random structure residue

    create temporary table temp
    SELECT aID, bID
    FROM tags
    WHERE placeID = "abc" AND tagID = "def";

    -- use the temp table somehow
    -- ...
    -- ...
    -- ...

    drop temporary table temp; -- otherwise it survives the stored proc call
END
$$ -- signify end of block
DELIMITER ; -- reset to default delimiter
测试存储过程 有什么不可以做的 人们不会在以下方面找到太多的运气。如果你认为是这样,运行几次

drop procedure if exists uspK;
DELIMITER $$
create procedure uspK ()
BEGIN
    -- drop temporary table if exists temp;

    create temporary table if not exists temp
    SELECT aID, bID
    FROM tags
    WHERE placeID = "abc" AND tagID = "def";

    -- use the temp table somehow
    -- ...
    -- ...
    -- ...

    -- drop temporary table temp; -- otherwise it survives the stored proc call
END
$$ -- signify end of block
DELIMITER ; -- reset to default delimiter
因为如果不存在创建临时表,则临时表是片状的

一般性意见 在对分隔符这个简单的主题有点流利之前,不应该开始编写存储过程。在一个名为Delimiters的部分中写到了它们。只是希望阻止你在这么简单的事情上浪费不必要的时间,而不是浪费大量的调试时间


另外,在您的问题中,以及在该参考资料中,请记住,表的创建是DDL,它可能占总体评测性能的很大一部分。与使用预先存在的表相比,它会降低进程的速度。人们可能会认为这个电话是即时的,但事实并非如此。因此,为了提高性能,使用一个预先存在的表并将其结果放入自己的分段rowId中要比承受DDL开销快得多。

您可以在再次创建临时表之前删除临时表。如果删除临时表,该表将不存在,如果使用以前从未使用过的另一个表名,该表仍然无法工作。我的查询有问题。仅当它存在时才删除:如果存在临时表,则删除临时表;没关系,我可以使用任何随机表名。相同的结果。添加了phpmyadmin标记。祝你好运,你可以在再次创建临时表之前删除它。如果我删除它,该表将不存在,如果我使用以前从未使用过的另一个表名,该表仍然无法工作。我的查询有问题。仅当它存在时才删除:如果存在临时表,则删除临时表;没关系,我可以使用任何随机表名。相同的结果。添加了phpmyadmin标记。祝你好运StuartSo也许问题在于我是怎么做到的?所以我是新手,所以我用myphpadmin测试我的查询。所以我只是在那里运行这个。上面的代码是什么?PHP?这不是我可以在myphpadmin.nah中使用的东西,直接sql,没有PHP。它被称为a,嵌入到您的数据库中,您可以用call来调用它。因此,您的任务是在“不知何故使用临时表”部分中添加一些有价值的内容:我无法在myphpadmin中运行它,因此我正在做的事情与您正在做的不一样……请注意,当然,这取决于您的版本,请参阅。我不用那种东西,老板。太局限了:所以问题可能是我是如何做到这一点的?所以我是新手,所以我用myphpadmin测试我的查询。所以我只是在那里运行这个。上面的代码是什么?PHP?这不是我可以在myphpadmin.nah中使用的东西,直接sql,没有PHP。它被称为a,嵌入到数据库中,你用call来调用它,所以你的任务是在使用temp表部分中放一些有价值的东西:我不能在myphpadmin中运行它,所以我正在做的事情与你正在做的不一样
ing…请注意,当然,取决于您的版本,请参阅。我不用那种东西,老板。限制太大: