没有指定值的MYSQL SELECT数据

时间:2015-12-22 13:03:25

标签: php mysql codeigniter

我想从包含排除字段列表的表中选择一些数据。

public function get_columns($table, $excluded_columns = 'id, deleted')
{
    $this->db->select('column_name');
    $this->db->from("information_schema.COLUMNS");
    $this->db->where('TABLE_SCHEMA', $this->db->database);
    $this->db->where('TABLE_NAME', $table);
    $this->db->where('COLUMN_KEY !=', 'MUL');
    $result = $this->db->get()->{$this->_return_type(1)}();
    $result = array_column($result, 'column_name');

    return $result;
}

在我的示例中,我希望所有column_name都没有id并被删除,那么如何选择没有指定值的数据呢?

3 个答案:

答案 0 :(得分:1)

如果对一个表使用此函数,则可以生成存在字段的数组:

$fields = ['id', 'deleted', 'xxx', 'yyy', 'zzzz'] 

并将函数排除在列数组

之外
$excluded_columns = ['id', 'deleted'].

要获取要使用的字段

$tmp_fields = array_diff[$fields, $excluded_fields]
查询中的

选择解析$tmp_fields

答案 1 :(得分:0)

我无法告诉你它的正确方法。但我可以在核心中做到:

/* Get the data into a temp table */
SELECT * INTO #TempTable
FROM YourTable
/* Drop the cloumns that are not needed */
ALTER TABLE #TempTable
DROP COLUMN ColumnToDrop
/* Get results and drop temp table */
SELECT * FROM #TempTable
DROP TABLE #TempTable

所以让我知道你的想法

答案 2 :(得分:0)

如果我理解正确您需要做的就是添加您不希望看到结果的列名,以便像这样查询

public function get_columns($table, $excluded_columns = 'id, deleted')
{
    $this->db->select('column_name');
    $this->db->from("information_schema.COLUMNS");
    $this->db->where('TABLE_SCHEMA', $this->db->database);
    $this->db->where('TABLE_NAME', $table);
    $this->db->where('COLUMN_KEY !=', 'MUL');

    // 2 new criteria added 
    $this->db->where('COLUMN_NAME !=', 'id');
    $this->db->where('COLUMN_NAME !=', 'deleted');

    $result = $this->db->get()->{$this->_return_type(1)}();
    $result = array_column($result, 'column_name');

    return $result;
}