当我尝试使用2个表进行删除时出现SQL错误

时间:2018-01-01 20:24:24

标签: mysql mariadb mysql-error-1064

我正在使用MariaDB。 我试图使用这两个表进行删除:

表LINPED:

CREATE TABLE LINPED (
    NUMPEDIDO SMALLINT NOT NULL,
    NUMLINEA SMALLINT NOT NULL,
    NUMPIEZA CHAR(16),
    PRECIOCOMPRA INTEGER,
    CANTPEDIDA SMALLINT,
    FECHARECEP datetime,
    CANTRECIBIDA SMALLINT);

表PEDIDO:

CREATE TABLE PEDIDO (
    NUMPEDIDO SMALLINT NOT NULL,
    NUMVEND SMALLINT,
    FECHA datetime);

首先我尝试这样做:

DELETE FROM LINPED
INNER JOIN PEDIDO 
ON LINPED.NUMPEDIDO = PEDIDO.NUMPEDIDO
WHERE PEDIDO.NUMVEND= 1 AND PEDIDO.NUMPEDIDO= 1

但它不适合我,因为我收到此错误:

[窗口标题] sesion1:错误

[内容] Error de SQL(1064):您的SQL语法有错误;查看与您的MariaDB服务器版本对应的手册,以获得在' INNER JOIN PEDIDO附近使用的正确语法     ON LINPED.NUMPEDIDO = PEDIDO.NUMPEDIDO     在哪里数量'在第2行

[Aceptar]

[页脚] Encontrar ayuda acerca de este error

在Stackoverfolw中搜索解决方案我在此解决方案中发现了一个类似的问题:

DELETE FROM LINPED
JOIN PEDIDO ON LINPED.NUMPEDIDO = PEDIDO.NUMPEDIDO
WHERE PEDIDO.NUMVEND = 1 AND PEDIDO.NUMPEDIDO = 1

但它不起作用,至少对我而言

[窗口标题] sesion1:错误

[内容] Error de SQL(1064):您的SQL语法有错误;查看与您的MariaDB服务器版本对应的手册,以获得正确的语法,以便在LINPED.NUMPEDIDO = PEDIDO.NUMPEDIDO附近使用' JOIN PEDIDO 在哪里PEDIDO.NUMVEND = 1和'在第2行

[Aceptar]

[页脚] Encontrar ayuda acerca de este error

1 个答案:

答案 0 :(得分:1)

使用以下内容明确地从LINPED表中删除:

DELETE l.*
FROM LINPED AS l
INNER JOIN PEDIDO AS p
ON l.NUMPEDIDO = p.NUMPEDIDO
WHERE p.NUMVEND = 1 AND p.NUMPEDIDO = 1