0

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

  • users 表的列包括 id、first_name 和 last_name 等...
  • 文档表包含 id 和 users 列,其中 users 列包含逗号分隔值
    • 例如“Joe Bloggs、Fred Nerk、Simon McCool”等...

我想使用 like 语句在表(文档和用户)之间匹配用户,例如:

where documents.authors like '% users.last_name %'

并将它们插入到 documentShips 表中,例如:

insert into documentShips (user_id, document_id) ... values () ... where ...

我正在努力创建一个有效的(mysql)插入语句来执行此操作。

任何帮助将不胜感激 !!!

谢谢,乔恩。

4

2 回答 2

0

使用MySQL 文档中所示的INSERT...SELECT语法。该文档也有一些示例。

于 2013-10-23T15:15:21.430 回答
0

如果我理解正确,您可以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

这是SQLFiddle演示

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

UPDATE documents
   SET authors = REPLACE(REPLACE(authors, ' ,', ','), ', ', ',');

这是SQLFiddle演示

现在考虑规范化您的documents表格。

于 2013-10-23T15:21:26.600 回答