Duplicate source rows still participate in the product.

highlighted = computed this step

Duplicates still multiply

CROSS JOIN does not deduplicate input rows before pairing.

duplicates remain\text{duplicates remain}

Read duplicate product

2 left rows, including duplicates, pair with 2 right rows to make 4 output rows.

duplicate rows multiply\text{duplicate rows multiply}

CROSS JOIN examples are tiny finite-table transforms; SQL dialect completeness, type coercion, optimizer behavior, execution cost, indexing, and database-product claims are out of scope.

Duplicate input rows still multiply: left tableskuitem1pen1pen Duplicate input rows still multiply: right tablestorenorthsouth pair gridleftSourcerightSourceleftValuesrightValuesoutput00[1, pen][north][1, pen, north]01[1, pen][south][1, pen, south]10[1, pen][north][1, pen, north]11[1, pen][south][1, pen, south] CROSS JOIN output rowsleft.skuleft.itemright.store1pennorth1pensouth1pennorth1pensouth CROSS JOIN factsfactvalueleftRowCount2rightRowCount2pairCount4outputRowCount4outputColumnCount3rowOrderleft_source_then_right_sourceemptySideProductno

Bag-style inputs

The two identical left rows are separate source rows in this finite model.

separate source rows\text{separate source rows}

Summary

Duplicate rows still contribute to the product count.

no implicit DISTINCT\text{no implicit DISTINCT}