简体   繁体   中英

MySQL Unknown column in where clause?

I have two databases. One is called INFO with three tables ( Stories , Comments , Replies )

Stories has the following fields

+--------------+----------------+------+-----+---------------------+-----------------------------+
| Field        | Type           | Null | Key | Default             | Extra                       |
+--------------+----------------+------+-----+---------------------+-----------------------------+
| storyID      | int(11)        | NO   | PRI | NULL                |                             |
| originalURL  | varchar(500)   | YES  |     | NULL                |                             |
| originalDate | timestamp      | NO   |     | CURRENT_TIMESTAMP   | on update CURRENT_TIMESTAMP |
| numDiggs     | int(11)        | YES  |     | NULL                |                             |
| numComments  | int(11)        | YES  |     | NULL                |                             |
| diggURL      | varchar(500)   | YES  |     | NULL                |                             |
| rating       | varchar(50)    | YES  |     | NULL                |                             |
| title        | varchar(200)   | YES  |     | NULL                |                             |
| summary      | varchar(10000) | YES  |     | NULL                |                             |
| uploaderID   | varchar(50)    | YES  |     | NULL                |                             |
| imageURL     | varchar(500)   | YES  |     | NULL                |                             |
| category1    | varchar(50)    | YES  |     | NULL                |                             |
| category2    | varchar(50)    | YES  |     | NULL                |                             |
| uploadDate   | timestamp      | NO   |     | 0000-00-00 00:00:00 |                             |
| num          | int(11)        | YES  |     | NULL                |                             |
+--------------+----------------+------+-----+---------------------+-----------------------------+

Another database is called Data with one table ( User ). Fields shown below:

+-------------------+-------------+------+-----+---------+-------+
| Field             | Type        | Null | Key | Default | Extra |
+-------------------+-------------+------+-----+---------+-------+
| userID            | varchar(50) | NO   | PRI | NULL    |       |
| numStories        | int(11)     | YES  |     | NULL    |       |
| numComments       | int(11)     | YES  |     | NULL    |       |
| numReplies        | int(11)     | YES  |     | NULL    |       |
| numStoryDiggs     | int(11)     | YES  |     | NULL    |       |
| numCommentReplies | int(11)     | YES  |     | NULL    |       |
| numReplyDiggs     | int(11)     | YES  |     | NULL    |       |
| numStoryComments  | int(11)     | YES  |     | NULL    |       |
| numStoryReplies   | int(11)     | YES  |     | NULL    |       |
+-------------------+-------------+------+-----+---------+-------+

User.userID is full of thousands of unique names. All other fields are currently NULL . The names in User.userID correspond to the names in Stories.uploaderID .

I need to, for each userID in User , count the number of stories uploaded from (ie num) Stories for the corresponding name and insert this value into User.numStories .

The query which I have come up with (which produces an error) is:

INSERT INTO DATA.User(numStories) 
SELECT count(num) 
FROM INFO.Stories 
WHERE INFO.Stories.uploaderID=DATA.User.userID;

The error I get when running this query is

 Unknown column 'DATA.User.userID' in 'where clause'

Sorry if this is badly explained. I will try and re-explain if need be.

You aren't creating new entries in the User table, you're updating existing ones. Hence, insert isn't the right syntax here, but rather update :

UPDATE DATA.User u
JOIN   (SELECT   uploaderID, SUM(num) AS sumNum
        FROM     INFO.Stories
        GROUP BY uploadedID) i ON i.uploaderID = u.userID
SET    numStories = sumNum

EDIT:
Some clarification, as requested in the comments. The inner query sums the num in Stories per uploaderId . The updates statement updates the numStories in User the the calculated sum of the inner query of the matching id .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM