如何将两个SQL查询操作合并为单一查询?
合并SQL操作的解决方案
可以通过自连接或者子查询将两个操作合并为一个SQL语句,这里推荐自连接的方式,逻辑更直观且性能通常更优:
SELECT DISTINCT t2.ID FROM TABLE_A t1 JOIN TABLE_A t2 ON t1.ID_Groups = t2.ID_Groups AND t2.Weight <= t1.Weight WHERE t1.ID_Rights IN (9, 11);
逻辑说明:
t1作为基准表,筛选出用户拥有的权限(ID_Rights=9、11)对应的组和权重- 通过
JOIN关联同一张表t2,匹配相同ID_Groups且t2.Weight小于等于t1.Weight的记录 - 用
DISTINCT去重,避免同一个ID被多次匹配到(比如不同基准记录可能指向同一个符合条件的ID)
结果验证:
这个查询会直接返回你需要的ID集合(2,3,5),和之前两步操作的结果一致。
如果你的SQL方言支持CTE(公共表表达式),也可以用更易读的写法:
WITH user_groups AS ( SELECT ID_Groups, Weight FROM TABLE_A WHERE ID_Rights IN (9, 11) ) SELECT DISTINCT t.ID FROM TABLE_A t JOIN user_groups ug ON t.ID_Groups = ug.ID_Groups AND t.Weight <= ug.Weight;
内容的提问来源于stack exchange,提问作者user11170972
相关产品推荐
相关产品推荐

