Let's say I have the following row in my table
table rows
id 63 64 65 66 67 68
if I run the following query, I get 30 rows.
SELECT r1.id, r2,id
FROM rows AS r1
CROSS JOIN rows AS r2
WHERE r1.id!=r2.id
result:
63 64 65 64 66 64 67 64 68 64 64 63 65 63 66 63 67 63 68 63 63 65 64 65 66 65 67 65 68 65 63 66 64 66 65 66 67 66 68 66 63 67 64 67 65 67 66 67 68 67 63 68 64 68 65 68 66 68 67 68
how would I get the following result instead of the above?
63,64 63,65 63,66 63,67 63,68 64,65 64,66 64,67 64,68 65,66 65,67 65,68 66,67 66,68 67,68
as you see, I don't want to get both 63,64 and 64,63, for example.
Simple, only join with values higher than the current one.
select r1.id, r2,id
from rows r1
cross join rows r2
where r1.id < r2.id