使用通配符选择以 XXX 开头的所有列?

2022-08-30 16:39:00

我的数据库中有几列具有相似名称。如何根据开头的单词选择它们?下面是一个示例表格布局:enter image description here

我尝试使用特定事物(本例中为食物种类)选择所有信息

$Food = "Vegetable"; 
mysql_query("SELECT `" . $Food . " %` FROM `Foods`");

但它似乎没有工作。

任何帮助将不胜感激:-)

编辑:显然,从我的例子中看不出这一点,但我已经知道所有专栏的第一个单词。列始终相同,并且不会添加或删除任何“食物种类”。PHP变量仅用于确定我需要的几种集合中的哪一种。


答案 1

您必须动态构建 SQL。作为起点,这将为您提供所需的列名称。

SELECT COLUMN_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE table_name = 'Foods'
        AND table_schema = 'YourDB'
        AND column_name LIKE 'Vegetable%'

答案 2

没有办法完全按照你想要做的事情去做。您可以先执行另一个查询来获取所有列名称,然后在PHP中处理它们并构建第二个查询,但这可能比仅仅写出所需的名称更复杂。

或者,此查询是否需要动态查询?表的结构会经常更改吗?


推荐