我有兩個表。讓我們打電話給一個items
。其中的列是一些獨特的ID,位置和舊位置。 如果它有一箇舊位置,它目前從position_old
移動到position
。如果它有一個-
舊的位置 它不動。每個位置可以有多個項目。更新一些未在另一個表中使用的列
第二張表(position
)是針對職位的。其中的列是唯一的ID和狀態。
我需要更新的位置表具有狀態100和沒有項目被移動到它 (position = position_id AND position_old != '-'
),並沒有從項目它(position_old = position_id
)移動所有的行。
+---------+----------+--------------+
| item_id | position | position_old |
+---------+----------+--------------+
| 1 | 0001 | - |
| 2 | 0001 | 0002 |
+---------+----------+--------------+
+-------------+--------+
| position_id | status |
+-------------+--------+
| 0001 | 0 |
| 0002 | 100 |
+-------------+--------+
我得到了一些解決方案,但我不認爲這將是最好的一個:
UPDATE Position
SET status = 0
WHERE status = 100
AND position_id NOT IN (
SELECT DISTINCT position_old FROM Items WHERE position_old != '-'
UNION
SELECT DISTINCT position FROM Items WHERE position_old != '-'
)
那麼,有沒有更好的方法呢?只要信息 它的Oracle 11.2.0.4數據庫,如果你建議與連接的東西,它應該是蹩腳的舊語法,只要大家 這裏是與它合作,不願意學習新的標準。