【问题标题】:MySql - Create a table and select from it in the same procedureMySql - 创建一个表并在同一过程中从中选择
【发布时间】:2016-06-25 12:07:11
【问题描述】:

我正在尝试使用 PHPMyAdmin 将这个简单的代码作为 MySql 中的一个过程来执行

CREATE TEMPORARY TABLE IF NOT EXISTS jobs AS (SELECT
    *
FROM
    all_jobs
WHERE
        job_object_type LIKE 'jobName'
        OR
        job_object_type LIKE 'jobStatus');

SELECT
    *
FROM
    jobs

但由于我的第二个 SELECT 查询,我收到了 error (#1064)。我来自 MS-SQL,在那里SELECT 将毫无问题地执行。如何在同一过程中执行CREATE TABLE X 查询并在之后直接执行SELECT * FROM X 查询?

编辑:忘了提到我正在使用 MariaDB

【问题讨论】:

  • 如果您收到类似“检查手册以了解在 'SELECT` 附近使用的正确语法”之类的错误,那是因为您没有使用 ; 终止 CREATE TABLE 语句 MySQL 期望语句由; 分隔,根据您使用的客户端,您可能还需要用DELIMITER 关键字包围CREATE PROCEDURE 语句以临时设置不同的关键字。
  • 特别是查看手册页底部的用户示例以获取示例:dev.mysql.com/doc/refman/5.7/en/create-procedure.html
  • 我把“;”在我的 CREATE TABLE 结束时,我仍然收到错误
  • 请发布您准确完整的CREATE PROCEDURE 声明及其产生的完整错误消息。另外,您使用的是 mysql 命令行客户端吗? MySQL 工作台? PHPMyAdmin?由于分隔符问题,使用的客户端可能会影响您必须如何制作语句。
  • 我正在使用 PHPMyAdmin 创建程序并对其进行编辑。我的问题中的 CREATE PROCEDURE 是完整的。

标签: mysql phpmyadmin mariadb


【解决方案1】:

这就是使用 PHPMyAdmin 完成的方式:

BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS jobs AS (SELECT
    *
FROM
    all_jobs
WHERE
        job_object_type LIKE 'jobName'
        OR
        job_object_type LIKE 'jobStatus');

SELECT
    *
FROM
    jobs;
END

现在一切都按原样执行。

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 2017-07-13
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多