我有一个名为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
。
以此类推。
答案 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
设置得足够高以允许所有名称。