Как установить условия WHERE, если функция IF () возвращает запрос FALSE и END, если он возвращает TRUE в mysql

Я хочу использовать mysql, чтобы проверить, существует ли значение в базе данных MySQL. Если значение существует, я ничего не хочу делать (я не хочу получать какие-либо данные). Если его нет, то я хочу установить некоторые условия where.

Так что это то, что у меня есть, но это неправильно. потому что я все еще получаю данные, если не установлен whereусловие

SELECT *,
CASE
WHEN ( table_name.record = 'inputrecord')
THEN
    //Do nothing because it is found already
ELSE 
    // since inputrecord does not exist, we will start looking for 'id'
    ( WHERE table_name.id = '123')
END                 
FROM table_name

ПРИМЕЧАНИЕ: В приведенном выше примере я написал WHEN ( table_name.record = 'inputrecord')и нетWHEN ( table_name.record != 'inputrecord'). Это потому, что я хочу продолжить запрос только в том случае, если данных нет в таблице.

Возможно, лучше использовать IFфункция с EXISTSфункция, но я не уверен, как это сделать.

Любая помощь была бы замечательной. Прямо сейчас у меня ошибки

🤔 А знаете ли вы, что...
PHP можно использовать для работы с XML-документами.


1
253
3

Ответы:

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

SELECT *
CASE
 WHEN table_name.record = 'inputrecord' THEN 'Unspecified'
 WHEN table_name.id = '123' THEN 'table by id'
END
FROM table_name;

 select * 
 from table_name 
 where case when table_name.record <> 'inputrecord' 
               then table_name.id = '123' 
               else 1=1 
       end 

вы можете применить данное условие в своем коде

  1. если условие ввода не совпадает, примените условие фильтрации.

  2. при совпадении условий ввода (в противном случае) получите желаемый результат.


Решено

SQL работает не так.

SQL всегда возвращает набор строк. Он может быть пустым, иногда строки могут содержать NULL. Вы должны разработать свои условия для фильтрации коллекции.

Общий пример: скажем, у нас есть таблица автомобилей со столбцами (модель, цвет, год), и вы хотите найти что-нибудь об автомобилях в своей таблице:

(* Find all red cars *)
select * from cars where color = 'red'

(* Find all red cars from 1985 *)
select * from cars where color = 'red' and year = 1985

(* Find all colors which exist both in 1990 and 2000 *)
select distinct color from cars A where year=1990 and exists (select 1 from cars B where year=2000 and B.color = A.color) 

Скажите, пожалуйста, чего именно вы пытаетесь достичь

Обновлено: это должно сделать это

(* select a record cars = 'Audi' only if cars = 'BMW' is not found in the whole table. otherwise. I do not want to select Audi even if it exists *)

select * from cars where model = 'Audi' and not exists (select 1 from cars where model = 'BMW')

здесь, ЕСЛИ в вашей таблице есть BMW, вы получите 0 строк, в противном случае список Audis