查询Uttar Pradesh与Haryana城市记录无结果的技术求助
解决无法获取指定州对应城市记录的方法
- 修正表名拼写错误:你的SQL子查询里写的是
from states,但实际表名是state,这是最可能的问题。修正后的SQL如下:
select * from city where stateid in ( select stateid from state where statename in ('uttar pradesh','haryana') )
处理大小写匹配问题:如果数据库区分大小写,而
state表中statename存储的是首字母大写的Uttar Pradesh、Haryana,用全小写查询会匹配失败。可以用不区分大小写的写法:- MySQL/MariaDB:
where lower(statename) in ('uttar pradesh','haryana') - PostgreSQL:
where statename ilike any(array['uttar pradesh','haryana']) - SQL Server:
where lower(statename) in ('uttar pradesh','haryana')
- MySQL/MariaDB:
验证子查询有效性:先单独执行子查询
select stateid from state where statename in ('uttar pradesh','haryana'),确认是否能返回对应的stateid。如果无结果,说明state表里没有这两个州的记录,或者名称存在拼写/格式差异(比如多空格、缩写)。检查关联字段类型一致性:确认
city表的stateid和state表的stateid数据类型完全一致(比如都是INT或VARCHAR),类型不匹配会导致关联失败。改用JOIN查询替代IN子句:部分场景下IN子句可能因执行计划问题异常,换成JOIN写法试试:
select c.* from city c inner join state s on c.stateid = s.stateid where s.statename in ('uttar pradesh','haryana')
内容的提问来源于stack exchange,提问作者Chelsea jain
相关产品推荐
相关产品推荐

