Computer >> Máy Tính >  >> Lập trình >> MySQL

Giải quyết lỗi bất cứ khi nào nhiều hàng được trả về trong MySQL Benchmark?

Bạn sẽ gặp lỗi bất cứ khi nào bạn trả về nhiều hàng trong điểm chuẩn. Trả về một giá trị vô hướng hoặc một hàng thay vì nhiều hàng. Cú pháp như sau -

SELECT yourColumnName FROM yourTableName WHERE yourCondition.

Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table UserDemo
   -> (
   -> UserId int,
   -> UserName varchar(20),
   -> RegisteredCourse varchar(10)
   -> );
Query OK, 0 rows affected (0.67 sec)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -

mysql> insert into UserDemo values(1,'John','Java');
Query OK, 1 row affected (0.16 sec)
mysql> insert into UserDemo values(2,'Larry','C');
Query OK, 1 row affected (0.21 sec)
mysql> insert into UserDemo values(3,'Carol','C++');
Query OK, 1 row affected (0.11 sec)
mysql> insert into UserDemo values(4,'Mike','C#');
Query OK, 1 row affected (0.17 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng một câu lệnh chọn. Truy vấn như sau -

mysql> select *from UserDemo;

Sau đây là kết quả -

+--------+----------+------------------+
| UserId | UserName | RegisteredCourse |
+--------+----------+------------------+
|      1 | John     | Java             |
|      2 | Larry    | C                |
|      3 | Carol    | C++              |
|      4 | Mike     | C#               |
+--------+----------+------------------+
4 rows in set (0.00 sec)

Lỗi điểm chuẩn của bạn như sau -

mysql> select benchmark(1000,(select RegisteredCourse from UserDemo));
ERROR 1242 (21000): Subquery returns more than 1 row

Vì truy vấn con trả về nhiều hơn một hàng, do đó bạn cần trả về một hàng duy nhất. Truy vấn như sau -

mysql> select RegisteredCourse from UserDemo where UserId=1;

Sau đây là kết quả -

+------------------+
| RegisteredCourse |
+------------------+
| Java             |
+------------------+
1 row in set (0.00 sec)