【发布时间】:2020-08-17 02:43:09
【问题描述】:
我想通过每个组 (productToken) 的 MAX(ID) 来从所有连接的表中检索一个包含最新行的大型产品表,该组具有唯一的产品名称。连接表是 - 产品(商店)、可用性(状态)、描述(产品)和产品价格。所有这些都包含唯一的 productToken 并且可以通过添加新记录(独立地)随着时间的推移更改提到的表,所以我的目标是通过从每个表中检索最新记录来组成一个大表(包含有关产品的实际信息)。我的代码是这样的。第一个添加的产品运行良好,但是在向任何表添加新记录后事情变得奇怪了(查询没有检索到结果)。
SELECT *
FROM products
JOIN productsStore ON products.productToken = productStore.productToken
JOIN productsStatus ON products.productToken = productsStatus.productToken
JOIN productsPrice ON products.produstToken = productsPrice.productToken
JOIN categories ON products.categoryToken = categories.categoryToken
WHERE products.shopToken = '$shopToken'
AND products.productID IN
(SELECT MAX(productID)
FROM products
GROUP BY productToken)
AND productsPrice.productPriceID IN
(SELECT MAX(productPriceID)
FROM productsPrice
GROUP BY produktToken)
AND productsStatus.productStatusID IN
(SELECT MAX(productStatusID)
FROM productsStatus
GROUP BY productToken)
AND produktyStore.productStoreID IN
(SELECT MAX(productStoreID)
FROM productsStore
GROUP BY productToken)
AND categories.categoryID IN
(SELECT MAX(categoryID)
FROM categories
GROUP BY categoryToken)
ORDER BY categories.categoryID DESC
【问题讨论】:
-
更新您的问题添加适当的数据样本和预期结果
-
你运行的是哪个版本的 MySQL?
-
@Rudi:您最新的编辑使原始查询绝对不可读。我把它滚了回来。随意再次继续,但不要删除查询,否则您的问题将变得无法理解和回答。
-
@GMB 实际上是 10.3.21-MariaDB
-
@Rudi:好的-所以我的回答中使用
row_number()的第二个查询也应该有效。
标签: sql database join mariadb greatest-n-per-group