Nếu đây chỉ là về việc xử lý (B, A)
dưới dạng bản sao của (A, B)
và bạn không đặc biệt quan tâm xem hàng được trả về có phải là (A, B)
hay không hoặc (B, A)
, bạn có thể làm điều gì đó như sau:
SELECT DISTINCT
CASE WHEN BUG_ID > LINKED_BUG_ID THEN LINKED_BUG_ID ELSE BUG_ID AS BUG_ID,
CASE WHEN BUG_ID > LINKED_BUG_ID THEN BUG_ID ELSE LINKED_BUG_ID AS LINKED_BUG_ID
FROM MY_BUG_LINKS;
Đó là, nếu BUG_ID
có giá trị lớn hơn LINKED_BIG_ID
, truy vấn hoán đổi hai ID, nếu không, các giá trị được trả về không thay đổi. Do đó, (A, B)
và (B, A)
luôn tạo ra các hàng trùng lặp (cả hai sẽ là (A, B)
hoặc (B, A)
) và DISTINCT
đảm bảo không có kết quả cuối cùng.