Yêu cầu thg 9 24, 2018 4:11 SA 252 0 3
  • 252 0 3
+2

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

Chia sẻ
  • 252 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 CÂU TRẢ LỜI


Đã trả lời thg 9 24, 2018 9:25 SA
Đã được chấp nhận
+5
SELECT `id`,`name`,`number` FROM `user_data` GROUP BY `number` HAVING COUNT(`number`) = 1 ORDER BY `number` DESC LIMIT 1
Chia sẻ
Đã trả lời thg 9 24, 2018 6:17 SA
+5
SELECT MAX(number) FROM `user_data` GROUP BY number HAVING COUNT(*) = 1;
Chia sẻ
thg 9 24, 2018 6:21 SA

lấy userID nữa em ei!

Đã trả lời thg 9 24, 2018 6:12 SA
+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!

Chia sẻ
thg 9 28, 2018 2:45 SA

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 á.

thg 9 28, 2018 3:01 SA

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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí