MySQL сказал: Документация. Подзапрос возвращает более 1 строки

Следующее отображает правильный вывод.

(
SELECT
   answer_data 
FROM
   wp_learndash_pro_quiz_statistic_ref b, wp_learndash_pro_quiz_statistic bb 
WHERE
   wp_users.id = b.user_id 
   AND b.statistic_ref_id = bb.statistic_ref_id 
   AND bb.question_id = 82
   AND b.quiz_id = 9) AS "xyz"

Но когда я меняю bb.question_id = 82 на любой другой question_id (т.е. 56 — это другой вопрос), я получаю эту ошибку:

" MySQL сказал: Документация #1242 - Подзапрос возвращает более 1 строки"

Любая идея, что я делаю неправильно?

Выполните его как один запрос (удалите скобки и последний псевдоним) и подсчитайте количество строк.

Akina 11.12.2020 05:55

Можете ли вы поделиться полным запросом? Похоже, вы используете результат вышеуказанного запроса в другом.

Ankit Jindal 11.12.2020 05:55

Вы пытались сделать limit 1 в конце, если хотите получить только одну строку из подзапроса?

singh.rbir 11.12.2020 05:56

Сообщение об ошибке понятно и говорит вам, что ваш подзапрос, который должен вернуть одно скалярное значение, возвращает более одной строки. Либо логика неверна, либо ее нужно изменить, чтобы она возвращала только одно значение, возможно, с помощью LIMIT.

Tim Biegeleisen 11.12.2020 06:05

Отвечает ли это на ваш вопрос? подзапрос возвращает более 1 строки

Eaten by a Grue 11.12.2020 06:27
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
5
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это просто означает, что для bb.question_id = 82 доступно несколько записей, и вы должны были использовать его в предложении SELECT или с оператором = в предложении WHERE, где ожидается одно значение.

  • Вы можете использовать агрегатную функцию для answer_data
  • Или вы можете использовать LIMIT 1, чтобы получить только одну запись из нескольких записей.

Использовать это:

(SELECT MAX(answer_data) 
  FROM wp_learndash_pro_quiz_statistic_ref b 
  JOIN wp_learndash_pro_quiz_statistic bb 
    ON wp_users.id = b.user_id 
   AND b.statistic_ref_id = bb.statistic_ref_id 
 WHERE bb.question_id = 82
   AND b.quiz_id = 9) AS "xyz"

Совет дня: всегда используйте стандартные соединения ANSI.

Другие вопросы по теме