You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于SQL的高级查询:多条件组合筛选tblStudent表

实现指定筛选逻辑的SQL语句

直接硬编码条件的写法

如果筛选条件固定,可直接用IN运算符替代同类型的OR逻辑,再用AND连接不同类型的条件,SQL语句如下:

SELECT Id, Name, Age, PlaceOfBirthId, CityId
FROM tblStudent
WHERE PlaceOfBirthId IN (3, 8)
  AND CityId IN (56, 71);

说明:

  • PlaceOfBirthId IN (3, 8) 等价于 PlaceOfBirthId = 3 OR PlaceOfBirthId = 8,满足同类型筛选条件的OR规则;
  • 不同筛选类型(出生地ID和城市ID)之间用AND连接,确保同时满足两类条件;
  • 执行该语句后会返回预期的两条学生记录。

基于筛选表的动态写法(适用于筛选条件存储在数据表中的场景)

如果筛选条件存储在一张数据表(例如命名为tblFilters)中,可通过子查询关联实现动态筛选,无需硬编码值:

SELECT s.Id, s.Name, s.Age, s.PlaceOfBirthId, s.CityId
FROM tblStudent s
-- 关联出生地ID的筛选条件
JOIN (SELECT FilterValue FROM tblFilters WHERE FilterId = 1) f1
  ON s.PlaceOfBirthId = f1.FilterValue
-- 关联城市ID的筛选条件
JOIN (SELECT FilterValue FROM tblFilters WHERE FilterId = 2) f2
  ON s.CityId = f2.FilterValue
GROUP BY s.Id, s.Name, s.Age, s.PlaceOfBirthId, s.CityId;

说明:

  • 通过子查询分别提取两类筛选条件的值;
  • 使用JOIN确保学生记录同时匹配两类筛选条件;
  • GROUP BY用于避免同一学生因匹配多个同类型条件而出现重复记录。

内容的提问来源于stack exchange,提问作者misha co

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:42:13