Hướng dẫn mysql select if multiple conditions - mysql chọn nếu nhiều điều kiện

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

Hướng dẫn mysql select if multiple conditions - mysql chọn nếu nhiều điều kiện

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:

  • SELECT SUM( IF( talktime > 4 AND status = 'answer' , 1, 0 ) ) as count
    FROM table
    
    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ợp

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

Hướng dẫn mysql select if multiple conditions - mysql chọn nếu nhiều điều kiện

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
Date: 2015-01-11 10:25:20 00:00


Chọn từ đâu nhiều điều kiện

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:

Làm việc với hai điều kiệ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.

SELECT * FROM table WHERE column1 = 'var1' AND column2 = 'var2';

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?

SELECT * FROM table WHERE column1 = 'var1' OR column2 = 'var2';

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.

Làm việc với nhiều hơn hai điều kiện

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:

+------------+-----------+--------+-----+
| fname      | lname     | gender | age |
+------------+-----------+--------+-----+
| John       | Smith     | M      | 30  |
+------------+-----------+--------+-----+
| Jane       | Doe       | F      | 20  |
+------------+-----------+--------+-----+
| Richard    | Stallman  | M      | 70  |
+------------+-----------+--------+-----+
| John       | Doe       | M      | 20  |
+------------+-----------+--------+-----+

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.

SELECT * FROM table WHERE gender = M AND age >=  '18' AND age <= '50';

Nếu bạn muốn có được tất cả những người trẻ tuổi với họ DOE hoặc Smith, hãy sử dụng truy vấn này.

SELECT SUM( IF( talktime > 4 AND status = 'answer' , 1, 0 ) ) as count
FROM table
0

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.

Làm cách nào để sử dụng hai câu lệnh chọn trong MySQL?

Procedure..
Để kết hợp hai hoặc nhiều câu lệnh chọn để tạo thành một bảng kết quả duy nhất, hãy sử dụng các toán tử đã đặt: Liên minh, ngoại trừ hoặc giao nhau.....
Để giữ tất cả các hàng trùng lặp khi kết hợp các bảng kết quả, hãy chỉ định tất cả các từ khóa với mệnh đề toán tử đã đặt ..

Chúng ta có thể sử dụng lồng nhau nếu trong mysql không?

Cũng như các cấu trúc kiểm soát dòng chảy khác, nếu ... kết thúc nếu các khối có thể được lồng trong các cấu trúc kiểm soát dòng chảy khác, bao gồm các câu lệnh IF khác.Mỗi nếu phải được chấm dứt bởi kết thúc của chính nó nếu theo sau bởi một dấu chấm phẩy.IF ... END IF blocks may be nested within other flow-control constructs, including other IF statements. Each IF must be terminated by its own END IF followed by a semicolon.

Làm cách nào để kết hợp hai điều kiện trong SQL?

Cú pháp.Chọn cột1, cột2, cột từ bảng_name trong đó [điều kiện1] và [điều kiện2] ... và [điều kiện];Bạn có thể kết hợp n số điều kiện bằng cách sử dụng và toán tử.SELECT column1, column2, columnN FROM table_name WHERE [condition1] AND [condition2]... AND [conditionN]; You can combine N number of conditions using the AND operator.

Làm cách nào để truy vấn nhiều giá trị từ cùng một cột trong SQL?

Lưu ý - Sử dụng để phù hợp với nhiều giá trị, tức là Toyota và Honda trong cùng một cột, tức là công ty.Cú pháp: Chọn * từ bảng_name trong đó cột_name in (matching_value1, matching_value2);SELECT * FROM TABLE_NAME WHERE COLUMN_NAME IN (MATCHING_VALUE1,MATCHING_VALUE2);