Вывод с подзапросом на основе условий в MySQL
Ниже мой запрос:
выберите c1, c2, c3, c4, c5 из таблицы1, где c1 = 0// Условие 1
AND c2 = "abc"// Условие 2
AND c3 = "xxx"// Условие 3
И с4 = 5// Условие 4
Здесь, поскольку мы знаем, что условие 2 будет применено к данным результата, заданным условием 1, условие 3 будет применено к данным результата, заданным условием 2 и 1, и аналогично будет применено условие 4...
Я хочу запрос, который будет выполняться в дальнейшем, если какое-либо условие между ними терпит неудачу.
Означает, что если условие 3 не даст результата (или набора результатов с нулевым значением), то мое условие 4 будет применено к нулевому набору результатов, так что вызывающий окончательный вывод будет нулевым, но я хочу, чтобы условие 3 не дало результата (или набора с нулевым результатом), тогда условие 4 "Должно быть применено" к возврату набора результатов по условиям 2 и 1.
Здесь я не могу изменить последовательность условий из-за проблем с производительностью.
Пожалуйста, направьте меня с вопросом.
3 ответа
У меня есть одно простое решение для этого, и оно работает в моем сценарии. Также я могу сократить время выполнения запроса на моих больших данных. Вызывающе будут выполнены два запроса, но я нахожу это правильное решение.
Я использовал простой союзный запрос.
выберите c1, c2, c3, c4, c5 из таблицы1, где c1 = 0// Условие 1
AND c2 = "abc"// Условие 2
AND c3 = "xxx"// Условие 3
И с4 = 5// Условие 4
UNION
выберите c1, c2, c3, c4, c5 из таблицы1, где c1 = 0 // Условие 1
AND c2 = "abc"// Условие 2
И с4 = 5// Условие 4
Если у кого-то есть более точное и правильное решение. Пожалуйста, отправьте это.
Попробуй это
select c1, c2, c3, c4, c5 from table1 where (c1 =0) or (c2="abc") or (c3="xxx") or (c4 = 5)
Насколько я вижу, вы хотите, чтобы условие 3 было необязательным. Это может быть сделано, но вряд ли будет эффективным решением:
Select c1, c2, c3, c4, c5
From table1
Where c1 = 0
AND c2 = "abc"
AND (c3 = "xxx"
OR NOT Exists (Select '*' From table1 Where c1 = 0 AND c2 = "abc" AND c3 = "xxx")
)
AND c4 = 5
Лучшим подходом может быть использование временной таблицы, отфильтрованной по условиям 1 и 2 с дальнейшей логикой, примененной к этому подмножеству данных.