我在MySQL中有一个包含77个字段的表。相当多的人都以相同的前缀“mt3_”开头。 我想使用这种语法只选择表中以“mt3 _”开头的那些字段,而不是全部写出来:
SELECT tablename.mt3_* from tablename;
但是这不起作用......这样做的正确语法是什么?
感谢。
答案 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 *
进行单次快速检索。如果你实际上正在编写某些内容,那么请花时间指定你想要的字段。