Нужна помощь с запросом SQL, как мне зациклить результат и пропустить первую запись?

0

У меня есть таблица с именем пользователя со списком имен в этой таблице. Я хочу запустить одну строку 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.

И так далее..

  • 0
    Я использую PHP 5.5, я пытался использовать 7.2, но у меня были проблемы с подключением к базе данных MySQL.
  • 0
    Это потому, что вы используете API базы данных, это десятилетие устарело.
Показать ещё 3 комментария
Теги:

1 ответ

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

Затем вы можете использовать explode() в PHP, чтобы разбить его на массив.

Если у вас много имен, убедитесь, что вы установили group_concat_max_len достаточно высоко, чтобы разрешить все имена.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню