Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แก้ไข Error Multiple Rows Returned ใน MySQL Benchmark


ข้อผิดพลาดเกิดขึ้นเมื่อ Subquery ใน BENCHMARK() คืนค่าหลายแถว ต้องคืนค่า Scalar (ค่าเดียว) หรือ Single Row เท่านั้น

รูปแบบที่ถูกต้อง

SELECT yourColumnName FROM yourTableName WHERE yourCondition;

ตัวอย่างข้อผิดพลาด

สร้างตารางและเพิ่มข้อมูล 4 แถว:

mysql> CREATE TABLE UserDemo ( UserId INT, UserName VARCHAR(20), RegisteredCourse VARCHAR(10) ); 
INSERT INTO UserDemo VALUES(1,'John','Java'),(2,'Larry','C'),(3,'Carol','C++'),(4,'Mike','C#');

รัน BENCHMARK ด้วย Subquery ที่คืนหลายแถว:

mysql> SELECT BENCHMARK(1000, (SELECT RegisteredCourse FROM UserDemo)); ERROR 1242 (21000): Subquery returns more than 1 row

วิธีแก้: จำกัดให้คืน 1 แถว

mysql> SELECT RegisteredCourse FROM UserDemo WHERE UserId = 1;
+------------------+ | RegisteredCourse | +------------------+ | Java             | +------------------+ 1 row in set (0.00 sec)

จากนั้นใช้ค่านี้ใน BENCHMARK:

mysql> SELECT BENCHMARK(1000, (SELECT RegisteredCourse FROM UserDemo WHERE UserId = 1));

สรุป: Subquery ใน BENCHMARK() ต้องคืนค่าเพียง 1 ค่า (Scalar) ใช้ WHERE LIMIT 1 หรือ Aggregate Function