выполнить запрос, если значение в последней строке является правильным

Если вы установили как Wampmanager, так и боковую стопу Bitnami на ваш Windows-бокс (например, я сделал), убедитесь, что Bitnami не был настроен автоматически запускать свои службы wampstackApache и wampstackMySQL при запуске.

Чтобы проверить / исправить это, нажмите: Пуск -> Выполнить, а затем введите services.msc и нажмите «ОК».

Выберите Службы в списке слева и выполните сортировку служб по имени. Выделите «w». Если службы wampstackApache и / или wampstackMySQL уже запущены, щелкните правой кнопкой мыши и остановите оба. Затем перезапустите все службы из значка Wampmanager W в лотке служб Windows.

Если это была ваша проблема, вы можете изменить поведение запуска по умолчанию на ручной запуск wampstackApache и wampstackMySQL на вкладках «Свойства».

0
задан No666 16 January 2019 в 17:43
поделиться

2 ответа

Это зависит от вашего запроса.

INSERT ...
    SELECT ... WHERE ...  -- this could lead to zero rows being inserted

DELETE ...
    WHERE NOT EXISTS ( SELECT ... )  -- this could lead to zero rows being deleted

UPDATE t1 JOIN t2 ...  -- the JOIN may cause no rows to be updated

Примечание:

(Select a.* from table as a order by a.index desc limit 1) as b
    where b.ColumnA = 1)) > 0 )

можно упростить (и ускорить) до

( ( SELECT ColumnA FROM table ORDER BY index DESC LIMIT 1 ) = 1 )

Обратите внимание, что это «истинное / ложное« выражение », поэтому оно может использоваться в разных местах.

0
ответ дан Rick James 16 January 2019 в 17:43
поделиться

Я думаю, что мы можем перефразировать вашу логику здесь, чтобы она работала так, как вы хотите:

WITH cte AS (
    SELECT ColumnA, ROW_NUMBER() OVER (ORDER BY index DESC) rn
    FROM yourTable
)

(your query here)
WHERE (SELECT ColumnA FROM cte WHERE rn = 1) = 1;

Приведенное выше предложение WHERE вернет либо true, либо false, и будет применяться ко всем записям в потенциальной набор результатов из вашего запроса. То есть, если бы значение ColumnA из «последней» записи было равно 1, вы бы вернули весь набор результатов, в противном случае это был бы пустой набор.

Предполагая, что ваша версия MariaDB не поддерживает ни ROW_NUMBER, ни CTE, используйте:

(your query here)
WHERE (SELECT ColumnA FROM yourTable ORDER BY index DESC LIMIT 1) = 1;
0
ответ дан Tim Biegeleisen 16 January 2019 в 17:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: