我正在尝试将SQlite代码转换为Mariadb,但是我一直在查询另外两个表之间的交叉表
表中的目的是为了与其它表中添加ID,但只有当它们不存在
我有两个桌子
表计算机
ID(主)/ NETBIOS(唯一)/ IP / SOFTWARE_STAT / COPY_STAT / AV_STAT
例如:1个PC1 192.168.1.1 KO KO 0
表软件
ID(主要)/ NAME(唯一)
例如:1个ADOBE
和交叉表
表安装
ID(主要)/ COMPUTER_ID / SOFTWARE_ID / FAIL
1 1 1 0
下面的我的SQLITE代码正常工作
INSERT OR IGNORE INTO INSTALL (COMPUTER_ID,SOFTWARE_ID)
SELECT
(SELECT ID FROM COMPUTERS WHERE IP = '192.168.1.1'),
(SELECT ID FROM SOFTWARES WHERE NOM = 'ADOBE')
WHERE NOT EXISTS
(SELECT
COMPUTER_ID,SOFTWARE_ID FROM INSTALL
WHERE
COMPUTER_ID = (SELECT ID FROM COMPUTERS WHERE IP = '192.168.1.1')
AND
SOFTWARE_ID = (SELECT ID FROM SOFTWARES WHERE NOM = 'ADOBE')
)
我已经尝试过
INSERT INTO INSTALL (COMPUTER_ID,SOFTWARE_ID)
SELECT
(SELECT RowID FROM COMPUTERS WHERE IP='192.168.1.1'),
(SELECT RowID FROM SOFTWARES WHERE NOM='ADOBE')
WHERE NOT EXISTS
(SELECT COMPUTER_ID,SOFTWARE_ID FROM INSTALL
WHERE
COMPUTER_ID = (SELECT RowID FROM COMPUTERS WHERE IP='192.168.1.1')
AND
SOFTWARE_ID = (SELECT RowID FROM SOFTWARES WHERE NOM='ADOBE'));
没有成功
有人有主意吗?预先感谢。
答案 0 :(得分:0)
INSERT OR IGNORE
-> INSERT IGNORE
但是,有一个冗余:(1)IGNORE
,以及(2)NOT EXISTS
。就是说,您都验证了它不是dup,并且忽略了它。
否则,Sqlite代码应像在MariaDB中一样工作。什么地方出了错?你得到一个错误?
MariaDB的不具有RowID
。