我想避免使用真实表作为解决方法。我正在尝试连接两个表并为我正在调用unique_values_needed
的列获取唯一值,同时在重复real_secondary_table_primary_key
时存在值11的优先级。
这是代码(它在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_needed ORDER 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_needed ORDER BY temporary_table_1.date DESC;
当我使用mysql_query($query) or die(mysql_error())
进行检查时,错误应该是在创建第二个临时表(在第一个代码示例中)时,或者在使用UPDATE
时在(SELECT ...) t2
中(在第二个代码示例)。
答案 0 :(得分:0)
您无法使用mysql_query()
执行多个查询您应该使用mysqli_multi_query执行此操作。 mysqli_multi_query
函数中没有等效mysql_*
。
您可以在同一代码中同时使用mysql_*
和mysqli_*
,但要注意不要将它们与mysql_open()打开,并使用mysqli_query()查询,反之亦然。使用mysqli_open()
打开连接后,您应该只在该连接上使用mysqli_*
个函数。这也适用于mysql_*
连接。但是,您可以从同一代码同时打开两个连接。
警告: mysql_
函数自PHP 5.5.0起已弃用,将来会被删除。相反,应使用MySQLi或PDO_MySQL扩展名。