在 Sybase 中对 WHERE 子句使用 AND & OR?
Using AND & OR in Sybase for the WHERE clause?
如何在 WHERE 子句中同时使用 AND 和 OR 条件?
我需要更新 table a
,其中:
- 它们的主要 key/foreign 键行相同,但是
- 2 table 之间的另外 2 行不同。
示例:
UPDATE a
SET a.col4 = b.col4,
a.col5 = b.col5
FROM table a, table b
WHERE a.col1 = b.col1 AND
a.col2 = b.col2 AND
a.col3 = b.col3 AND
a.col4 != b.col4 OR
a.col5 != b.col5;
由于您希望满足四个条件,因此需要将它们括在括号中以明确必须一起满足的条件:
UPDATE a
SET a.col4 = b.col4,
a.col5 = b.col5
FROM table a, table b
WHERE a.col1 = b.col1 AND
a.col2 = b.col2 AND
a.col3 = b.col3 AND
(a.col4 != b.col4 OR a.col5 != b.col5);
^ ^
这样,你是在说:
UPDATE
...
WHERE
condition1 AND condition2 AND condition3 AND condition4
^^^^^^^^^^
成为 condition4
a.col4 != b.col4
或 a.col5 != b.col5
的事实。
你只需要将最后一个条件放在方括号中:
(a.col4 != b.col4 或 a.col5 != b.col5)
如何在 WHERE 子句中同时使用 AND 和 OR 条件?
我需要更新 table a
,其中:
- 它们的主要 key/foreign 键行相同,但是
- 2 table 之间的另外 2 行不同。
示例:
UPDATE a
SET a.col4 = b.col4,
a.col5 = b.col5
FROM table a, table b
WHERE a.col1 = b.col1 AND
a.col2 = b.col2 AND
a.col3 = b.col3 AND
a.col4 != b.col4 OR
a.col5 != b.col5;
由于您希望满足四个条件,因此需要将它们括在括号中以明确必须一起满足的条件:
UPDATE a
SET a.col4 = b.col4,
a.col5 = b.col5
FROM table a, table b
WHERE a.col1 = b.col1 AND
a.col2 = b.col2 AND
a.col3 = b.col3 AND
(a.col4 != b.col4 OR a.col5 != b.col5);
^ ^
这样,你是在说:
UPDATE
...
WHERE
condition1 AND condition2 AND condition3 AND condition4
^^^^^^^^^^
成为 condition4
a.col4 != b.col4
或 a.col5 != b.col5
的事实。
你只需要将最后一个条件放在方括号中: (a.col4 != b.col4 或 a.col5 != b.col5)