это не «плохо спроектированный стол»; но на самом деле таблица значений атрибутов сущности (EAV). К сожалению, реляционные базы данных являются плохой платформой для реализации таких таблиц и сводят на нет большинство приятных моментов СУБД. Распространенный случай использования неправильной лопаты для ввинчивания винта.
но я думаю, что это сработает (на основании ответа Маркуса Адамса , который, как мне кажется, не сработает (редактировать: теперь это работает))
SELECT User1.Value AS name, User2.Value AS email, User3.Value AS phone
FROM Users User1
LEFT JOIN Users User2
ON User2.User = User1.User AND User2.Field='email'
LEFT JOIN Users User3
ON User3.User = User1.User AND User3.Field='phone'
WHERE User1.Field = 'name'
ORDER BY User1.User
Edit: получил некоторые тонкости из других ответов (LEFT Joins и имена полей в предложениях ON), теперь кто-нибудь знает, как поставить оставшееся WHERE немного выше? (но не при первом включении JOIN, это слишком уродливо), конечно, это не имеет значения, так как оптимизатор запросов все равно возвращает его обратно.