如何在MySQL中表示Cross Apply和Split String

Ber*_*rch 2 mysql t-sql string split

对于某些背景,我正在尝试创建一个包含多个食谱的数据库.但是,必须将各种成分与它们最初来自的配方联系起来.

例如,我有包含所有单独成分的表.

在此输入图像描述

并且存储食谱的表格减去成分.

在此输入图像描述

现在,我发现这篇文章介绍了如何使用T-SQL XML命令拆分字符串,以及用于执行此操作的代码是:

SELECT
  Books.BookId,
  Books.Book,
  BookAuthors.AuthorId,
  BookAuthors.Author
FROM Books
CROSS APPLY dbo.split(Books.Authors,',') split
INNER JOIN BookAuthors ON BookAuthors.AuthorId = split.val
Run Code Online (Sandbox Code Playgroud)

我正在寻找的结果与此非常相似: 在此输入图像描述

但是,CROSS APPLY等仅适用于MS SQL Server,我的问题是:

是否有可能使用MySQL实现相同或非常相似的效果?

谢谢你的帮助.

Sim*_*ity 5

这应该与您想要得到的完全匹配:

SELECT
  Books.BookId,
  Books.Book,
  BookAuthors.AuthorId,
  BookAuthors.Author
FROM Books
  LEFT JOIN BookAuthors ON (find_in_set(BookAuthors.AuthorId, Books.Authors) <> 0)
Run Code Online (Sandbox Code Playgroud)

发现这篇文章非常有用:MySQL查询以逗号分隔的字符串查找值

如果您需要进一步说明它是如何工作的,请发表评论.