Khi sử dụng các câu truy vấn lồng nhau trong MySQL đôi khi bạn sẽ gặp một số vấn đề nhỏ bởi một số cấu trúc truy vấn của MySQL không theo chuẩn SQL chung. Có thể nêu ở đây một ví dụ nhỏ thường gặp đó là: Update.
Lần đầu tiên gặp phải vấn đề này là khi sửa lại password trong bảng dữ liệu jbp_user của Jbossportal.
mysql> update jbp_users set jbp_password = (select jbp_password from jbp_users where jbp_uname='user') where jbp_uname='test';
ERROR 1093 (HY000): You can't specify target table 'jbp_users' for update in FROM clause
Để thực hiện được câu truy vấn thì có thể làm như sau:
mysql> update jbp_users set jbp_password = (select jbp_password from ( select * from jbp_users) as b where jbp_uname='user') where jbp_uname='test';
Query OK, 1 row affected (0.09 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Không có nhận xét nào:
Đăng nhận xét