选择MySQL中具有公共开始短语的所有字段

时间:2014-10-22 00:59:36

标签: mysql

我在MySQL中有一个包含77个字段的表。相当多的人都以相同的前缀“mt3_”开头。 我想使用这种语法只选择表中以“mt3 _”开头的那些字段,而不是全部写出来:

SELECT tablename.mt3_* from tablename;

但是这不起作用......这样做的正确语法是什么?

感谢。

2 个答案:

答案 0 :(得分:1)

您无法直接执行此操作,但您可以向MySQL询问该表中的列名称,并在%语句中使用通配符WHERE进行过滤,如下所示;

SELECT column_name FROM information_schema.columns 
WHERE table_name = 'tablename'
AND column_name LIKE 'mt3_%'

然后你可以用这些结果循环运行另一个查询(我猜你正在使用PHP和mysqli);

while($row = $result->fetch_assoc()) {
     $cols[] = $row['column_name'];
}

$colnames = explode(",",$cols);

$sql = "SELECT $colnames FROM tablename"

希望这有帮助。

答案 1 :(得分:1)

没有动态SQL就没有办法做到这一点,说实话,我不建议做这样的事情。

如果您只关心SELECT某些字段,那么您也可能对最佳做法非常关注,并且best practice指定所有您想要的字段 SELECT查询。

使用SELECT *进行单次快速检索。如果你实际上正在编写某些内容,那么请花时间指定你想要的字段。