MySQL SELECT только 1 поле с псевдонимом AS - PullRequest
9 голосов
/ 02 августа 2011

Я хотел бы выбрать все столбцы в таблице, но дать только один из них псевдоним.

У меня есть эта таблица:

id
base
window
thickness
shading
shape
... and many more columns

Теперь я хочу выбратьbase с псевдонимом, например: SELECT base AS structure.Но я хочу выбрать и все остальные поля, не вводя их все.

Я попытался SELECT *, base AS structure, но это выдает ошибку.

По правде говоря, это не такдаже действительно то, что я хочу, потому что я не хочу, чтобы base вообще появлялся.

Возможно ли это вообще?

Ответы [ 6 ]

10 голосов
/ 02 августа 2011

Нет, это не так.Смирись и набери их все:)

4 голосов
/ 02 августа 2011

номер

Вы либо перечисляете те, которые хотите, либо говорите «все», написав *.

Это два варианта в вашем распоряжении.

Лень: изыди! (И давайте посмотрим правде в глаза, если вам действительно нужен этот псевдоним, то, возможно, ваше поле, во-первых, названо неправильно ...)


В конечном счете, вы могли бы создать VIEW для прозрачного выполнения этой работы, но тогда вам придется обновлять его, как ALTER исходную таблицу.


Я пытался не обращать на это внимание, но этот ответ демонстрирует многократный путь:

SET @sql = CONCAT('SELECT ', (SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), '<columns_to_exclude>,', '') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<table>' AND TABLE_SCHEMA = '<database>'), ' FROM <table>');

PREPARE stmt1 FROM @sql;
EXECUTE stmt1;

(Замена <table>, <database> и <columns_to_exclude>).

Я хотел бы повторить, хотя: нет. Что-то не так, если вам нужно это сделать.

2 голосов
/ 21 марта 2013

Если вы не против иметь старое имя, вы можете сделать что-то вроде этого:

SELECT MyTable. *, Структура MyTable.base AS

2 голосов
/ 02 августа 2011

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

2 голосов
/ 02 августа 2011

может быть, есть лучший способ решить вашу проблему, по крайней мере, следующий ответ работает для вас, если вы не слишком ленивы:

SELECT id, базовая структура AS, окно, толщина, штриховка, форма ... из вашей таблицы

1 голос
/ 06 августа 2012

Неэффективно, но чисто, попробуйте соединить те же строки влево, затем выберите слева, чтобы объединить желаемый столбец с новым именем.

, т.е..

SELECT table_1.*, table_2.base AS structure 
SELECT 
    table_1.*, 
    table_2.base AS structure 
FROM 
    table1 AS table_1 
        LEFT JOIN table2 AS table_2 
            ON table_1.id=table_2.id
...