Если я выберу SELECT a AS b, а b не является столбцом в таблице, будет ли запрос создать «виртуальный» столбец?
Фактически, мне нужно включить в запрос какой-то виртуальный столбец и обработать некоторую информацию в запросе, чтобы я мог использовать его с каждым элементом позже.
Представьте себе запрос как массив строк и столбцов. Обычно я просто наследую столбцы из структуры таблицы простым SELECT * FROM, но теперь мне нужно вставить в него свой собственный столбец.
может вам стоит взять один посмотреть документацию ..






Что-то вроде:
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 вперед :), означает ли это, что я могу создать ЛЮБОЙ "столбец" ??
Но вы не можете использовать этот новый столбец для выполнения операций или новых оценок ЕСЛИ ... или да?
Вы можете использовать его для фильтрации строк. Вместо того, чтобы помещать условие в предложение WHERE, вы должны поместить его в HAVING claus: HAVING country = 'Germany', например.
SELECT только извлекает данные из базы данных, но не меняет саму таблицу.
Если вы напишете
SELECT a AS b FROM x
«b» - это просто псевдоним в запросе. Он не создает лишнего столбца. Ваш результат в примере будет содержать только один столбец с именем «b». Но столбец в таблице останется «а». «б» - это просто другое имя.
Я действительно не понимаю, что вы имеете в виду, говоря «чтобы я мог использовать это с каждым элементом позже». Вы имеете в виду позже в операторе select или позже в вашем приложении. Возможно, вы могли бы предоставить пример кода.
Ваш синтаксис создаст псевдоним для a as b, но его область действия не будет выходить за рамки результатов оператора. Похоже, вы можете захотеть создать ПОСМОТРЕТЬ
Попробуйте это, если вы хотите создать виртуальный столбец age в операторе select:
select brand, name, "10" as age from cars...
Хорошая уловка. Просто, но я никогда раньше этого не пробовал. Это было именно то, что мне было интересно! : D
Вот небольшой сложный трюк для работы с другими таблицами в том же запросе 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?,?
Это особенно хороший прием при создании объединений, когда полезно знать, из какой части объединения произошла строка. Просто вставьте в каждый выбор разные константы, определяющие, из какого блока была получена строка. И еще один миллион использует.
Вы можете добавить виртуальные столбцы как
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 ...
Я прочитал этот вопрос несколько раз и должно быть что-то упустил. Не могли бы вы уточнить, что именно вы ищете?