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

问题描述 投票:0回答:1

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

表LINPED:

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

表格顺序:

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:错误

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

[OK]

[页脚]查找有关此错误的帮助


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

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

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

[窗口标题] sesion1:错误

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

[OK]

[页脚]查找有关此错误的帮助

mysql mariadb mysql-error-1064
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.