我正在运行的查询如下,但是我收到此错误:
#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错误#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) 我有一个简单的查询:
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语句中重用计算字段.我收到错误"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查询:
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'
据我所知,查询看起来正确,任何想法可能是错的?
使用此命令创建用户时:
create user 'foo'@localhost';
Run Code Online (Sandbox Code Playgroud)
显示此错误:
ERROR 1054(42S22):'mysql.user'中的未知列'password_last_changed'
使用MySQL服务器版本:5.7.6
我试图添加它,但我不知道它的数据类型我该如何解决这个问题?
以两个表为例:tbl_product和tbl_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)
当然这是非法的,但我真的希望不是!
每当我尝试将数据输入到我的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 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查询:
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)
有没有人想过为什么会这样?谢谢你的帮助.