我有一个 mySQL 数据库,我想知道我是否可以选择列,而不是通过它们的名称,而是通过它们在表中的位置。
假设我有一个包含以下列的表格(混合英语和法语数据):
id
en_name
en_phone
en_address
fr_name
fr_phone
fr_address
但这只是为了演示目的,我的真实表有 20 个英语和 20 个法语列。
是否可以选择所有英语或所有法语列而不在 SELECT
中列出它们的名称?
如果这不可能,最好的做法是什么?
最佳答案
使用标准 SQL,答案是否定的。没有像这样的结构:
select fr_*
获取所有以 fr_
开头的列。
您可以使用动态 SQL(准备好的语句)来生成您想要的 SQL。您可以使用 View 仅选择英语或法语列。您可以存储数据,使列位于不同的行上,并且您有一个语言标识符,用于选择。在某些数据库中,您可以使用存储过程仅返回所需的列。
但是,仅使用 SQL 查询,您没有那种灵 active 。
编辑:
您可以创建如下 View :
create view table_fr as
select id, fr_name, fr_phone, fr_address
from t;
不过,最佳做法是将语言存储为单独的列:
id
Language
Name
Phone
Address
并将单个 id
的数据拆分为多行,每种语言一行。您可能有另一个表,用于存储有关 ID 的语言独立信息。
关于mysql - SQL Select 基于列的位置。是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17511851/