У меня есть один запрос на выбор и один запрос на обновление, и я хочу объединить их оба.
Запрос на выборку выглядит так:
select questionDesc from myTable
where
questionId >= (
select currentQuestionid from userTable
where userId='1'
)
and questionId <= (
select currentQuestionid+4 from userTable
where userId='1'
)
За user=1
этот запрос пытается получить все описания myTable
чья questionId
лежит между currentQuestionid
а также currentQuestionid+4
(currentQuestionid
столбец, определенный для пользователя в userTable
). Позже я буду использовать этот результат в моем интерфейсе.
Теперь я хочу обновить currentQuesionid
в currentQuestionid+5
, Это может быть достигнуто с помощью:
UPDATE userTable SET currentQuesionid = currentQuestionid+5 WHERE userId ='1'
Я хочу выполнить оба этих запроса в одном обращении к базе данных, чтобы повысить производительность.
Есть ли способ объединить два. Я использую WAMP и код написан на PHP-скриптах.
Любая помощь приветствуется.
Я думаю, что нашел ответ.
Для объединения нескольких запросов мы можем использовать mysqli_multi_query () функция. Он доступен для MySQL версии 4.1.3 и новее. Он принимает несколько запросов в качестве входного параметра и выполняет их в один удар по дб.
например:
//sql queries should be separated by semi-colons
$sql = "SELECT Lastname FROM Persons ORDER BY LastName;";
$sql .= "SELECT Country FROM Customers";
// Execute multi query
if (mysqli_multi_query($con,$sql))
{
do
{
// Store first result set
if ($result=mysqli_store_result($con)) {
// Fetch row one and one
while ($row=mysqli_fetch_row($result))
{
printf("%s\n",$row[0]);
}
// Free result set
mysqli_free_result($result);
}
}
while (mysqli_next_result($con));
}
Других решений пока нет …