Wikipedia:
"Trong toán học, một phép toán nhị phân có tính chất giao hoán nếu việc thay đổi thứ tự của các toán hạng không làm thay đổi kết quả. Đây là tính chất cơ bản của nhiều phép toán nhị phân và nhiều phép chứng minh toán học phụ thuộc vào nó."
Trả lời:
không, phép nối bên trái không có tính chất giao hoán. Và tham gia bên trong là.
Nhưng đó không thực sự là những gì bạn đang hỏi.
Là truy vấn sau:
TableA INNER JOIN TableB LEFT JOIN TableC LEFT JOIN TableD
(tất cả được nối vào một cột id) tương đương với:
TableA INNER JOIN TableB
INNER JOIN TableC
LEFT JOIN TableD
UNION
TableA INNER JOIN TableB
LEFT JOIN TableC ON TableB.c_id IS NULL
LEFT JOIN TableD
Trả lời:
Cũng không. Nói chung, các đoàn thể và sự tham gia không thực sự hoàn thành cùng một thứ. Trong một số trường hợp, bạn có thể viết chúng một cách tương đương, nhưng tôi không nghĩ rằng bạn đang thể hiện một sql giả chung chung như vậy. Hiến pháp BẬT có vẻ như nó không hoạt động (có thể điều gì đó mà tôi không biết trong MySQL?)
Đây là một tập hợp các truy vấn được đơn giản hóa mà tôi nghĩ là tương đương.
SELECT *
FROM TableA a
LEFT JOIN
TableB b ON a.id = b.id_a
SELECT *
FROM TableA a
INNER JOIN
TableB b ON a.id = b.id_a
UNION
SELECT *
FROM TableA a
LEFT JOIN
TableB b ON a.id = b.id_a
WHERE TableB.id IS NULL
Chỉnh sửa 2:
Đây là một ví dụ khác gần giống với của bạn hơn nhưng về bản chất thì giống nhau.
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
LEFT JOIN TableC c ON b.id = c.id_b
giống như
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
INNER JOIN TableC c ON b.id = c.id_b
UNION
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
LEFT JOIN TableC c ON b.id = c.id_b
WHERE TableC.id IS NULL
Nhưng tôi vẫn vẫn đừng nghĩ rằng tôi đang trả lời câu hỏi thực sự của bạn.