[英]SQL query is producing an error which I can't solve
我有以下即時查詢的表格:
categories
-id
-name
-parent_id
-last
products2categories
-id
-product_id
-category_id
我想做的是獲取記錄的category name
和category id
,表products2categories
的product_id
為10,表categories
last
為1
這是我嘗試執行的查詢:
SELECT `categories.id`,`categories.name`
FROM `categories`
JOIN `products2categories`
ON `categories.id` = `products2categories.category_id`
WHERE `categories.last` = 1
AND `products2categories.product_id`= 10
我已返回以下錯誤:
#1054 - Unknown column 'categories.last' in 'where clause'
為了演示我想要得到的東西:
categories
-id 8
-name "my_name"
-parent_id 0
-last 1
products2categories
-id 1
-product_id 10
-category_id 1
結果,我想獲取ID 8
和名稱“ my_name”,但它必須基於表products2categories,導致一種產品可以具有與其相關的多個類別。
提前致謝!
更換
WHERE `categories.last` = 1
與
WHERE `categories`.`last` = 1
轉義列和表名的反引號不能用於轉義表和列的組合。 它必須同時應用於兩者。
快速檢查語法: categories.last
不應該是categories
。 last
呢?
對所有其他“字段”執行相同的操作
在單個標識符周圍使用反引號:
所以
`categories.last`
應該
`categories`.`last`
因為表名和列名是單獨的標識符。
在這種情況下,順便說一下,您根本不需要反引號,因此如果刪除它們,它應該可以正常工作,如下所示:
categories.last
僅在包含空格或其他特殊字符的列名中使用反引號,在某些情況下可能需要使用等於某些保留字的名稱。 但是據我所知,您根本不需要它們,而且我不記得每個人都必須使用它們。
您不正確地分隔字段。 分別分隔表名和列名:
SELECT `categories`.`id`,`categories`.`name`
FROM `categories`
JOIN `products2categories`
ON `categories`.`id` = `products2categories`.`category_id`
WHERE `categories`.`last` = 1
AND `products2categories`.`product_id`= 10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.