在一行中匹配不同的值

时间:2012-10-29 16:45:27

标签: mysql sql mysqli

我想执行查询,我想检查A列是否具有某些值。 A只能有X,X和Y或X Y和Z的组合。

为了更好地理解。我正在桌子内查看一本书的作者。该表包含BOOK_ID,BOOK_TITLE,AUTHOR_NAME,AUTHOR_ORDER。

因此,一本书可能有1,2或3位作者,按照AUTHOR_ORDER行内的顺序列出。我正在努力达到输出,如果一本书有3位作者,它将相应地显示从第一作者到第三作者。我现在陷入了需要比较值并在输出中显示它的部分。

知道如何在MYSQL输出中实现这个目标吗?

示例:

enter image description here

输出结果或多或少如下:

如果标题的au_ord为1,2和3,则应该有一个新列,所有作者姓名都以升序列出。

例如,对于标题BU1032,作者行将是Bennet,Green

1 个答案:

答案 0 :(得分:2)

我认为GROUP_CONCAT就是你所追求的:

SELECT  Title_ID, 
        Title,
        GROUP_CONCAT(au_LName ORDER BY au_Ord) AS Authors
FROM    Books
GROUP BY Title_ID, Title;

<强> SQL FIDDLE