标签: mysql-error-1054

在MySQL查询的WHERE子句中使用列别名会产生错误

我正在运行的查询如下,但是我收到此错误:

#1054 - 'IN/ALL/ANY子查询'中的未知列'guaranteed_postcode'

SELECT `users`.`first_name`, `users`.`last_name`, `users`.`email`,
SUBSTRING(`locations`.`raw`,-6,4) AS `guaranteed_postcode`
FROM `users` LEFT OUTER JOIN `locations`
ON `users`.`id` = `locations`.`user_id`
WHERE `guaranteed_postcode` NOT IN #this is where the fake col is being used
(
 SELECT `postcode` FROM `postcodes` WHERE `region` IN
 (
  'australia'
 )
)
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么我无法在同一个数据库查询的where子句中使用假列?

mysql sql mysql-error-1054

183
推荐指数
5
解决办法
18万
查看次数

MySQL Update查询中"字段列表"错误中的未知列

尝试执行此更新查询时,我不断收到MySQL错误#1054:

UPDATE MASTER_USER_PROFILE, TRAN_USER_BRANCH
SET MASTER_USER_PROFILE.fellow=`y`
WHERE MASTER_USER_PROFILE.USER_ID = TRAN_USER_BRANCH.USER_ID
AND TRAN_USER_BRANCH.BRANCH_ID = 17
Run Code Online (Sandbox Code Playgroud)

这可能是一些语法错误,但我尝试使用内部连接而不是其他更改,但我不断收到相同的消息:

Unknown column 'y' in 'field list' 
Run Code Online (Sandbox Code Playgroud)

mysql sql mysql-error-1054

114
推荐指数
4
解决办法
66万
查看次数

条款中的未知栏目

我有一个简单的查询:

SELECT u_name AS user_name FROM users WHERE user_name = "john";
Run Code Online (Sandbox Code Playgroud)

我得到Unknown Column 'user_name' in where clause.'user_name'即使之后,我还不能在声明的其他部分提及select 'u_name as user_name'吗?

mysql sql mysql-error-1054

111
推荐指数
10
解决办法
25万
查看次数

我可以在SELECT查询中重用计算字段吗?

有没有办法在mysql语句中重用计算字段.我收到错误"unknown column total_sale":

SELECT 
    s.f1 + s.f2 as total_sale, 
    s.f1 / total_sale as f1_percent
FROM sales s
Run Code Online (Sandbox Code Playgroud)

或者我必须重复计算,如果我添加了我需要的所有计算,这将产生一个非常长的SQL语句.

SELECT 
    s.f1 + s.f2 as total_sale, 
    s.f1 / (s.f1 + s.f2) as f1_percent
FROM sales s
Run Code Online (Sandbox Code Playgroud)

当然我可以在我的php程序中完成所有计算.

mysql sql mysql-error-1054

62
推荐指数
5
解决办法
4万
查看次数

ON子句中的MySQL未知列

我有以下MySQL查询:

SELECT p.*,
    IF(COUNT(ms.PropertyID) > 0,1,0) AS Contacted,
    pm.MediaID,
    date_format(p.AvailableFrom, '%d %b %Y') AS 'AvailableFrom',
    astext(pg.Geometry) AS Geometry
FROM property p, propertygeometry pg
    JOIN shortlist sl ON sl.PropertyID = p.id AND sl.MemberID = 384216
    LEFT JOIN message ms ON ms.PropertyID = p.id AND ms.SenderID = 384216
    LEFT JOIN property_media pm ON pm.PropertyID = p.id AND pm.IsPrimary = 1
WHERE p.paused = 0
    AND p.PropertyGeometryID = pg.id
GROUP BY p.id
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

#1054 - 'on子句'中的未知列'p.id'

据我所知,查询看起来正确,任何想法可能是错的?

mysql sql mysql-error-1054

55
推荐指数
2
解决办法
7万
查看次数

MySQL未知列'password_last_changed'

使用此命令创建用户时:

create user 'foo'@localhost';
Run Code Online (Sandbox Code Playgroud)

显示此错误:

ERROR 1054(42S22):'mysql.user'中的未知列'password_last_changed'

使用MySQL服务器版本:5.7.6

我试图添加它,但我不知道它的数据类型我该如何解决这个问题?

mysql mysql-workbench mysql-error-1054

23
推荐指数
1
解决办法
2万
查看次数

如何限制LEFT JOIN的结果

以两个表为例:tbl_producttbl_transaction.
tbl_product列出产品详细信息,包括名称和ID,同时tbl_transaction列出涉及产品的交易,包括日期,产品ID,客户等.

