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

标签 php mysql

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

我已经尝试过:

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

和<

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

第一个结果应该是:

Tim
Jeremy
Mike
David

省略名字Roberto

第二个结果应该是:

Roberto
Jeremy
Mike
David

省略了名字Tim

第三个结果应该是:

Roberto
Tim
Mike
David

省略名字Jeremy

等等..

最佳答案

您可以将表与其自身连接起来,并使用 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 设置得足够高以允许所有名称。

关于php - 需要 SQL 查询方面的帮助,如何循环结果并省略第一条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53952356/

相关文章:

php - 生成动态网格并填充选定的单元格

mysql - Rails 4 规划您的应用程序以实现高效查询

mysql - 在一组字符串上添加一些字符串

php - 如果未设置变量,则禁用输入字段

php - 查询不同服务器上的数据库

php - Symfony2 - 如何验证上传的文件是否为 tex 文件 (LaTex)

php - SQL 和 PHP 语法帮助

循环中的Php动态变量名

php - 如果选中,则获取复选框值

mysql - mysqld.exe中的d是什么意思