asset_property таблица:
| asset_id | property_id | property_value |
|:--------:|:-----------:|:---------------|
| 146 | 1 | 4G |
| 146 | 3 | 68723-239Gs |
| 147 | 1 | A7 |
Это мой запрос:
INSERT INTO asset_property (asset_id, property_id, property_value)
VALUES
(146, 1, '4G'),
(146, 2, 'Black & Decker'),
(146, 3, ''),
ON DUPLICATE KEY
UPDATE property_value = VALUES(property_value);
Есть ли способ сказать что-то вроде этого:
INSERT INTO asset_property (asset_id, property_id, property_value)
VALUES
(146, 1, '4G'),
(146, 2, 'Black & Decker'),
(146, 3, ''),
ON DUPLICATE KEY
UPDATE property_value = VALUES(property_value)
ON VALUES(property_value) IS NULL
DELETE FROM asset_property
WHERE asset_id = VALUES(asset_id)
AND property_id = VALUES(property_id);
Или я мог бы использовать PHP для определения пустых property_value
наборов и построения второго запроса. Так что мне нужно это:
DELETE FROM asset_property
WHERE 'PRIMARY KEY' IN ('146-3');
Синтаксис в порядке, но затрагиваются 0 строк.
Я пробовал это:
SELECT 'PRIMARY KEY' FROM asset_property WHERE asset_id = 146;
Но результат:
| PRIMARY KEY |
|:------------|
| PRIMARY KEY |
| PRIMARY KEY |
В руководстве MySQL швы говорят, что вы не можете.