Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL-如果同一记录不在表Y中,则从表X中删除该记录_Mysql_Sql_Sql Server - Fatal编程技术网

Mysql SQL-如果同一记录不在表Y中,则从表X中删除该记录

Mysql SQL-如果同一记录不在表Y中,则从表X中删除该记录,mysql,sql,sql-server,Mysql,Sql,Sql Server,很抱歉再次对删除相同的记录大惊小怪,但我找不到任何解决方案:( 我需要这样的东西: 如果从表1中选择3列值 不等于表2中的相同选择 然后从表2中删除记录 这是我的便签: DELETE FROM table2 INNER JOIN table1 ON table2.basketid = table1.basketid AND table2.artid = table1.artid WHERE table1.userid='007' DELETE FROM table2 WHERE NOT EXI

很抱歉再次对删除相同的记录大惊小怪,但我找不到任何解决方案:(

我需要这样的东西:

如果从表1中选择3列值
不等于表2中的相同选择
然后从表2中删除记录

这是我的便签:

DELETE FROM table2
INNER JOIN table1
ON table2.basketid = table1.basketid AND
table2.artid = table1.artid
WHERE table1.userid='007'

DELETE FROM table2
WHERE NOT EXISTS (
SELECT basketid, artid
FROM table1
)
AND userid ='007'
感谢您的帮助或任何提示!!

您可能需要where()而不是in()


您可以在SQL Server中执行此操作

DELETE  t2
FROM    Table2 t2
WHERE   NOT EXISTS ( SELECT 1
                     FROM   Table1 t1
                     WHERE  t1.basketid = t2.basketid
                            AND t1.artid = t2.artid )
        AND t2.userid = '007'
注意select中比较表2和表1中的值的过滤器

如果userid也在表2中,您可能希望将其添加到WHERE-allow中

DELETE  t2
FROM    Table2 t2
WHERE   NOT EXISTS ( SELECT 1
                     FROM   Table1 t1
                     WHERE  t1.userid = t2.userid
                            AND t1.basketid = t2.basketid
                            AND t1.artid = t2.artid )
        AND t2.userid = '007'

请尝试上面的代码。

这是sql server的问题吗?
DELETE  t2
FROM    Table2 t2
WHERE   NOT EXISTS ( SELECT 1
                     FROM   Table1 t1
                     WHERE  t1.userid = t2.userid
                            AND t1.basketid = t2.basketid
                            AND t1.artid = t2.artid )
        AND t2.userid = '007'
DELETE y
FROM  X
LEFT JOIN Y
ON 
    X.COL1=Y.COL1
AND
    X.COL2=Y.COL2
AND
    X.COL3=Y.COL3
WHERE 
    Y.COL1 IS NULL