Мне нужно выбрать строки таблицы, а затем обновить поле строк. Например:Mysql: сначала выберите затем обновление в одном запросе
"SELECT * FROM `messages` WHERE `timestamp`>'1422680952'"
Тогда я хочу, чтобы обновить поле, что строки.
Мне нужно выбрать строки таблицы, а затем обновить поле строк. Например:Mysql: сначала выберите затем обновление в одном запросе
"SELECT * FROM `messages` WHERE `timestamp`>'1422680952'"
Тогда я хочу, чтобы обновить поле, что строки.
операции, которую вы описали, возвращая результирующий из SELECT
и выполнения UPDATE
не может быть выполнено в одном операторе SQL в MySQL.
Вам понадобятся два отдельных оператора SQL: a SELECT
и UPDATE
.
С точки зрения MySQL, нет необходимости запускать SELECT
перед запуском UPDATE
, можно запустить только UPDATE
.
UPDATE `messages` SET somecol = 'somevalue' WHERE `timestamp`>'1422680952'
(Запрос в вопросе заключен в двойных кавычках. Это приводит нас подозревать, что вы работаете это утверждение из библиотеки интерфейса базы данных на языке, такие как PHP.)
Это возможно чтобы получить несколько операторов для выполнения как часть одной транзакции. Но насколько сам сервер MySQL фактически обрабатывает указанные операции, это будет два отдельных оператора.
Вы можете использовать транзакцию, для этой цели , где вы можете иметь как выбрать и обновление внутри транзакции
START TRANSACTION;
-- Let's get the current value
SELECT value FROM counters WHERE id = 1 FOR UPDATE;
-- Increment the counter
UPDATE counters SET value = value + 1 WHERE id = 1;
COMMIT;
Обычно это делается с таким образом
try {
// First of all, let's begin a transaction
$db->beginTransaction();
// A set of queries; if one fails, an exception should be thrown
$db->query('select query');
$db->query('update query');
// If we arrive here, it means that no exception was thrown
// i.e. no query has failed, and we can commit the transaction
$db->commit();
} catch (Exception $e) {
// An exception has been thrown
// We must rollback the transaction
$db->rollback();
}
Вы можете использовать синтаксис ниже, если вы просто обновляете таблицу:
Update messages
Set display = 1
Where timestamp >'1422680952'
Для обновления строки вам необязательно выбирать строки. Попробуйте что-то вроде:
UPDATE messages
SET display = 1
WHERE timestamp >'1422680952'
обновление с чем? – SMA
для примера: "SELECT * FROM' messages' WHERE 'timestamp'> '1422680952' набор обновлений' display' = '1' " – Jajarm