我的 SQL 代码哪里出错了?

where is my mistake in my SQL code?

SQL 命令:

UPDATE table1
SET colOne=1
WHERE id EXISTS (
SELECT IF(col1=19,col2,col1) AS id
FROM table2 
WHERE
(col3=19 AND col4='X') 
OR 
(col3=0 AND col4='Y' AND (col1=19 OR col2=19))
)

内部 SELECT 单独查询工作正常

您是想使用 = 而不是 exists

UPDATE table1
SET colOne=1
WHERE id = (
SELECT IF(col1=19,col2,col1) AS id
FROM table2 
WHERE
(col3=19 AND col4='X') 
OR 
(col3=0 AND col4='Y' AND (col1=19 OR col2=19))
)
UPDATE table1
SET colOne=1
WHERE id IN (
SELECT IF(col1=19,col2,col1) AS id
FROM table2 
WHERE
(col3=19 AND col4='X') 
OR 
(col3=0 AND col4='Y' AND (col1=19 OR col2=19))
)

你也可以这样做

UPDATE table1
SET colOne=1
WHERE EXISTS (
SELECT IF(col1=19,col2,col1) AS id
FROM table2 
WHERE
(col3=19 AND col4='X') 
OR 
(col3=0 AND col4='Y' AND (col1=19 OR col2=19))
)