mysql - 创建表,其中主键是两个不同表中两个字段的组合

标签 mysql sql

我想创建一个包含主键的表,该主键具有两个不同表的字段。

URL_TABLE

---------            
url varchar(255)    No           
desc    varchar(2048)   No           
preview varchar(255)    No           
img_url varchar(128)    No           
title   varchar(128)    No           
hash    varchar(128)    No       // This is one  
rate    varchar(20)     Yes     NULL    

用户

------
id      varchar(40) No       //This is 2nd
name    varchar(50) Yes     NULL         
email   varchar(50) Yes     NULL         
picture varchar(50) No           

查询:

create table post_table as 
    select id 
    from USER 
  UNION 
    select url, desc, preview, img_url, title, hash, rate 
    from URL_TABLE 
primary key (id,hash);

这是一个正确的查询吗?

最佳答案

从这个评论中,“我的目的是在我的页面上我有用户的运行 session (它将给我他的 ID)并且我想将他的操作绑定(bind)到他处理的每个 URL。所以 post_table 将包含来自用户表的 id 和其余的来自 url 表的字段"

您描述的是用户和网址之间的多对多关系。一个用户可以处理多个 url,一个 url 可以被多个用户处理。

存储此数据的更好方法是使用将 user_id、url 和 datetime_processed 作为主键的表。您可以通过简单的连接从 url 表中获取有关 url 的其他信息。

关于mysql - 创建表,其中主键是两个不同表中两个字段的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19794478/

相关文章:

sql - 在 SQL Server 中查找任意 3 行的列的最大总和

mysql - 如果某些条件为真,如何简单地返回一列?

mysql - 如何在案例陈述中使用 Min

sql - 计算PostgreSQL中基于2张表的两次count(*)查询结果之差

sql - Heroku PostgreSQL BLOB 插入失败

sql - Mysql 语句不适用于多个 AND 子句

sql - 查询两个相似的表并合并排序的结果

mysql - 当用户在 B 中匹配时如何从 A 中选择用户

mysql - 更新 MYSQL 中现有的唯一键列

java - 编辑显示数据库中所选下拉值的 Servlet