У меня есть два основных оператора SELECT, которые возвращают желаемые результаты при выполнении отдельно, но при объединении не возвращают желаемый результат.Проблема MySQL с комбинированными операторами SELECT
Запрос 1
Это прекрасно работает, возвращая ожидаемый результат.
SELECT feed_mode_id FROM user WHERE id=2;
+--------------+
| feed_mode_id |
+--------------+
| 1 |
+--------------+
Запрос 2
Это также хорошо. Иногда результат будет пустым, иногда нет.
SELECT
answer.id AS answer_id
FROM
answer
WHERE
answer.question_id = (
SELECT
question.id
FROM
question
ORDER BY
datetime_added_utc DESC
LIMIT 1
)
AND answer.user_id = 2;
Empty set (0.00 sec)
Запрос 1 и 2 в сочетании
При объединении их в двух суб-ЗЕЬЕСТ, как показано ниже, это feed_mode_id
NULL
, но результат для x.feed_mode_id
должен быть таким, как показано в Query 1. Это я не понимаю, как эти комбинированные заявления работают.
SELECT
x.feed_mode_id,
IF (COUNT(y.answer_id) < 1, 0, 1) AS answered_question
FROM
(SELECT
user.feed_mode_id
FROM
user
WHERE
user.id = 2) AS x,
(SELECT
answer.id AS answer_id
FROM
answer
WHERE
answer.question_id = (
SELECT
question.id
FROM
question
ORDER BY
datetime_added_utc DESC
LIMIT 1
)
AND answer.user_id = 2) AS y
+--------------+-------------------+
| feed_mode_id | answered_question |
+--------------+-------------------+
| NULL | 0 |
+--------------+-------------------+
Почему feed_mode_id
производит NULL
и не 1
? Я открыт для разных подходов к повторной записи запроса в целом. Желательным результатом будет:
+--------------+-------------------+
| feed_mode_id | answered_question |
+--------------+-------------------+
| 1 | 0 |
+--------------+-------------------+
Это как-то связано с тем, что для этого случая пусто. В случаях, когда Query 2 возвращает значение (не пустое), комбинированный запрос работает по желанию.
Можете ли вы сказать, какой результат вы хотите достичь после выполнения запроса? –
* feed_mode_id * - это имя столбца, а не имя таблицы. Вы пытаетесь выбрать из столбца вместо таблицы. –
Hi Hasib. Для первого подзапроса я выбираю из 'x', который является производной таблицей с одним столбцом и одним значением. Можете ли вы объяснить, что вы имеете в виду? Я не понимаю. – TPoy