MySQL 在 IN 子句和 LIMIT 中删除带有子查询的语句
MySQL delete statement with subquery in IN cluase and LIMIT
我试图删除与另一个条件相关的记录 table,我还想限制将被删除的记录。
DELETE e.* FROM employees e
WHERE emp_no IN (
SELECT ee.emp_no
FROM (
SELECT e.emp_no
FROM employees e, salaries s
WHERE e.emp_no = s.emp_no
GROUP BY e.emp_no
HAVING COUNT(s.emp_no) = 1)
ee)
AND emp_no NOT IN (
SELECT dmm.emp_no
FROM (
SELECT dm.emp_no
FROM dept_manager dm)
dmm)
LIMIT 8384
但我得到一个错误
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LIMIT 8384' at line 17
我想知道这是因为它的条件,我不知道出了什么问题。
据我所知,您可以避免使用 e.* 并且您错过了别名 e.emp
DELETE FROM employees e
WHERE e.emp_no IN (
SELECT ee.emp_no
FROM (
SELECT e.emp_no
FROM employees e, salaries s
WHERE e.emp_no = s.emp_no
GROUP BY e.emp_no
HAVING COUNT(s.emp_no) = 1)
ee )
AND e.emp_no NOT IN (
SELECT dmm.emp_no
FROM (
SELECT dm.emp_no
FROM dept_manager dm)
dmm )
LIMIT 8384
您正在从单个 table 中删除,出于某种原因 MySQL 不支持 table 别名:-
DELETE
FROM employees
WHERE emp_no IN (
SELECT ee.emp_no
FROM (
SELECT e.emp_no
FROM employees e, salaries s
WHERE e.emp_no = s.emp_no
GROUP BY e.emp_no
HAVING COUNT(s.emp_no) = 1)
ee)
AND emp_no NOT IN (
SELECT dmm.emp_no
FROM (
SELECT dm.emp_no
FROM dept_manager dm)
dmm)
LIMIT 8384
我试图删除与另一个条件相关的记录 table,我还想限制将被删除的记录。
DELETE e.* FROM employees e
WHERE emp_no IN (
SELECT ee.emp_no
FROM (
SELECT e.emp_no
FROM employees e, salaries s
WHERE e.emp_no = s.emp_no
GROUP BY e.emp_no
HAVING COUNT(s.emp_no) = 1)
ee)
AND emp_no NOT IN (
SELECT dmm.emp_no
FROM (
SELECT dm.emp_no
FROM dept_manager dm)
dmm)
LIMIT 8384
但我得到一个错误
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LIMIT 8384' at line 17
我想知道这是因为它的条件,我不知道出了什么问题。
据我所知,您可以避免使用 e.* 并且您错过了别名 e.emp
DELETE FROM employees e
WHERE e.emp_no IN (
SELECT ee.emp_no
FROM (
SELECT e.emp_no
FROM employees e, salaries s
WHERE e.emp_no = s.emp_no
GROUP BY e.emp_no
HAVING COUNT(s.emp_no) = 1)
ee )
AND e.emp_no NOT IN (
SELECT dmm.emp_no
FROM (
SELECT dm.emp_no
FROM dept_manager dm)
dmm )
LIMIT 8384
您正在从单个 table 中删除,出于某种原因 MySQL 不支持 table 别名:-
DELETE
FROM employees
WHERE emp_no IN (
SELECT ee.emp_no
FROM (
SELECT e.emp_no
FROM employees e, salaries s
WHERE e.emp_no = s.emp_no
GROUP BY e.emp_no
HAVING COUNT(s.emp_no) = 1)
ee)
AND emp_no NOT IN (
SELECT dmm.emp_no
FROM (
SELECT dm.emp_no
FROM dept_manager dm)
dmm)
LIMIT 8384