我需要在更改表之前检查列是否存在的mysql脚本(不是存储过程)。
答案 0 :(得分:2)
SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'my_table' AND COLUMN_NAME = 'my_column'
如果以上返回0行,那么,您知道该列不存在。
答案 1 :(得分:2)
试试这个
SELECT *
FROM information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'db_name'
AND TABLE_NAME = 'table_name'
AND COLUMN_NAME = 'column_name'
答案 2 :(得分:1)
你可以这样做
SHOW columns from `yourtable` where field='yourfield'
答案 3 :(得分:1)
您可以检索字段的存在...
SELECT *
FROM information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'your_db_name'
AND TABLE_NAME = 'your_table_name'
AND COLUMN_NAME = 'your_column_name'
...但您无法根据结果添加ALTER
语句。 SQL就是做不到。
这种逻辑的位置是存储过程或应用程序语言。
答案 4 :(得分:0)
试试这个
function add_column_if_not_exist($db, $column, $column_attr ="VARCHAR(255) NULL")
{
$exists = false;
$columns = mysql_query("show columns from $db");
while($c = mysql_fetch_assoc($columns)){
if($c['Field'] == $column){
$exists = true;
break;
}
}
if(!$exists){
mysql_query("ALTER TABLE `$db` ADD `$column` $column_attr");
}
}