我的 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))
)
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))
)