2013-12-23 3 views
1

есть ли способ «ВЫБРАТЬ *», но конкретный для таблицы?php mysql SELECT автоматически определяет все поля в таблице?

, например, я два присоединились таблицы, которые содержат как поле «тест»

SELECT 
    tableA.test AS tableA_test, 
    tableB.test AS tableB_test 
    ... repeat for a lot of duplicate column names 
FROM 
    tableA JOIN tableB 

я просто хочу сделать

SELECT 
    tableA.* AS prefix_column('tableA_', *), 
    tableB.* AS prefix_column('tableB_', *) 
FROM 
    tableA JOIN tableB 

есть способ для достижения этой цели?

Я использую PHP с MySQLi, друг сказал мне использовать fetch_array(), но я понятия не имею, что он имел в виду

в надежде, что было ясно ... :)

С Рождеством и с новым годом!

+1

Нет, для выравнивания по таблице нет стенограммы. Как правило, вы не должны «SELECT *» в производственном коде в любом случае - лучше всего указывать нужные столбцы. –

+0

* Любознательный *; применимо ли это к любому запросу, даже если оно не связано с алиасом или связано с JOIN? @MichaelBerkowski –

+0

@ Fred-ii- Что применимо, мой совет против 'SELECT *'? Я бы так сказал. Обычно Frameworks это делают, но если вы используете кодирование SQL, я бы это избегал. –

ответ

1

В запросе нет способа делать то, что вы хотите.

Но вы можете легко создавать имена столбцов, а затем вставить их в запрос:

select concat('tableA.', column_name, ' as tableA_', column_name, ', ') 
from Information_Schema.columns c 
where table_name = 'tableA'; 

Результаты являются имена, которые вы хотите, вы можете вставить их в запросе.

Смежные вопросы