我正在尝试检查天气列是否存在
IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tb_consumer' AND COLUMN_NAME='businness_id' > 0 ) THEN
PRINT 'test'
上面的sql有什么问题?
您的 SQL 语法有误;请查看与您的 MySQL 服务器版本对应的手册,了解在 'IF 附近使用的正确语法(从 INFORMATION_SCHEMA 中选择 COUNT(*)。列 其中 TABLE_NAME = 第 1 行的"tb_consu"
SQL 的新手。感谢您的任何帮助,
MySql 的版本是 5.X
您可以通过移动结束括号来修复查询:
IF (SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tb_consumer' AND COLUMN_NAME = 'businness_id'
) > 0 THEN
PRINT 'test'
编写条件的更好方法是使用 exists
:
IF EXISTS (SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tb_consumer' AND COLUMN_NAME = 'businness_id'
) THEN
如果您尝试将其用作存储过程的一部分,则可以查看 mysql 文档中的 if 语句
如果将其作为普通查询的一部分执行,则可以将其编写为:
SELECT IF (COUNT(*) > 0, 'TEST, 'TEST FAILED') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tb_consumer' AND COLUMN_NAME='businness_id'
我建议在MYSQL中使用CASE语句
SELECT CASE
WHEN COLUMN_NAME = 'businness_id' then 'TEST'
END
from FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tb_consumer'
案例语句在较小的数据库上更快
SQL 命令不是布尔函数。因此,您需要检查该值。
喜欢这个:
IF (SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tb_consumer' AND COLUMN_NAME='businness_id') >= 0
THEN PRINT 'test'