仅返回内部加入

时间:2017-09-08 23:51:14

标签: sql magento ssms

我在下面有这个查询,它有效。但是,运行需要30分钟。本质上,sku字段是唯一的,但它加入的表具有多个与entity_id对应的值。我只想返回它找到的第一个值。我明白我现在这样做的方式有效,但根本没有效率。任何提示将不胜感激。

很抱歉这个奇怪的代码示例。无法在代码选项下进行格式化。

谢谢!

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

1 个答案:

答案 0 :(得分: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