SQL查询exampackage表仅返回单科目结果,如何获取全医学套餐数据?
解决SQL查询仅返回单个科室套餐的问题
你的SQL查询条件太局限啦,所以只拿到了神经科相关的套餐。咱们来调整一下,让它返回你需要的所有医学相关套餐:
原查询的问题
你原来的语句里用了 ptype like '%neurology%',这个条件会只筛选包含"neurology"关键词的套餐,自然就把心脏科的那些套餐排除在外了。
修改后的SQL语句
我们需要把科室匹配的条件放宽,同时覆盖心脏科和神经科:
SELECT * FROM exampackage WHERE pname = 'medical' AND (ptype LIKE '%Cardiology%' OR ptype LIKE '%Neurology%') ORDER BY pprice ASC;
如果你的数据库支持正则表达式(比如MySQL、PostgreSQL),还可以用更简洁的写法:
-- MySQL 写法 SELECT * FROM exampackage WHERE pname = 'medical' AND ptype REGEXP 'Cardiology|Neurology' ORDER BY pprice ASC; -- PostgreSQL 写法 SELECT * FROM exampackage WHERE pname = 'medical' AND ptype ~* 'Cardiology|Neurology' ORDER BY pprice ASC;
效果说明
- 用括号把多个
LIKE条件包起来,确保逻辑和pname='medical'的条件组合正确 - 调整后,查询会匹配所有
pname为"medical",且ptype包含"Cardiology"或"Neurology"的套餐,正好覆盖你提到的四个医学套餐:- Free Cardiology Pack(2 Papers Accessible-1 Internal Medicine + 1 Cardiology)
- Cardiology Mini Pack (20 Papers) - 2900 RS
- Cardiology Mega Pack (43 Papers) - 4900 RS
- Free Neurology Pack (2 Papers Accessible-1 Internal Medicine + 1 Neurology...)
内容的提问来源于stack exchange,提问作者Supriya Pote
相关产品推荐
相关产品推荐

