SELECT *
FROM Food
WHERE (Name = 'Apple' AND <condition A>)
OR (Name = 'Biscuit' AND <condition B>)
OR (Name = 'Chocolate' AND <condition C>)
Теперь, будучи корректным, это нежелательно с точки зрения производительности, поскольку условия A, B и C не управляются данными (они не меняются от строки к строке).Таким образом, вы можете использовать перестановки всех возможных условий, динамически создавая SQL - используйте предложение IN и динамически создавайте его строку.
Еще одно решение - это сборка конечного результата в клиенте путем запуска каждого SELECT отдельно (псевдокод):
if A then {
result1 = execute("SELECT * FROM Food WHERE Name = 'Apple')
}
if B then {
result2 = execute("SELECT * FROM Food WHERE Name = 'Biscuit')
}
if C then {
result2 = execute("SELECT * FROM Food WHERE Name = 'Chocolate')
}
result = join(result1, result2, result3)
Это решение может работать, если у вас высокий процент случаев с одним или двумя истинными условиями.