我需要显示一个显示10个产品和每个产品的网页,最后5个交易.到目前为止,没有LEFT JOIN查询似乎工作,如果mysql可以允许该tx.product_id=ta.product_id部分,下面的子查询将起作用(在'where子句'中出现未知列'ta.product_id'失败:[错误:1054]).

SELECT  
ta.product_id,  
ta.product_name,  
tb.transaction_date  
FROM tbl_product ta  
LEFT JOIN (SELECT tx.transaction_date FROM tbl_transaction tx WHERE tx.product_id=ta.product_id LIMIT 5) tb
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

有没有办法实现我需要的列表,而无需在循环中使用多个查询

编辑:
这正是我需要的MySQL:

SELECT ta.product_id, ta.product_name, tb.transaction_date ...  
FROM tbl_product ta  
LEFT JOIN tbl_transaction tb ON (tb.product_id=ta.product_id LIMIT 5)  
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

当然这是非法的,但我真的希望不是!

mysql sql subquery left-join mysql-error-1054

18
推荐指数
1
解决办法
5万
查看次数

MySQL错误#1054 - "字段列表"中的未知列

每当我尝试将数据输入到我的tblorder中时,我会在"字段列表"中收到错误消息#1054 - 未知列'FK_Customer_ID'.我试图破坏我的代码,并且在这样做时我发现错误是针对FK_Customer_ID和OrderQuantity重复的,而FK_DVD_ID则需要单个数据条目.我已经尝试删除表并重新创建它,我已经删除了数据库并重新创建它但没有任何作用.据我所知,我的代码与我的拼写一致是正确的,所以我真的卡住了.

我的tblorder是 -

CREATE TABLE tblorder
(   
 Order_ID INT AUTO_INCREMENT NOT NULL,  
 FK_Customer_ID INT NOT NULL,   
 FK_DVD_ID INT NOT NULL,    
 OrderDate DATETIME NOT NULL DEFAULT NOW(),
 OrderQantity INT NOT NULL, 
 PRIMARY KEY (Order_ID),    
 FOREIGN KEY (FK_Customer_ID) REFERENCES tblcustomer (Customer_ID), 
 FOREIGN KEY (FK_DVD_ID) REFERENCES tbldvd (PK_ID)
);
Run Code Online (Sandbox Code Playgroud)

我试图提供的数据是 -

INSERT INTO tblorder
 (FK_Customer_ID, FK_DVD_ID, OrderQuantity)
VALUES 
 (1, 3, 2),
 (1, 5, 1),
 (1, 10, 4), 
 (1, 15, 3),
 (2, 5, 4),
 (2, 17, 3),
 (3, 15, 1),
 (3, 16, …
Run Code Online (Sandbox Code Playgroud)

mysql mysql-error-1054

14
推荐指数
1
解决办法
16万
查看次数

MySQL 5离开加入未知列

我在mysql 4.1中使用了以下查询,但在5.0中没有:

SELECT * FROM email e, event_email ee 
LEFT JOIN member m on m.email=e.email 
WHERE ee.email_id = e.email_id
Run Code Online (Sandbox Code Playgroud)

错误:1054('on子句'中的未知列'e.email')

mysql left-join mysql-error-1054

12
推荐指数
2
解决办法
2万
查看次数

MySQL"On Clause中的未知列"

我有以下MySQL查询:

SELECT posts.id,  posts.name,  LEFT(posts.content, 400),  posts.author,  posts.date, users.display_name,
  GROUP_CONCAT(tags.tag ORDER BY tag_linking.pid ASC SEPARATOR ",") update_tags
FROM posts, tag_linking, tags
INNER JOIN `users`
ON posts.author=users.id;
WHERE tag_linking.pid = posts.id 
  AND tags.id = tag_linking.tid 
ORDER BY posts.date DESC
Run Code Online (Sandbox Code Playgroud)

哪个,你可以看到,连接三个表等等.无论如何,问题是它给出了一个错误:

ERROR CODE:
SQL Error (1054): Unknown column 'posts.author' in 'on clause'
Run Code Online (Sandbox Code Playgroud)

即使在另一个页面上使用这个更简单的查询工作:

SELECT posts.id,  posts.name,  LEFT(posts.content, 400),  posts.author,  posts.date, users.display_name FROM `posts`
INNER JOIN `users`
ON posts.author=users.id
Run Code Online (Sandbox Code Playgroud)

有没有人想过为什么会这样?谢谢你的帮助.

mysql sql join mysql-error-1054

12
推荐指数
1
解决办法
3万
查看次数

标签 统计

mysql ×10

mysql-error-1054 ×10

sql ×7

left-join ×2

join ×1

mysql-workbench ×1

subquery ×1