выберите все строки, если параметр условия равен нулю

#mysql #select #conditional-statements #where

#mysql #выберите #условные операторы #где-предложение

Вопрос:

Все строки

 SELECT * FROM table
  

Одна строка

 SELECT * FROM table WHERE id = 3
  

Я хочу получить все строки, как я могу получить?

пример

 SELECT * FROM table WHERE id = 0
  

Комментарии:

1. Почему вы не можете использовать первый пример?

2. Вы можете получить все строки, используя первый запрос

3. Чего именно вы хотите достичь. Пожалуйста, уточните.

4. в процедуре, которую я буду использовать, если параметр равен нулю, я хочу получить все строки.

5. просто проверьте в процедуре, если параметр не равен нулю, затем добавьте условие where, иначе не добавляйте его.

Ответ №1:

Если вы хотите получить все строки с параметром 0, используйте это:

 SELECT * FROM table WHERE id = ? OR ? = 0;
  

Я надеюсь, что это то, что вы хотите.

Ответ №2:

Ваш вопрос немного неясен, но я предполагаю, что вы ищете способ выбрать все идентификаторы в случае, если данный параметр id равен нулю.

 SELECT * FROM mytable WHERE id = @id OR @id = 0;
  

Или с нулем вместо нуля:

 SELECT * FROM mytable WHERE id = @id OR @id IS NULL;
  

Комментарии:

1. IFNULL(id,3); может быть альтернативой?

2. No. id никогда не имеет значения null, так как это первичный ключ. (Или я неправильно понимаю дизайн вашей базы данных и ваш вопрос?) Я понимаю, что параметр @id может быть нулевым. Так WHERE id = @id OR @id IS NULL или с помощью IsNull: WHERE IFNULL(@id,id) = id .

Ответ №3:

Возможно:

 $query = 'SELECT * FROM table';

if (isset ($id)) {
  $query .= " WHERE id = $id";
}