我想从包含排除字段列表的表中选择一些数据。
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并被删除,那么如何选择没有指定值的数据呢?
答案 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;
}