2012-04-13 34 views
11

Tôi có một bảng có tên là bank với ba cột: uid, nick, balance.Lỗi MySQL: Cột không xác định trong 'where clause'

tôi đang cố gắng để tạo ra một truy vấn mà sẽ trở lại sự cân bằng dựa trên nick, và tôi nhận được một lỗi Unknown column 'Alex' in 'where clause' khi tôi sử dụng truy vấn này:

SELECT b.balance FROM bank AS b WHERE b.nick=`Alex` LIMIT 1 

bất cứ ai có thể nhìn thấy những gì tôi đang làm sai ở đây ?

+0

Bạn có sử dụng dấu backticks xung quanh "Alex" hoặc là các lượt truy cập đơn lẻ đó không? – gmalette

Trả lời

26

backticks (`) được sử dụng để định danh, như tên bảng, tên cột vv Dấu nháy đơn (') là được sử dụng cho chuỗi ký tự.

Bạn muốn làm:

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1 

Hoặc, để được rõ ràng hơn:

SELECT `b`.`balance` FROM `bank` AS b WHERE `b`.`nick`='Alex' LIMIT 1 

Khi không có cơ hội mơ hồ, và khi bảng/tên cột không có ký tự đặc biệt hoặc không gian, sau đó bạn có thể để lại `tắt.

Dưới đây là một số tài liệu đó là khô và khó đọc: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

Nhưng đây là một câu hỏi liên quan về dba.stackoverflow đó là dễ dàng hơn để đọc: https://dba.stackexchange.com/questions/23129/benefits-of-using-backtick-in-mysql-queries

Và đây là một trang rất tốt mà Tôi khuyên mọi người nên đọc: http://www.sitepoint.com/forums/showthread.php?408497-the-big-bad-thread-of-quot-MySQL-Best-Practices-and-Other-Useful-Information-quot

5

Bạn cần phải sử dụng đơn quote ('), không đánh dấu vào dấu ngoặc cho các giá trị của lĩnh vực của bạn

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1 

dấu Tick được sử dụng để biểu thị tên trường.

6

Bạn đang sử dụng sai "`"

Sử dụng 'thay vì

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1 
-3

Một lý do khác cho lỗi như vậy là, không có cột nào như vậy trong bảng đã cho. Kiểm tra chính tả, trường hợp chữ cái, lỗi chính tả và sự hiện diện thực tế của trường đã cho trong định nghĩa bảng.

Các vấn đề liên quan