Tôi muốn chạy một SQL kiểu truyền thống còn lại tham gia vào KDB +/Q.Làm cách nào để thực hiện phép nối trái hiệu quả trong kdb?
- Chúng tôi nhận được ít nhất một dòng trong kết quả cho mỗi dòng trong trái bảng.
- Nếu có nhiều hơn một trận đấu ở bảng bên phải, tôi nhận được một hàng cho mỗi người, không chỉ cho trận đấu đầu tiên
dữ liệu thử nghiệm
x:([];a:1 1 2 3; b:3 4 5 6)
y:([]; a:1 2 2 4; c:7 8 9 10)
tốt nhất phiên bản tôi có thể nghĩ ra như sau:
Điều này nối thêm một phép nối trái chỉ cung cấp kết quả khớp đầu tiên cho phép nối bên trong cung cấp tất cả các kết quả phù hợp và sau đó loại bỏ các bản sao:
distinct ej[`a; x; y] , x lj `a xkey y
Có ai có thể cung cấp cho tôi một cái nhanh hơn và/hoặc tốt hơn trong một số cách khác không? Tôi thực sự muốn tránh việc sử dụng riêng biệt, ví dụ.
Wow, cảm ơn! Connor, tôi chưa đọc k. ** Bạn có thể giải thích những gì bạn đã làm không? ** Cảm ơn bạn một lần nữa! – JSLover
Đây là triển khai q. 'q) nhóm: {$ [count x: 0!x;,/[lật từng x], trước tiên,/[x]; x]} ' –
@Connor Gervin: giải pháp của bạn cho kết quả sai cho ví dụ: 'x: ([] a: 1 1 2 3 4; b: 3 4 5 6 100)' –