Дополнительный вопрос к MySQL: вставка данных в таблицу, некоторые данные поступают из другой таблицы (реляционной)
Мой вопрос выше в основном спрашивал: «Как я могу вставить строку в таблицу, используя информацию, найденную в другой строке». Ответ состоял в том, чтобы использовать такой запрос, как:
INSERT INTO user_config(cid, sid, value)
SELECT $cid, id, $value
FROM user_settings
WHERE mid='$mid' AND name='$name'
ON DUPLICATE KEY UPDATE value = $value;
Моя проблема сейчас в том, что мне нужно вставить несколько строк. Для каждой строки, которую мне нужно вставить, есть разные значения для $cid
, $value
, $mid
и $name
. Например, я мог бы запустить следующее (псевдо):
function x($cid, $mid, $name, $value){
// run query:
INSERT INTO user_config(cid, sid, value)
SELECT $cid, id, $value
FROM user_settings
WHERE mid='$mid' AND name='$name'
ON DUPLICATE KEY UPDATE value = $value;
}
x(1,'a','b');
x(2,'c','d');
x(3,'f','e');
Проблема в том, что это будет запускать 3 запроса, и я хочу сделать это за один. Является ли это возможным? Я мог бы предоставить массив для $cid
, $mid
и $name
, если это поможет решить проблему?
$value
в вашем запросе, но нет его в качестве параметра функции, откуда берется$value
? - person Sean   schedule 18.07.2014$value
- это параметр (только что отредактировал мой вопрос). Я буду вызывать эту функцию относительно регулярно и поэтому хочу уменьшить количество запросов, которые мне приходится выполнять при загрузке страницы. - person Keir Simmons   schedule 18.07.2014