Php 从2个表中插入复制表1的1列中的所有行,仅复制表3的1列中的最后一行

Php 从2个表中插入复制表1的1列中的所有行,仅复制表3的1列中的最后一行,php,mysql,insert,Php,Mysql,Insert,正如标题所说,我想在表3中插入表1 temp\u urs上一列中的所有行,以及表2中1列中的最后一行,您可以看到,第1列中的所有行都具有相同的ID,这是list\u mail\u nom表的list\u ID列中的最后一行 $tmp_usr = "INSERT INTO list_mail_usr (id_usuario,list_id) SELECT temp_urs.id_usuario JOIN list_mail_nom.list_id WHERE MAX(ID) FROM list_m

正如标题所说,我想在表3中插入表1 temp\u urs上一列中的所有行,以及表2中1列中的最后一行,您可以看到,第1列中的所有行都具有相同的ID,这是list\u mail\u nom表的list\u ID列中的最后一行

$tmp_usr = "INSERT INTO list_mail_usr (id_usuario,list_id)
SELECT temp_urs.id_usuario
JOIN list_mail_nom.list_id
WHERE MAX(ID) FROM list_mail_nom.list_id
";
这就是我目前所拥有的。它显然不起作用; 有什么建议吗

这一行几乎可以工作,但从temp_usr插入每一行65次

$tmp_usr = "INSERT INTO list_mail_usr (id_usuario,list_id)
            SELECT temp_usr.id_usuario,list_mail_nom.list_id
            FROM temp_usr,list_mail_nom";
$insert = $asies -> query($tmp_usr) or die (mysqli_error($asies));

您需要告诉MySQL这些值来自您的子查询:

$tmp_usr = "INSERT INTO list_mail_usr (id_usuario,list_id)
VALUES(
SELECT temp_urs.id_usuario, some_other_field_name
JOIN list_mail_nom.list_id
WHERE MAX(ID) FROM list_mail_nom.list_id)
";

此外,select输出的字段数应与您输入到list\U mail\U usr中的字段数相同。在上面的查询中,我用一些_other _field _name表示了另一个字段名

您没有正确使用聚合函数。要想做你想做的事情,你需要分组并使用HAVING。更简单的查询如下:

INSERT INTO new_table (new_a, new_b)
SELECT x.col, y.col
FROM x, y
WHERE y.id = (SELECT MAX(id) FROM y)

对于大型表,MySQL优化子查询的困难将显而易见。如果您可以单独找到最大ID并将其作为常量传递,那么对于x比y更大的大型表,性能会更好,因为假设您的ID上有一个索引。

谢谢,是的,但是,我只需要列表\u mail\u nom表的列表\u ID列中最后一行的值,您的选择输出相同数量的字段时,该字段如何适合?我有35行的临时文件,我有35行的临时文件,我有35行的临时文件,我需要被插入,我需要被插入像:我有35行的临时文件,我有35行,我需要被插入,我需要插入,我需要插入,我需要插入,我需要插入,我有35行:我有35行,我有35行,我需要我需要被插入,我需要我需要插入,我有这样::::UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUuu124; 124; 124; 124; 124; 124; 124; 124; 124; 124; 124; 124; 124; 124; 124; 124;米克尔拉姆124; 124; 124; u65 124; 124; 124; | | | | | | | | | | |您显示两个列名ID和,然后,您可以删除some_other_字段的名称。它应该遵循以下格式:插入到表_name column1,column2,column3,。。。值value1,value2,value3,…状态应该如下:$tmp\u usr=插入列表\u mail\u usr ID,ID\u usario,list\u ID值选择list\u mail\u nom.ID,temp\u urs.ID\u usario,list\u mail\u nom.list\u ID FROM temp\u urs.ID加入列表\u mail\u nom,其中MAXlist\u mail\u nom.ID来自列表\u mail\u nom.list\u ID;它不起作用了。。。。我正在努力,但它不起作用。。。在它应该,必须有一个不同的方式,因为这一个根本不工作。。除了我正在使用的方法,还有什么建议吗?问题是,列表将随着其他列表名称id的增加而增加,因此我认为从tem_usr列表复制id不是一个好主意。这是可行的,但是,它从temp_usr$tmp_usr=插入到list_mail_usr id_usario,list_id选择temp_usr.id_usario,list_mail_nom.list_id from temp_usr,list_mail_nom$insert=$asies->查询$tmp\U usr或die mysqli\U错误$asies;我的天啊@肖恩·麦克索姆。就这样,谢谢你,谢谢你,它就像一个符咒。祝福你