【发布时间】:2017-12-06 21:32:32
【问题描述】:
我的 php 脚本中有一个查询没有返回所需的数据。查询是
select distinct require_category from users_require
返回:
Diet
Experience
MeasurementsGain
MeasurementsLoss
MeasurementsMaintain
WeightGain
WeightLoss
WeightMaintain
Workout
但我只想要
Diet
Experience
MeasurementsGain
WeightGain
Workout
我已经改进了我的 mysql 查询并返回了正确的结果,但我认为它的效率不够:
select distinct require_category from users_require where require_category NOT LIKE '%Weight%' and require_category NOT LIKE '%Measurements%' union select distinct require_category from users_require where require_category = 'WeightGain' or require_category = 'MeasurementsGain'
【问题讨论】:
-
问题是:您希望根据什么规则在结果中包含或排除类别?看起来您可能想要排除包含单词
'Loss'和'Maintain'的类别。另一个可能的规则是require_category in ('Diet', 'Experience', 'MeasurementsGain', 'WeightGain', 'Workout')。但只有您可以定义您实际想要应用的规则。 -
@ThorstenKettner 在我的脚本中我将传递两个变量来定义要包含的内容,即 $weight = 'WeightGain' 和 $measurements = 'MeasurementsGain'
-
那么为什么你的结果包含
'Diet'呢?它与两个字符串都不匹配。请仔细考虑规则。最简单的方法可能是查看每个单独的类别,并说明为什么它在结果集中或不在结果集中。
标签: mysql database select distinct union