“多层嵌套查询”在不同语境下含义不同,常见有 SQL 数据库嵌套子查询、JSON / 文档型数据嵌套查询、编程语言中的嵌套循环/函数查询。下面分别说明。
SELECT ...
FROM (
SELECT ...
FROM (
SELECT ...
FROM table
WHERE ...
) t1
WHERE ...
) t2
WHERE ...
SELECT dept_id, emp_name, salary
FROM (
SELECT dept_id, emp_name, salary,
RANK() OVER (PARTITION BY dept_id ORDER BY salary DESC) rk
FROM employee
) t1
WHERE rk = 1
AND salary > (
SELECT AVG(salary)
FROM employee
);
SELECT e1.emp_name
FROM employee e1
WHERE e1.salary > (
SELECT AVG(e2.salary)
FROM employee e2
WHERE e2.dept_id = (
SELECT dept_id
FROM department
WHERE dept_name = 'IT'
)
);
✅ 建议:
WITH dept_avg AS (
SELECT dept_id, AVG(salary) avg_sal
FROM employee
GROUP BY dept_id
)
SELECT *
FROM employee e
JOIN dept_avg d ON e.dept_id = d.dept_id
WHERE e.salary > d.avg_sal;
db.orders.find({
"customer.address.city": "Beijing",
"items.price": { $gt: 100 }
})
db.users.find({
"orders.items.product.tags": "sale"
})
data = {
"users": [
{"name": "Tom", "orders": [{"price": 200}, {"price": 50}]}
]
}
result = [
order["price"]
for user in data["users"]
for order in user["orders"]
if order["price"] > 100
]
你可以告诉我:
我可以给你完全贴合你场景的写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。