Есть ли способ добавить какой-либо оператор в таблицу или запрос, который будет использовать какое-то значение по умолчанию, для которого явно нет ограничений в предложении where?
ShortОтвет: Нет.
Исходя из того, что вы сказали здесь:
Например, так что если я не напишу a1 = "b" послегде
Я думаю, что вы можете часто выполнять этот запрос, возможно, даже вручную, и вы хотите передать некоторые другие значения.Если это действительно так, вы можете передать параметры и использовать некоторые переменные для обработки этого.
Что вы можете сделать, так это указать в выражении CASE
, что WHERE
поможет вам.Рассмотрим следующее:
SELECT *
FROM
table
WHERE
CASE
WHEN %s IS NOT NULL
THEN a1 = %s
ELSE a1 = 'b'
END
[AND/OR] <other constraints here>
Теперь синтаксис того, как вы на самом деле это делаете, будет зависеть от того, что вы на самом деле используете для выполнения ваших запросов.Они запускаются из программы Python?что-то в .net?и т. д.
Кроме того, вам не нужно строго придерживаться IS NOT NULL
, который я там использовал, у вас могут быть другие значения для других целей.На ваше усмотрение.
РЕДАКТИРОВАТЬ:
По мнению Шона в комментариях, если %s
, передаваемый аргумент, является NOT NULL
или легитимнымзначение, тогда ifnull()
будет более чистой альтернативой для этого оператора case.Пример ниже:
WHERE
a1 = ifnull(%s, 'b')