【发布时间】:2015-07-29 14:25:16
【问题描述】:
我正在尝试对更新查询进行内部连接,但我的语法出现错误,据我所知,它看起来不错(我可能正在查看某些内容)所有表都在那里,我在这篇文章中为你包含了这些表。
我的错误
警告:PDOStatement::execute(): SQLSTATE[42000]: 语法错误或 访问冲突:1064 您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 'FROM applications INNER JOIN jobs ON 附近使用的语法 applications.app'
我的 SQL
$sql = "UPDATE applications
SET applications.application_status = 1
FROM applications
INNER JOIN jobs
ON applications.application_job = jobs.job_id
WHERE applications.application_user = ?
AND jobs.job_enabled=1";
我正在内部加入的工作表
CREATE TABLE IF NOT EXISTS `jobs` (
`job_id` int(11) NOT NULL,
`job_name` varchar(100) NOT NULL,
`job_description` text NOT NULL,
`job_duration` int(11) NOT NULL,
`job_country` varchar(100) NOT NULL,
`job_category` int(50) NOT NULL,
`job_user` int(100) NOT NULL,
`job_employer` varchar(100) NOT NULL,
`job_enabled` int(2) NOT NULL DEFAULT '1',
`job_startdate` date NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
我正在更新的应用程序表
CREATE TABLE IF NOT EXISTS `applications` (
`application_id` int(11) NOT NULL,
`application_user` varchar(100) NOT NULL,
`application_date` datetime NOT NULL,
`application_job` int(11) NOT NULL,
`application_status` int(11) DEFAULT '0',
`application_enabled` int(2) NOT NULL DEFAULT '1'
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
【问题讨论】:
-
您在查询中加入作业表有什么原因吗?对我来说似乎没有必要。
-
我最终将使用 AND jobs.job_enabled=1 来确保作业已启用,因此是加入的原因。我应该把它包含在我的 OP 中,我的错。