И не работает с Nested Select SQL запрос

У меня есть SQL-запрос, который выбирает минимальное значение из столбца и требует, чтобы другое значение было равно 1. Я использую вложенный выбор и пытаюсь использовать оператор AND. Однако после добавления AND запрос завершается с нулевым результатом.

$sql="SELECT writer_email FROM writerdata_tb WHERE writer_active = 1 AND pending = (SELECT MIN(pending) FROM writerdata_tb) LIMIT 1";

Как мне исправить этот код, чтобы выбрать ГДЕ, который удовлетворяет обоим?

writer_email  |  writer_active | pending
-------------   ---------------  --------
email1@mail            0            1
email2@mail            1            3
email3@mail            1            2

Запрос должен привести к email3@mail, потому что запись имеет наименьшее количество ожидающих и имеет активный, равный 1.

2 ответа

Решение

Попробуй это.

$sql="SELECT writer_email FROM writerdata_tb WHERE writer_active = 1 AND pending = (SELECT MIN(pending) FROM writerdata_tb WHERE writer_active = 1) LIMIT 1";

Это из-за вашей второй команды выбора он будет выбирать только минимальное значение независимо от значения writer_active

Это должно дать вам то, что вам нужно,

$sql="SELECT writer_email FROM writerdata_tb WHERE writer_active=1 AND pending = (SELECT MIN(pending) FROM writerdata_tb WHERE writer_active=1) LIMIT 1";

Ваш внутренний запрос выбора дает результат 1 для ожидания и так как нет записи, где writer_active=1 а также pending=1, вы получите ноль строк.

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