Объедините два разных оператора выбора и обновления

У меня есть один запрос на выбор и один запрос на обновление, и я хочу объединить их оба.

Запрос на выборку выглядит так:

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-скриптах.

Любая помощь приветствуется.

0

Решение

Я думаю, что нашел ответ.

Для объединения нескольких запросов мы можем использовать 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));
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]