【发布时间】:2014-03-21 09:28:36
【问题描述】:
我想避免使用真实表格作为解决方法。我正在尝试加入两个表并为我调用的列获取唯一值unique_values_needed,同时当值 11 重复出现时优先考虑值 11real_secondary_table_primary_key。
这是代码(它在 phpMyAdmin 中有效,但在 PHP 中无效):
如果不存在则创建临时表temporary_table_1 AS (选择 real_main_table.*, real_secondary_table.real_secondary_table_primary_key FROM real_main_table 左连接 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); 如果不存在则创建临时表temporary_table_2 AS (选择 real_main_table.*, real_secondary_table.real_secondary_table_primary_key FROM real_main_table 左连接 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); 更新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; 选择 * FROM 临时表 1 GROUP BY unique_values_needed 按temporary_table_1.date DESC排序;我也尝试了以下方法(同样,它在 phpMyAdmin 中有效,但在 PHP 中仍然无效):
如果不存在则创建临时表temporary_table_1 AS (选择 real_main_table.*, real_secondary_table.real_secondary_table_primary_key FROM real_main_table 左连接 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); 更新temporary_table_1 t1,( 选择 real_main_table.*, real_secondary_table.real_secondary_table_primary_key FROM real_main_table 左连接 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; 选择 * FROM 临时表 1 GROUP BY unique_values_needed 按temporary_table_1.date DESC排序;当我使用mysql_query($query) or die(mysql_error()) 检查时,错误应该是在创建第二个临时表时(在第一个代码示例中),或者在UPDATE 中使用(SELECT ...) t2(在第二个代码示例中)。
【问题讨论】:
-
提供
SHOW CREATE TABLE real_main_table;、SHOW CREATE TABLE real_secondary_table;和所需的输出。还有read this -
我很困惑——这不只是输出制作表格所需的 SQL 吗?你想让我把表格贴在这里吗?编辑:没关系,我看到你的问题已经澄清了。
-
你确定你从 php 端使用相同的连接(会话)到 db 吗?还发布您收到的错误
-
mysql_query应该只执行一条语句。您应该使用 mysqli_multi_query ,抱歉我不知道 mysql_* 等价物。 -
已弃用:mysql 扩展已弃用,将来将被删除:使用 mysqli 或 PDO
标签: php mysql sql phpmyadmin