У меня есть таблица с именем пользователя со списком имен в этой таблице. Я хочу запустить одну строку 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
Затем вы можете использовать explode()
в PHP, чтобы разбить его на массив.
Если у вас много имен, убедитесь, что вы установили group_concat_max_len
достаточно высоко, чтобы разрешить все имена.