Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用SQL中的SELECT COUNT查询进行限制_Mysql_Sql_Phpmyadmin - Fatal编程技术网

Mysql 使用SQL中的SELECT COUNT查询进行限制

Mysql 使用SQL中的SELECT COUNT查询进行限制,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我想用另一个表的多行限制插入,如下所示: INSERT INTO pacte (alianca_en_pacte, tipus) SELECT id_alianca_en_pacte1 ,tipus_pacte1 FROM c_alianca LIMIT 0, SELECT COUNT(tipus_pacte1) FROM c_alianca WHERE tipus_pacte1 IS NOT NULL 以下查询: SELECT COUNT(tipus_pacte1) FROM c_alian

我想用另一个表的多行限制插入,如下所示:

INSERT INTO pacte (alianca_en_pacte, tipus)
SELECT id_alianca_en_pacte1 ,tipus_pacte1
FROM c_alianca
LIMIT 0, SELECT COUNT(tipus_pacte1) FROM c_alianca WHERE tipus_pacte1 IS NOT NULL
以下查询:

SELECT COUNT(tipus_pacte1) FROM c_alianca WHERE tipus_pacte1 IS NOT NULL
返回一个4

运行脚本时,出现以下错误:

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第4行的“从c_alianca选择*


这就是你想要的吗

INSERT INTO pacte (alianca_en_pacte, tipus)
SELECT id_alianca_en_pacte1, tipus_pacte1, 
    ( SELECT COUNT(tipus_pacte1) FROM c_alianca WHERE tipus_pacte1 IS NOT NULL ) AS tipus 
FROM c_alianca LIMIT 0

这就是你想要的吗

INSERT INTO pacte (alianca_en_pacte, tipus)
SELECT id_alianca_en_pacte1, tipus_pacte1, 
    ( SELECT COUNT(tipus_pacte1) FROM c_alianca WHERE tipus_pacte1 IS NOT NULL ) AS tipus 
FROM c_alianca LIMIT 0

MySQL目前不支持将子查询作为参数进行限制。您需要在两个查询中使用用户变量:

SET @limit = (
    SELECT COUNT(tipus_pacte1) FROM c_alianca WHERE tipus_pacte1 IS NOT NULL
);

INSERT INTO pacte (alianca_en_pacte, tipus)
    SELECT id_alianca_en_pacte1 ,tipus_pacte1
    FROM c_alianca
    LIMIT 0, @limit;
但是,在您的示例中,可以完全避免使用LIMIT:

INSERT INTO pacte (alianca_en_pacte, tipus)
    SELECT id_alianca_en_pacte1 ,tipus_pacte1
    FROM c_alianca
    WHERE tipus_pacte1 IS NOT NULL;

MySQL目前不支持将子查询作为参数进行限制。您需要在两个查询中使用用户变量:

SET @limit = (
    SELECT COUNT(tipus_pacte1) FROM c_alianca WHERE tipus_pacte1 IS NOT NULL
);

INSERT INTO pacte (alianca_en_pacte, tipus)
    SELECT id_alianca_en_pacte1 ,tipus_pacte1
    FROM c_alianca
    LIMIT 0, @limit;
但是,在您的示例中,可以完全避免使用LIMIT:

INSERT INTO pacte (alianca_en_pacte, tipus)
    SELECT id_alianca_en_pacte1 ,tipus_pacte1
    FROM c_alianca
    WHERE tipus_pacte1 IS NOT NULL;

为什么不直接查询您的条件并像这样插入这些条件呢

INSERT INTO pacte (alianca_en_pacte, tipus)
SELECT id_alianca_en_pacte1 ,tipus_pacte1
FROM c_alianca
WHERE tipus_pacte1 IS NOT NULL

为什么不直接查询您的条件并像这样插入这些条件呢

INSERT INTO pacte (alianca_en_pacte, tipus)
SELECT id_alianca_en_pacte1 ,tipus_pacte1
FROM c_alianca
WHERE tipus_pacte1 IS NOT NULL

您不能在limit上使用子查询,但也不需要它。对您的查询进行限制。检查我的答案。你不能使用子查询限制,但你也不需要它。对您的查询进行限制。检查我的答案。我想得太直率了+谢谢,它工作得很好!我想当事情这么简单的时候我是在绞尽脑汁。我想得太直率了+谢谢,它工作得很好!事情这么简单的时候,我想我是在绞尽脑汁。。