有什么方法可以在子句Q中使用嵌套查询的结果where?
我正在寻找类似SQL陈述的东西.
select from food where type_id in (
select type_id from types where type_name = "fruit"
)
Run Code Online (Sandbox Code Playgroud) 我有一个表要使用另一个表的记录进行更新,我这样做是为了将信息从一个系统(数据库)带到另一个系统.情景有点复杂,但我迫切需要帮助:-s
有3个表- component,scan和stage_link
零件
component_id stage_id
------------ --------
1 NULL
2 NULL
3 NULL
4 NULL
5 NULL
Run Code Online (Sandbox Code Playgroud)
扫描
scan_id component_id scanner_id date_scanned
------- ------------ ---------- -----------------------
1 1 scanner_a 2012-01-01 07:25:15.125
2 1 scanner_b 2012-01-02 08:14:05.456
3 2 scanner_a 2012-01-01 12:05:45.465
4 3 scanner_a 2012-01-01 19:45:12.536
5 1 scanner_c 2012-01-03 23:33:54.243
6 2 scanner_b 2012-01-02 11:59:12.545
Run Code Online (Sandbox Code Playgroud)
stage_link
stage_link_id scanner_id stage_id
------- ---------- ----------
1 scanner_a 1
2 scanner_b 1
3 scanner_c 2
4 scanner_d …Run Code Online (Sandbox Code Playgroud) 我要做的是以下内容:我有一个包含多位作者的表SingleAuthor.该表有时不止一次包含同一作者.我想要做的是更新表并添加作者特定的号码.例如:
sat_name - > sat_rowNumber
弗雷迪 - > 1
作者2 - > 2
弗雷迪 - > 1
AnotherOne - > 3
我已经有了查询给我这个结果:
SELECT ROW_NUMBER() OVER( ORDER BY sat_name),
sat_name
FROM SingleAuthor
GROUP BY sat_name
但问题是,我想在sat_rowNumber列中插入此数据.我带着这个问题来到这里:
UPDATE SingleAuthor SET sat_rowNumber = ( SELECT newTable.numb
FROM(
SELECT ROW_NUMBER() OVER( ORDER BY sat_name) as numb, sat_name
FROM SingleAuthor
GROUP BY sat_name) AS newTable
WHERE newTable.sat_name =) -- the current row in the to be updated table
Run Code Online (Sandbox Code Playgroud)
我想要做的就是更新SingleAuthor表的 …
SELECT `e`.`id`, `e`.`title`, `e`.`description`, `e`.`event_time`,(SELECT GROUP_CONCAT( name SEPARATOR " | " )
FROM `ar_products`
WHERE id IN **(e.products)** AS products FROM events e;
Run Code Online (Sandbox Code Playgroud)
我在事件表中列出了包含列名产品的逗号分隔产品ID.如果我使用值54,33,23 ..它显示正确的值,如产品列表[product1 | product2 | ..].
当我在IN CLAUSE中直接使用列名时,它无法正常工作.
我有三个表,即员工、部门和申诉。员工表有超过一百万条记录。我需要找到该员工的详细信息、他/她的部门以及他/她提出的申诉。
我可以想到以下两个查询来查找结果:
1、先过滤记录,只得到需要数据的员工的记录:
SELECT * FROM (SELECT * FROM Employees WHERE EmployeeID= @EmployeeID) Emp
LEFT JOIN Department Dpt ON Emp.EmployeeID= Dpt.EmployeeID
LEFT JOIN Grievance Grv ON Emp.EmployeeID= Grv.EmployeeID;
Run Code Online (Sandbox Code Playgroud)
2.先加入:
SELECT * FROM Employees Emp
LEFT JOIN Department Dpt ON Emp.EmployeeID= Dpt.EmployeeID
LEFT JOIN Grievance Grv ON Emp.EmployeeID= Grv.EmployeeID
WHERE EmployeeID= @EmployeeID);
Run Code Online (Sandbox Code Playgroud)
如果我们考虑以 FROM>INNER JOIN>OUTER JOIN>WHERE>....SELECT 开头的 SQL 逻辑处理顺序,第一个查询应该执行得更好/更快,因为内部查询中只有一条记录并且将被连接与进一步的表。然而,在执行这两个查询时,我没有发现任何性能差异,并且两个查询花费的时间几乎相同。
您能检查一下并让我知道我的想法错在哪里吗?
inner-query ×5
sql ×4
sql-server ×2
sql-update ×2
clause ×1
join ×1
kdb ×1
left-join ×1
mysql ×1
row-number ×1
where ×1