为问题标题道歉,如果有人能够更好地解释它,请编辑。 我有一个MySQL select语句(我正在通过Perl dbi运行),如下所示:
select skills from my_table where (skills like '%maths%' or skills like '%english%');
这会运行,但它会选择“数学”或“英语”等技能。 我想拥有它所以它肯定会发现'数学',如果有意义的话可能会发现'英语'。
我认为有点像你有and
,它只返回带有这些元素的结果。所以,如果我做了:
select skills from my_table where (skills like '%maths%' and skills like '%english%');
它会以两种技能返回结果。
所以我想要的是两个sqls的组合,如果可能的话,'maths'是一个明确的发现,'english'是可选的。我希望我已经正确地解释了这一点......任何帮助表示赞赏!
编辑:好吧,也许我需要澄清......如果有'英语'的选项我希望它被找到,但如果没有,我希望它仍然选择'数学'的选项,但如果没有'数学'选项,那么我希望它什么也不返回。所以它不只是一个或另一个。
答案 0 :(得分:1)
I would like to have it so it definitely finds 'maths', and maybe finds 'english' if that makes sense.
如果有意义,你的意思是什么。
我认为您只需要执行以下操作
select skills from my_table where (skills like '%maths%')
答案 1 :(得分:1)
但如果'英语是可选的',你可以简单地删除它:
select skills
from my_table
where skills like '%maths%'
答案 2 :(得分:1)
这将返回具有数学技能的所有行的keyField
,以及显示他们是否也具备英语技能的附加列。
select keyField,
'Maths' mathsSkill,
CASE WHEN skills LIKE '%english%' THEN 'English' else 'No English' END englishSkill
from my_table
where skills like '%maths%'
答案 3 :(得分:0)
试试
select skills from my_table where skills like '%maths%';
这将给出带数学的记录..由于英语是可选的,你不需要提供它