mysql - 对 MySql 的 DLookUp 查询
问题描述
我正在将遗留的 MS 访问系统转换为 spring-boot 应用程序,我遇到了一个大查询。我主要完成了将函数从访问权限转换为 mysql 但无法理解如何将以下 DLookUp 子查询转换为 mySql 子查询
DLookUp("[price]","tbl_so","[so_id] = " & tbl_trade.so_id & " AND [product_id] = " & tbl_po.product_id
我的理解是以下不起作用,因为我没有在 3 个表之间设置内部连接tbl_so
,,,,tbl_po
tbl_trade
SELECT tbl_so.price FROM tbl_so WHERE tbl_so.so_id = tbl_trade.so_id AND tbl_so.product_id = tbl_po.product_id
我的问题是我如何知道在这种情况下表将如何相互连接,以及何时很少使用此 DLookUp 查询。还有这个查询的解决方案。
解决方案
好吧,作为一般规则,dlookup() 可以替换为左连接。但是,您也可以使用子查询,它们往往对查询进行“较少”的更改。
所以,如果我们有这个:
SELECT id, partNum, dlookup("PartDescrt","tblParts","PartID = " & partNum)
as Description from tblOrders.
您可以将上面的 dlookup() 替换为这样的子查询:
SELECT id, partNum,
(select PartDescrt from tblParts where tblParts.PartID = tblOrders.PartNum)
AS Description
from tblOrders
以上是 SQL 或访问 sql 语法,但很确定这同样适用于 MySQL。
如果有多个 partNumber 与上述匹配,则添加一个 TOP 1,以及带有一些唯一行的 order by(最好是 PK ID 列)。所以查询变为:
(select TOP 1 PartDescrt from tblParts where tblParts.PartID = tblOrders.PartNum
ORDER BY PartDescrt, ID DESC)
AS Description
推荐阅读
- python - 使用 PyDub 时出错:WAVE 格式不支持 pcm_s8 编解码器
- rust - understanding error: trait `futures::future::Future` is not implemented for `()`
- browser - 我应该使用电子的 webview 来模拟浏览器吗?
- android - Logcat --------- 系统开始
- sql-server - 如何解决 MS-Access 宏错误号 2001?
- reporting-services - SSRS(报告服务器)中的 DateDiff 函数给出错误?
- reactjs - 如何使用 Material-UI 构建全角超级菜单?
- mongodb - mongodb using results from a query as search criteria
- mysql - What will happen when "Update set a=a+1"?
- android - 如何选择txt文件并在变量中获取文本文档数据而不在React Native中上传?