gpt4 book ai didi

php - 在单个 MySQL 查询中使用多个临时表(适用于 phpMyAdmin,但不适用于 PHP)

转载 作者:行者123 更新时间:2023-11-30 00:39:19 26 4
gpt4 key购买 nike

我想避免使用真实的表格作为解决方法。我正在尝试连接两个表并获取我调用的列的唯一值 unique_values_needed ,同时当值 11 重复出现时也优先考虑 real_secondary_table_primary_key .

这是代码(它在 phpMyAdmin 中有效,但在 PHP 中无效):

CREATE TEMPORARY TABLE IF NOT EXISTS temporary_table_1    AS (SELECT real_main_table.*,                real_secondary_table.real_secondary_table_primary_key           FROM real_main_table               LEFT JOIN real_secondary_table                          ON real_secondary_table.real_main_table_primary_key = real_main_table.real_main_table_primary_key      ORDER BY real_main_table.date DESC);CREATE TEMPORARY TABLE IF NOT EXISTS temporary_table_2    AS (SELECT real_main_table.*,                real_secondary_table.real_secondary_table_primary_key           FROM real_main_table               LEFT JOIN real_secondary_table                          ON real_secondary_table.real_main_table_primary_key = real_main_table.real_main_table_primary_key      ORDER BY real_main_table.date DESC);UPDATE temporary_table_1 t1, temporary_table_2 t2   SET t1.real_secondary_table_primary_key = t2.real_secondary_table_primary_key WHERE     t1.real_main_table_primary_key = t2.real_main_table_primary_key        AND t1.real_secondary_table_primary_key  11        AND t2.real_secondary_table_primary_key = 11;  SELECT *     FROM temporary_table_1 GROUP BY unique_values_neededORDER BY temporary_table_1.date DESC;

我还尝试了以下方法(同样,它在 phpMyAdmin 中有效,但在 PHP 中仍然无效):

CREATE TEMPORARY TABLE IF NOT EXISTS temporary_table_1    AS (SELECT real_main_table.*,                real_secondary_table.real_secondary_table_primary_key           FROM real_main_table               LEFT JOIN real_secondary_table                          ON real_secondary_table.real_main_table_primary_key = real_main_table.real_main_table_primary_key      ORDER BY real_main_table.date DESC);UPDATE temporary_table_1 t1, (       SELECT real_main_table.*,               real_secondary_table.real_secondary_table_primary_key          FROM real_main_table              LEFT JOIN real_secondary_table                         ON real_secondary_table.real_main_table_primary_key = real_main_table.real_main_table_primary_key     ORDER BY real_main_table.date DESC) t2   SET t1.real_secondary_table_primary_key = t2.real_secondary_table_primary_key WHERE     t1.real_main_table_primary_key = t2.real_main_table_primary_key        AND t1.real_secondary_table_primary_key  11        AND t2.real_secondary_table_primary_key = 11;  SELECT *     FROM temporary_table_1 GROUP BY unique_values_neededORDER BY temporary_table_1.date DESC;

当我使用 mysql_query($query) or die(mysql_error()) 检查时,该错误可能是在创建第二个临时表(在第一个代码示例中)时出现的,或者是在 UPDATE 中出现的。当使用(SELECT ...) t2时(在第二个代码示例中)。

最佳答案

您不能使用mysql_query()执行多个查询,您应该使用mysqli_multi_query去做这个。 mysql_* 函数中没有与 mysqli_multi_query 等效的函数。

您可以在同一代码中同时使用mysql_*mysqli_*,但要小心不要混淆它们,就像使用mysql_open()打开和使用mysqli_query()查询一样反之亦然。一旦使用 mysqli_open() 打开连接,您就应该在该连接上仅使用 mysqli_* 函数。这也适用于 mysql_* 连接。但您可以通过同一代码同时打开两个连接。

警告: mysql_ 函数自 PHP 5.5.0 起已弃用,并将在将来删除。相反,MySQLiPDO_MySQL应使用扩展名。

关于php - 在单个 MySQL 查询中使用多个临时表(适用于 phpMyAdmin,但不适用于 PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21907786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com