【问题标题】:Mysql join overwriting submission idmysql join覆盖提交id
【发布时间】:2014-01-12 02:09:12
【问题描述】:

我有 2 张桌子。 submissionsusers。它们通过submissions.user_id = users.id 关联。

users:

+----------------+------------------------+------+-----+-------------------+-----------------------------+
| Field          | Type                   | Null | Key | Default           | Extra                       |
+----------------+------------------------+------+-----+-------------------+-----------------------------+
| id             | int(10) unsigned       | NO   | PRI | NULL              | auto_increment              |
| email          | varchar(128)           | NO   | MUL | NULL              |                             |
| hash           | varchar(64)            | NO   |     | NULL              |                             |
| salt           | varchar(32)            | NO   |     | NULL              |                             |
| username       | varchar(23)            | NO   |     | NULL              |                             |
| type           | enum('normal','admin') | NO   |     | normal            |                             |
| about          | varchar(255)           | NO   |     | NULL              |                             |
| created        | datetime               | NO   |     | NULL              |                             |
| last_login     | timestamp              | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| created_ip     | int(10) unsigned       | NO   |     | NULL              |                             |
| last_login_ip  | int(10) unsigned       | NO   |     | NULL              |                             |
| remember_me    | tinyint(3) unsigned    | NO   |     | 0                 |                             |
| avatar         | varchar(32)            | NO   |     | NULL              |                             |
| confirmed      | tinyint(1) unsigned    | NO   |     | 0                 |                             |
| confirm_code   | varchar(64)            | NO   |     | NULL              |                             |
| public_profile | tinyint(1)             | NO   |     | 1                 |                             |
+----------------+------------------------+------+-----+-------------------+-----------------------------+

submissions

+-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+-----+---------+----------------+
| Field       | Type                                                                                                                                                                                                                                                                     | Null | Key | Default | Extra          |
+-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+-----+---------+----------------+
| id          | int(10) unsigned                                                                                                                                                                                                                                                         | NO   | PRI | NULL    | auto_increment |
| title       | varchar(255)                                                                                                                                                                                                                                                             | NO   |     | NULL    |                |
| slug        | varchar(255)                                                                                                                                                                                                                                                             | NO   |     | NULL    |                |
| description | mediumtext                                                                                                                                                                                                                                                               | NO   |     | NULL    |                |
| user_id     | int(11)                                                                                                                                                                                                                                                                  | NO   | MUL | NULL    |                |
| created     | datetime                                                                                                                                                                                                                                                                 | NO   |     | NULL    |                |
| category    | enum('animals-pets','autos-vehicles','careers-work','clothing','computers','cooking-food','deals','education','electronics','entertainment','general-advice','finance','health-fitness','hygiene','home-garden','how-to','misc','self-improvement','sports','traveling') | NO   |     | NULL    |                |
| type        | enum('tip','request')                                                                                                                                                                                                                                                    | NO   |     | NULL    |                |
| thumbnail   | varchar(64)                                                                                                                                                                                                                                                              | NO   |     | NULL    |                |
| removed     | tinyint(1) unsigned                                                                                                                                                                                                                                                      | NO   |     | 0       |                |
| down_votes  | int(10) unsigned                                                                                                                                                                                                                                                         | NO   |     | 0       |                |
| up_votes    | int(10) unsigned                                                                                                                                                                                                                                                         | NO   |     | 0       |                |
| score       | int(11)                                                                                                                                                                                                                                                                  | NO   | MUL | 0       |                |
| keywords    | varchar(255)                                                                                                                                                                                                                                                             | NO   |     | NULL    |                |
| ip          | int(10) unsigned                                                                                                                                                                                                                                                         | NO   |     | NULL    |                |
+-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+-----+---------+----------------+

我正在尝试加入这两个表以查看提交,但我得到以下查询的结果给了我这个:

SELECT s.*, u.id, u.username FROM submissions s JOIN users u ON s.user_id = u.id WHERE s.id = 12'

永远给我:

   { id: 15,
     title: 'what the hell!',
     slug: 'what-the-hell',
     description: 'seriously what the hell node mysql?!',
     user_id: 15,
     created: Sat Jan 11 2014 11:58:06 GMT-0800 (PST),
     category: 'misc',
     thumbnail: '',
     removed: 0,
     down_votes: 0,
     up_votes: 0,
     score: 0,
     keywords: '!',
     ip: 127001,
     username: 'blahbster'}

在获取 user.id 时,它总是会生成 submission.id。为什么要覆盖?

【问题讨论】:

    标签: mysql sql node-mysql


    【解决方案1】:

    之所以“覆盖”,是因为两列同名id,无法区分。

    只需使用:

    SELECT s.*, u.username
    FROM submissions s JOIN
         users u
         ON s.user_id = u.id
    WHERE s.id = 12;
    

    并使用user_id 作为用户ID,使用id 作为订阅ID。

    【讨论】:

    • 我想是时候重新学习一下mysql了。谢谢你。一直在将所有内容从 mongoDB 切换到 mysql,并且从 mongoDB 切换回 mysql 时上下文切换最困难。
    猜你喜欢
    • 1970-01-01
    • 2021-07-19
    • 2011-07-08
    • 2012-05-09
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    相关资源
    最近更新 更多