Chào mọi người,
Mình có 1 vấn đề thế này với MySQL: giả sử có 1 table order trong đó có các trường name, product tương ứng là tên người mua và sản phẩm mua, VD 1 vài giá trị như sau:
Code:
name product
1 A chuoi
2 B hoa
3 C banh
4 A tao
5 A xoai
6 B man
7 C xoai
8 B chuoi
Mình muốn lấy ra tên những người ko mua 'xoai' chẳng hạn (trong trường hợp trên là B). Mình thử làm với câu lệnh thế này:
Code:
SELECT name FROM order WHERE product!='xoai' GROUP BY name;
nhưng như thế A và C vẫn được lấy do A và C mua thứ khác, nghĩa là ngoài dòng 5 và 7 thì các dòng còn lại đều hợp lệ.
Mình có thử 1 cách khác như sau:
Code:
SELECT name FROM order WHERE name NOT IN (SELECT name FROM order WHERE product='xoai') GROUP BY name;
Cách này hoạt động đúng nhưng cách này load khá nặng khi số lượng record lớn. Mình muốn tìm 1 phương án tối ưu hơn, rất mong mọi người giúp đỡ. Xin cảm ơn rất nhiều.