Mysql msql基于另外两个表中的值将数据插入表中

Mysql msql基于另外两个表中的值将数据插入表中,mysql,sql,join,inner-join,outer-join,Mysql,Sql,Join,Inner Join,Outer Join,我使用的是MySQL,有一个表(documentShips),我想存储文档和用户之间的连接/链接 “用户”表包含id、名字和姓氏等列 documents表包含id和users列,其中users列包含逗号分隔的值 例如“乔·布洛格斯、弗雷德·纳克、西蒙·麦库尔”等 我希望使用like语句在表(文档和用户)之间匹配用户,例如: where documents.authors like '% users.last_name %' 并将其插入documentShips表中,例如: insert

我使用的是MySQL,有一个表(documentShips),我想存储文档和用户之间的连接/链接

  • “用户”表包含id、名字和姓氏等列
  • documents表包含id和users列,其中users列包含逗号分隔的值
    • 例如“乔·布洛格斯、弗雷德·纳克、西蒙·麦库尔”等
我希望使用like语句在表(文档和用户)之间匹配用户,例如:

where documents.authors like '% users.last_name %'
并将其插入documentShips表中,例如:

insert into documentShips (user_id, document_id) ... values () ... where ...
我正在努力创建一个有效的(mysql)insert语句来实现这一点

任何帮助都将不胜感激

谢谢,
Jon.

使用MySQL文档中所示的语法。文档中还有一些示例。

如果我理解正确,您可以像这样使用
FIND_IN_SET()

INSERT INTO documentShips (user_id, document_id)
SELECT u.id, d.id 
  FROM documents d JOIN users u
    ON FIND_IN_SET(CONCAT(u.first_name, ' ', u.last_name), d.authors) > 0
 ORDER  BY d.id, u.id
UPDATE documents
   SET authors = REPLACE(REPLACE(authors, ' ,', ','), ', ', ',');
这里是演示

为了使其正常工作,您必须确保
文档中以逗号分隔的值。作者
在逗号之前或之后没有空格。如果实际上您有空格,那么首先用这样的查询消除它们

INSERT INTO documentShips (user_id, document_id)
SELECT u.id, d.id 
  FROM documents d JOIN users u
    ON FIND_IN_SET(CONCAT(u.first_name, ' ', u.last_name), d.authors) > 0
 ORDER  BY d.id, u.id
UPDATE documents
   SET authors = REPLACE(REPLACE(authors, ' ,', ','), ', ', ',');
这里是演示


现在考虑<强>标准化< /强>您的<代码>文档表.< /P> SyToX插入到文档(ID,…)选择@ ID中。哪里有条件。如果你使用的是值,我认为你不能使用where子句。