Как создать виртуальный столбец с помощью MySQL SELECT?

Если я выберу SELECT a AS b, а b не является столбцом в таблице, будет ли запрос создать «виртуальный» столбец?

Фактически, мне нужно включить в запрос какой-то виртуальный столбец и обработать некоторую информацию в запросе, чтобы я мог использовать его с каждым элементом позже.

Я прочитал этот вопрос несколько раз и должно быть что-то упустил. Не могли бы вы уточнить, что именно вы ищете?

lc. 18.01.2009 18:01

Представьте себе запрос как массив строк и столбцов. Обычно я просто наследую столбцы из структуры таблицы простым SELECT * FROM, но теперь мне нужно вставить в него свой собственный столбец.

Skuta 18.01.2009 18:05

может вам стоит взять один посмотреть документацию ..

user3850 18.01.2009 18:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
71
3
132 444
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Что-то вроде:

SELECT id, email, IF(active = 1, 'enabled', 'disabled') AS account_status FROM users

Это позволяет выполнять операции и отображать их в виде столбцов.

Обновлено:

вы также можете использовать объединения и отображать операции в виде столбцов:

SELECT u.id, e.email, IF(c.id IS NULL, 'no selected', c.name) AS country
FROM users u LEFT JOIN countries c ON u.country_id = c.id

Этот пост продвигает мои знания простых операторов mysql вперед :), означает ли это, что я могу создать ЛЮБОЙ "столбец" ??

Skuta 18.01.2009 18:04

Но вы не можете использовать этот новый столбец для выполнения операций или новых оценок ЕСЛИ ... или да?

Luis 01.06.2013 05:21

Вы можете использовать его для фильтрации строк. Вместо того, чтобы помещать условие в предложение WHERE, вы должны поместить его в HAVING claus: HAVING country = 'Germany', например.

marsbear 16.02.2015 15:38

SELECT только извлекает данные из базы данных, но не меняет саму таблицу.

Если вы напишете

SELECT a AS b FROM x

«b» - это просто псевдоним в запросе. Он не создает лишнего столбца. Ваш результат в примере будет содержать только один столбец с именем «b». Но столбец в таблице останется «а». «б» - это просто другое имя.

Я действительно не понимаю, что вы имеете в виду, говоря «чтобы я мог использовать это с каждым элементом позже». Вы имеете в виду позже в операторе select или позже в вашем приложении. Возможно, вы могли бы предоставить пример кода.

Ваш синтаксис создаст псевдоним для a as b, но его область действия не будет выходить за рамки результатов оператора. Похоже, вы можете захотеть создать ПОСМОТРЕТЬ

Попробуйте это, если вы хотите создать виртуальный столбец age в операторе select:

select brand, name, "10" as age from cars...

Хорошая уловка. Просто, но я никогда раньше этого не пробовал. Это было именно то, что мне было интересно! : D

Atomox 24.01.2012 22:12

Вот небольшой сложный трюк для работы с другими таблицами в том же запросе mysql: SELECT tpt. *, (SELECT COUNT (*) FROM places WHERE tpt.id = places.type) as obj_count FROM places_types as tpt ORDER BY tpt.name ASC LIMIT?,?

realmag777 23.01.2015 15:48

Это особенно хороший прием при создании объединений, когда полезно знать, из какой части объединения произошла строка. Просто вставьте в каждый выбор разные константы, определяющие, из какого блока была получена строка. И еще один миллион использует.

scott8035 22.10.2018 23:23

Вы можете добавить виртуальные столбцы как

SELECT '1' as temp

Но если вы попытаетесь поместить условие where в дополнительно сгенерированный столбец, он не будет работать и покажет сообщение об ошибке, поскольку столбец не существует.

Мы можем решить эту проблему, вернув результат sql в виде table.ie,

SELECT tb.* from (SELECT 1 as temp) as tb WHERE tb.temp = 1

Вы можете использовать оператор CASE, например

SELECT name
       ,address
       ,CASE WHEN a < b THEN '1' 
             ELSE '2' END AS one_or_two
FROM ...

Другие вопросы по теме