【问题标题】:exclude certain items from fields in mysql从 mysql 中的字段中排除某些项目
【发布时间】:2012-06-28 17:44:38
【问题描述】:

假设您想要获取表的所有列,但排除名称中包含例如 _images 的列,而不必这样做

mysql_query("SHOW COLUMNS FROM " . $table. " WHERE Field NOT IN ('project_images_1' .etc)")

这可能吗?

字段示例:

header
bodytext
project_images_1 (exclude)
project_images_2 (exclude)

【问题讨论】:

  • 你知道MySQL支持子查询吗?还可以考虑将mysqli_* 函数用于新代码。
  • 例子?对于这种事情

标签: php dynamic selection field


【解决方案1】:

是的,这是可能的。我可以使用LIKE 运算符来做到这一点:

SHOW COLUMNS FROM $table WHERE NOT Field LIKE '%_images%';

或者,如果您需要更多控制,这可能会有所帮助:

$query = <<<SQL
SHOW COLUMNS FROM $table WHERE Field NOT IN (
    SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS
    WHERE table_name = $table
    AND column_name LIKE 'project_images_%'
);
SQL;

这可以通过在a so called subquery 中使用information schema tables(也许这就是您要寻找的东西)来工作。

相关:

【讨论】:

  • 在第二个例子中你给出了为什么需要再次选择列名'SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS'
  • 这需要返回一个每行一列的结果集,否则IN 将不起作用。并且该列自然需要是列名,否则IN 将没有任何意义。
猜你喜欢
  • 2019-05-12
  • 1970-01-01
  • 2011-11-21
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多