Php 从两个具有内部联接的表中删除数据

Php 从两个具有内部联接的表中删除数据,php,sql,inner-join,Php,Sql,Inner Join,我想根据datetime\u lastactive和IP地址是否与您自己的匹配,使用一个SQL查询从两个表中删除数据。但我在尝试以下SQL查询时收到此错误消息: 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解可在“内部连接访问者”附近使用的正确语法,其中信息\u ipaddress='123.123.123.123'A'位于…中的第2行。 DELETE F

我想根据
datetime\u lastactive
和IP地址是否与您自己的匹配,使用一个SQL查询从两个表中删除数据。但我在尝试以下SQL查询时收到此错误消息:


致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解可在“内部连接访问者”附近使用的正确语法,其中信息\u ipaddress='123.123.123.123'A'位于…中的第2行。

DELETE FROM visitors_list
INNER JOIN visitors_main
WHERE information_ipaddress = :ipaddress
AND datetime_lastactive < NOW() - INTERVAL 3 HOUR
我怎样才能让它工作?

试试这个:

DELETE l, m
FROM visitors_list AS l
INNER JOIN visitors_main AS m ON l.information_ipaddress = m.information_ipaddress
WHERE l.information_ipaddress = :ipaddress
AND l.datetime_lastactive < NOW() - INTERVAL 3 HOUR;
删除l,m
从访客列表中选择l
内部连接访问者\u main作为l.information\u ipaddress=m.information\u ipaddress上的m
其中l.information\u ipaddress=:ipaddress
l.datetime_lastactive
删除v1、v2
来自访客列表v1
v1.id上的内部连接访问者\u main v2\u访问者=v2.id
其中v1.information\u ipaddress=:ipaddress
v1.datetime_lastactive
尝试对表名使用反勾号。谢谢,但这并不能解决问题。我在WHERE之前收到了相同的错误消息use a ON condition。@Mihai
。。。关于信息_ipaddress=:ipaddress WHERE…
?谢谢!但我只得到了
致命错误:未捕获异常'PDOException',消息为'SQLSTATE[23000]:完整性约束冲突:1052列'information\u ipaddress'在where子句中不明确'。
。为什么要删除访客列表?我不想删除整个表。仅仅是其中的数据(以及visitors_main中的数据)@ErikEdgren-这是因为两个表之间存在外键约束,您可以使它
级联删除
也从另一个表中删除。但是您想从两个表中删除还是只从其中一个表中删除?我想从两个表中删除IP地址相同的数据。@ErikEdgren-好的,对不起,然后将连接条件更改为该列上的
information\u ipaddress
,然后将删除两个表中所有匹配的列。谢谢,但我一直收到相同的错误消息-
完整性约束冲突:where子句中的1052列“information\u ipaddress”不明确“
:/
级联删除访客列表中的访客列表…
也不起作用<代码>语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第1行“从访问者中级联删除访问者列表,在vi上内部加入访问者列表”附近使用的正确语法。
致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42S22]:找不到列:1054未知列“访问者列表”。在…“where子句”中的“信息地址”
DELETE l, m
FROM visitors_list AS l
INNER JOIN visitors_main AS m ON l.information_ipaddress = m.information_ipaddress
WHERE l.information_ipaddress = :ipaddress
AND l.datetime_lastactive < NOW() - INTERVAL 3 HOUR;
DELETE v1,v2
FROM visitors_list v1
INNER JOIN visitors_main v2 ON v1.id_visitor = v2.id
WHERE v1.information_ipaddress = :ipaddress
AND v1.datetime_lastactive < NOW() - INTERVAL 3 HOUR;