0
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Lấy tuyên bố sau:
SELECT SUM[ IF[ talktime > 4 AND status = 'answer' , 1, 0 ] ] as count FROM table
Đầu ra nên được đếm các hàng đáp ứng cả hai điều kiện.
Câu lệnh có hợp lệ không?
EDIT:
Tôi quan tâm đến nhiều điều kiện trong IF.
Đã hỏi ngày 17 tháng 11 năm 2015 lúc 13:19Nov 17, 2015 at 13:19
Alexalexalex
1.2461 Huy hiệu vàng28 Huy hiệu bạc63 Huy hiệu đồng1 gold badge28 silver badges63 bronze badges
4
Tuyên bố này:
SELECT SUM[ IF[ talktime > 4 AND status = 'answer' , 1, 0 ] ] as count
FROM table
là loại chính xác, với sự cảnh báo:
1 không được phép làm tên bảng, vì nó là một từ dành riêng. Nó cần phải được trốn thoát.SELECT SUM[ IF[ talktime > 4 AND status = 'answer' , 1, 0 ] ] as count FROM table
2 là một lựa chọn kém cho tên cột, bởi vì nó là tên hàm tích hợpSELECT SUM[ IF[ talktime > 4 AND status = 'answer' , 1, 0 ] ] as count FROM table
Bạn cũng có thể đơn giản hóa truy vấn vì
SELECT SUM[ IF[ talktime > 4 AND status = 'answer' , 1, 0 ] ] as count
FROM table
3 không cần thiết trong MySQL:SELECT SUM[talktime > 4 AND status = 'answer'] as cnt
FROM `table`;
Tất nhiên, bạn có thể chuyển logic so sánh sang mệnh đề
SELECT SUM[ IF[ talktime > 4 AND status = 'answer' , 1, 0 ] ] as count
FROM table
4, nhưng điều này đang giữ cấu trúc tương tự như truy vấn ban đầu.Đã trả lời ngày 17 tháng 11 năm 2015 lúc 13:25Nov 17, 2015 at 13:25
Gordon Linoffgordon LinoffGordon Linoff
1.2m53 Huy hiệu vàng600 Huy hiệu bạc745 Huy hiệu Đồng53 gold badges600 silver badges745 bronze badges
Tại sao không
SELECT COUNT[*] FROM table WHERE talktime > 4 AND status = 'answer'
?
Đã trả lời ngày 17 tháng 11 năm 2015 lúc 13:24Nov 17, 2015 at 13:24
Mrksmrksmrks
7.77830 Huy hiệu bạc58 Huy hiệu Đồng30 silver badges58 bronze badges
IF[expr1,expr2,expr3]
Nếu expr1 đúng thì nếu [] trả về expr2; nếu không thì nó trả về expr3
Vì vậy, mã trên sẽ trả về
SELECT SUM[ IF[ talktime > 4 AND status = 'answer' , 1, 0 ] ] as count
FROM table
5 khi các điều kiện thỏa mãn khác SELECT SUM[ IF[ talktime > 4 AND status = 'answer' , 1, 0 ] ] as count
FROM table
6. Vì vậy, số lượng sẽ là SELECT SUM[ IF[ talktime > 4 AND status = 'answer' , 1, 0 ] ] as count
FROM table
7.Ví dụ,
Nếu bạn muốn hiển thị ________ 18, ________ 19, ________ 20 [giả sử
SELECT SUM[talktime > 4 AND status = 'answer'] as cnt
FROM `table`;
1 Thời lượng cuộc gọi].SELECT SUM[ IF[ talktime > 4 , 1, 0 ] ] as No_of_Long_Calls,
SUM[ IF[ talktime < 4 , 1, 0 ] ] as No_of_Short_Calls,
COUNT[*] AS Total_Calls
FROM table_name
WHERE status = 'answer'
Yeas Nó là một tuyên bố chọn hợp lệ, 100 % nó sẽ hoạt động.
Hi vọng điêu nay co ich.
Đã trả lời ngày 17 tháng 11 năm 2015 lúc 13:21Nov 17, 2015 at 13:21
Subin Chalilsubin ChalilSubin Chalil
3,4162 huy hiệu vàng23 Huy hiệu bạc38 Huy hiệu đồng2 gold badges23 silver badges38 bronze badges
Bạn có thể làm điều đó bằng cách sử dụng điều này:
SELECT COUNT[id] count FROM table WHERE talktime > 4 AND status = 'answer';
Tôi thực sự không nhận ra lý do tại sao bạn sẽ làm điều này theo bất kỳ cách nào khác, nhưng vâng, mã của bạn sẽ hoạt động tốt.
Đã trả lời ngày 17 tháng 11 năm 2015 lúc 13:27Nov 17, 2015 at 13:27
Viết theo ngày: 2015-01-11 10:25:20 00:00 Có thể một trong các lệnh MySQL được sử dụng nhiều nhất là chọn, đó là cách để sắp xếp thông tin từ cơ sở dữ liệu, nhưng tất nhiên người ta không cần tất cả thông tin bên trong cơ sở dữ liệu, do đó người ta nên giới hạn thông tin ra khỏi bảng, ở đó là nơi tuyên bố xuất hiện, với nó, người ta có thể giới hạn dữ liệu chỉ là dữ liệu tuân thủ điều kiện nhất định. Điều gì sẽ xảy ra nếu điều đó vẫn còn quá rộng?. Sau đó nó có thể được sử dụng nhiều điều kiện. Ở đây một số tùy chọn: Sử dụng và với hai hoặc nhiều điều kiện, truy vấn có thể được thu hẹp để đáp ứng nhu cầu của bạn. Chỉ khi hai điều kiện được đáp ứng, hàng được nối từ bảng cơ sở dữ liệu. Điều gì sẽ xảy ra nếu bất kỳ ai trong số họ nên được đáp ứng để lấy dữ liệu? Sử dụng hoặc sẽ bảo MySQL trả về dữ liệu nếu một hoặc cả hai điều kiện được đáp ứng. Nếu có nhiều hơn hai điều kiện cần được đáp ứng để hiển thị kết quả, bạn cần sử dụng dấu ngoặc đơn và làm tổ các điều kiện theo nhu cầu của bạn. Lần này nó sẽ dễ dàng hơn với các ví dụ. Xem xét bảng này: Nếu bạn muốn lấy tất cả tên của nam giới trẻ, hãy sử dụng truy vấn này. Như bạn có thể thấy chúng tôi đang sử dụng dấu ngoặc đơn để có được kết quả từ tên cuối cùng, bởi vì bạn muốn cái này hoặc cái kia, sau đó bạn sử dụng và để có được độ tuổi và cuối cùng là một và tham gia kết quả từ độ tuổi và kết quả từ tên.
Date: 2015-01-11 10:25:20 00:00Chọn từ đâu nhiều điều kiện
Làm việc với hai điều kiện
SELECT * FROM table WHERE column1 = 'var1' AND column2 = 'var2';
SELECT * FROM table WHERE column1 = 'var1' OR column2 = 'var2';
Làm việc với nhiều hơn hai điều kiện
+------------+-----------+--------+-----+
| fname | lname | gender | age |
+------------+-----------+--------+-----+
| John | Smith | M | 30 |
+------------+-----------+--------+-----+
| Jane | Doe | F | 20 |
+------------+-----------+--------+-----+
| Richard | Stallman | M | 70 |
+------------+-----------+--------+-----+
| John | Doe | M | 20 |
+------------+-----------+--------+-----+
0SELECT * FROM table WHERE gender = M AND age >= '18' AND age 4 AND status = 'answer' , 1, 0 ] ] as count
FROM table