Asked Sep 24th, 2018 4:11 AM 206 0 3
  • 206 0 3
+2

Tìm ra số lớn nhất và không trùng trong db

Share
  • 206 0 3

Laravel Bài toán của mình như sau:
VD: Mỗi ngày 1 user sẽ đăng kí 1 số tùy chọn từ 1-10. Cuối ngày, tìm ra user có số lớn nhất và không trùng.
Bảng user_data:

ID Name Number
1 A 1
2 B 10
3 C 8
4 D 3
5 E 10
6 F 3

=> kết quả: user có ID = 3
Help me. Cảm ơn!

3 ANSWERS


Answered Sep 24th, 2018 9:25 AM
Accepted
+5
SELECT `id`,`name`,`number` FROM `user_data` GROUP BY `number` HAVING COUNT(`number`) = 1 ORDER BY `number` DESC LIMIT 1
Share
Answered Sep 24th, 2018 6:17 AM
+5
SELECT MAX(number) FROM `user_data` GROUP BY number HAVING COUNT(*) = 1;
Share
Vương Minh Thái @vuongthai95
Sep 24th, 2018 6:21 AM

lấy userID nữa em ei!

0
| Reply
Share
Answered Sep 24th, 2018 6:12 AM
+2

Theo mình nghĩ thì sẽ cần sử dụng câu truy vấn lồng nhau.

  • Trước hết sử dụng GroupBy 'number' để xem giá trị lớn nhất xuất hiện 1 lần.
SELECT MAX(number)
FROM user_data
GROUP BY number
HAVING COUNT(ID) = 1;
  • Sau đó select ra ID của user có number = max thôi.
SELECT ID
FROM user_data
WHERE number = (max);

Mong là có thể giúp được bạn!

Share
Sep 28th, 2018 2:45 AM

bạn thử: tim top 1 user ko có trong bảng tạm và đc sắp xếp theo cột Number ( tìm những user.id có count(user.id) > 1 nhóm lại theo user.number ) as bảng tạm bạn hạn chế dùng having, having ko có dùng index nên sẽ chậm á.

+1
| Reply
Share
Vương Minh Thái @vuongthai95
Sep 28th, 2018 3:01 AM

cảm ơn bạn đã góp ý

0
| Reply
Share