需要有关SQL查询的帮助,如何循环结果并省略第一条记录?

时间:2018-12-28 00:27:05

标签: php mysql

我有一个名为User的表,该表中有一个名称列表。我想运行一个SQL字符串,该字符串返回名称列表,但没有连续顺序的第一条记录的名称。省略的名称将成为列的标题。

我尝试过:

$result = mysql_query("SELECT name FROM user AND NOT (name = 'David')");<br>

和<< / p>

$result = mysql_query("SELECT name FROM user (LIMIT 1)");

第一个结果应该是:

Tim
Jeremy
Mike
David

省略了名称Roberto

第二个结果应该是:

Roberto
Jeremy
Mike
David

省略了名称Tim

第三个结果应该是:

Roberto
Tim
Mike
David

省略了名称Jeremy

以此类推。

1 个答案:

答案 0 :(得分:2)

您可以将表与自身连接起来,并使用GROUP_CONCAT()获取所有其他名称。

SELECT u1.name, GROUP_CONCAT(u2.name) AS others
FROM user AS u1
JOIN user AS u2 ON u2.name != u1.name

others将是所有其他名称的逗号分隔列表。因此,它看起来像:

name    others
Roberto Tim,Jeremy,Mike,David
Tim     Roberto,Jeremy,Mike,David
Jeremy  Roberto,Tim,Mike,David
Mike    Roberto,Tim,Jeremy,David
David   Roberto,Tim,Jeremy,Mike

然后可以在PHP中使用explode()将其拆分为一个数组。

如果您有很多名称,请确保将group_concat_max_len设置得足够高以允许所有名称。