最近我的存储过程出现问题,工作速度太慢,所以我的一位同事建议交叉应用,他说交叉应用工作作为内连接,但不需要表之间的comman键。 / p>
我的senario是我有三个表crossarticle_article
和crossarticle_articletocategory
以及crossarticle_article
现在我想要检索categoryid
为4,categoryid
存储在crossarticle_articletocategory
据我所知,我创建了以下查询:
SELECT *
FROM crossarticle_article c
CROSS APPLY
crossarticle_articletocategory cc1
CROSS APPLY
crossarticle_category cc2
WHERE cc2.id = 1
此查询应仅返回类别ID与1匹配的crossarticle_article
的记录
但它返回所有3个表中的所有记录。
我错了, 如果这不是使用交叉应用的方式,那么如何使用,以及它的优势。
交叉应用是否适用于相同的表格...如果是,那么情景可能......
答案 0 :(得分:1)
假设id是所有表中的关键字段,则Query应为:
SELECT c.*,
c1.colXXX,
c2.colYYY --ALL columns u need
FROM crossarticle_article c
CROSS APPLY(
SELECT cc1.colXXX
FROM crossarticle_articletocategory cc1
WHERE cc1.id = c.id
) c1
CROSS APPLY(
SELECT cc2.colYYY
FROM crossarticle_category cc2
WHERE cc2.id = c.id
) c2
WHERE c.id = 4