细化mysql查询结果的结果

时间:2012-03-27 12:30:59

标签: mysql

我正在使用drupal 6.在检索数据时,我得到了以下输出:

| nid | fid |
------------
| 10 | 49 |
| 10 | 57 |
| 10 | 76 |
| 14 | 34 |
| 14 | 45 |
| 14 | 95 |
| 18 | 57 |
| 18 | 65 |
| 18 | 75 |
| 19 | 56 |
| 19 | 45 |
| 19 | 75 |

现在我想像这样改进上面的输出

| nid | fid1 | fid2 | fid3 |
----------------------------
10    | 49   |  57  |  76  |
14    | 34   |  45  |  95  |
18    | 57   |  65  |  75  |
19    | 56   |  45  |  75  |

请为此建议sql查询..

4 个答案:

答案 0 :(得分:1)

你应该更好地解释你想要做什么。您可以使用GROUP_CONCAT()以逗号分隔列表的形式返回fids。

SELECT nid, GROUP_CONCAT(fid)
FROM tbl
GROUP BY nid

答案 1 :(得分:0)

如果您有2个列表,则无法获得4个列,但您可以过滤c的结果。

SELECT * FROM yourtable WHERE nid = "10";
然后你得到了:

| nid | fid |

| 10 | 49 |
| 10 | 57 |
| 10 | 76 |

这样你就可以根据需要在你的程序中进行转换。

答案 2 :(得分:0)

你可以连接字符串并在php中将它爆炸成数组。像这样:

SELECT nid, GROUP_CONCAT( fid SEPARATOR '|') FROM table GROUP BY id;

并在PHP中fid

爆炸|

答案 3 :(得分:0)

在sql中

SELECT nid, GROUP_CONCAT(fid) fids
FROM tbl
GROUP BY nid

将显示

nid  |    fids
10   |   49,57,76
11   |   34,45,95

您可以使用PHP格式化为所需的输出