Return 仅与 Inner Join 首次匹配
Return only first match with Inner Join
我在下面有这个查询,它有效。但是,运行 需要 30 多分钟。本质上,sku 字段是唯一的,但它所连接的表具有多个对应于 entity_id 的值。我只想 return 它找到的第一个值。我知道我现在这样做的方式有效,但它根本没有效率。任何提示将不胜感激。
抱歉出现奇怪的代码示例。无法在代码选项下格式化。
谢谢!
SELECT
FROM
(
SELECT DISTINCT substring(sku, 1,
(
SELECT CASE
WHEN charindex('-', sku)-1 = -1
THEN 0
ELSE charindex('-', sku)-1
END
)) AS sku,
CAST(cpet.value AS varchar(max)) AS 'DESCRIPTION', cpev.value AS 'URL_KEY', CONCAT('https://azureedge.net/catalog/product', cpemg.value) AS 'image', ROW_NUMBER() OVER(PARTITION BY sku ORDER BY sku) AS RowNumber
FROM imp_mg.CATALOG_Product_Entity cpe
INNER JOIN
imp_mg.CATALOG_Product_Entity_Text cpet
ON cpe.entity_id = cpet.entity_id
INNER JOIN
imp_mg.CATALOG_Product_Entity_Varchar cpev
ON cpe.entity_id = cpev.entity_id
INNER JOIN
imp_mg.CATALOG_Product_Entity_Media_Gallery cpemg
ON cpe.entity_id = cpemg.entity_id
) AS a
WHERE a.RowNumber = 1
试试这个
SELECT top 1 substring(sku, 1,
(
SELECT CASE
WHEN charindex('-', sku)-1 = -1
THEN 0
ELSE charindex('-', sku)-1
END
)) AS sku,
CAST(cpet.value AS varchar(max)) AS 'DESCRIPTION', cpev.value AS 'URL_KEY', CONCAT('https://azureedge.net/catalog/product', cpemg.value) AS 'image', ROW_NUMBER() OVER(PARTITION BY sku ORDER BY sku) AS RowNumber
FROM imp_mg.CATALOG_Product_Entity cpe
INNER JOIN
imp_mg.CATALOG_Product_Entity_Text cpet
ON cpe.entity_id = cpet.entity_id
INNER JOIN
imp_mg.CATALOG_Product_Entity_Varchar cpev
ON cpe.entity_id = cpev.entity_id
INNER JOIN
imp_mg.CATALOG_Product_Entity_Media_Gallery cpemg
ON cpe.entity_id = cpemg.entity_id
ORDER BY sku
我在下面有这个查询,它有效。但是,运行 需要 30 多分钟。本质上,sku 字段是唯一的,但它所连接的表具有多个对应于 entity_id 的值。我只想 return 它找到的第一个值。我知道我现在这样做的方式有效,但它根本没有效率。任何提示将不胜感激。
抱歉出现奇怪的代码示例。无法在代码选项下格式化。
谢谢!
SELECT
FROM
(
SELECT DISTINCT substring(sku, 1,
(
SELECT CASE
WHEN charindex('-', sku)-1 = -1
THEN 0
ELSE charindex('-', sku)-1
END
)) AS sku,
CAST(cpet.value AS varchar(max)) AS 'DESCRIPTION', cpev.value AS 'URL_KEY', CONCAT('https://azureedge.net/catalog/product', cpemg.value) AS 'image', ROW_NUMBER() OVER(PARTITION BY sku ORDER BY sku) AS RowNumber
FROM imp_mg.CATALOG_Product_Entity cpe
INNER JOIN
imp_mg.CATALOG_Product_Entity_Text cpet
ON cpe.entity_id = cpet.entity_id
INNER JOIN
imp_mg.CATALOG_Product_Entity_Varchar cpev
ON cpe.entity_id = cpev.entity_id
INNER JOIN
imp_mg.CATALOG_Product_Entity_Media_Gallery cpemg
ON cpe.entity_id = cpemg.entity_id
) AS a
WHERE a.RowNumber = 1
试试这个
SELECT top 1 substring(sku, 1,
(
SELECT CASE
WHEN charindex('-', sku)-1 = -1
THEN 0
ELSE charindex('-', sku)-1
END
)) AS sku,
CAST(cpet.value AS varchar(max)) AS 'DESCRIPTION', cpev.value AS 'URL_KEY', CONCAT('https://azureedge.net/catalog/product', cpemg.value) AS 'image', ROW_NUMBER() OVER(PARTITION BY sku ORDER BY sku) AS RowNumber
FROM imp_mg.CATALOG_Product_Entity cpe
INNER JOIN
imp_mg.CATALOG_Product_Entity_Text cpet
ON cpe.entity_id = cpet.entity_id
INNER JOIN
imp_mg.CATALOG_Product_Entity_Varchar cpev
ON cpe.entity_id = cpev.entity_id
INNER JOIN
imp_mg.CATALOG_Product_Entity_Media_Gallery cpemg
ON cpe.entity_id = cpemg.entity_id
ORDER BY sku