Condicional na clausula where

Olá Pessoal, conto com a ajuda de voces para me ajudar a resolver esse problema:

Gostaria de ter a condição de listar todos os produtos se o usuário não informar o código ou apenas um produto individualmente caso o usuário informe o código.

SELECT *  FROM  produto WHERE  condição 

Desde já, agradeço.

Por que não cria duas queries separadas? Tem como fazer isso que você quer, mas fica “feio” e talvez seja ineficiente. Não sei se o query planner detecta que a comparação é desnecessária por causa do OR -1 = -1, quando ele acontece, e elimina o WHERE por completo (espero que isso aconteça). Assim:

 SELECT * FROM produto WHERE produto.id = id OR id = -1;

Quando o usuário não informar nada, você passa -1 pra query.

Faça assim:

SET @id = 1; // apenas para teste
SELECT * FROM tabela where @id is null OR id_tabela = @id;

Ao informar o ID, o select deverá retornar apenas o registro correspondente ao valor informado. Ao informar null para o ID e executar, deverá retornar todos os registros