我想获取列值不等于null且列值不等于默认值的记录。 我知道我们可以使用
SELECT * FROM table WHERE column_name is NOT NULL AND column_name != 'some_default_value';
但如果将来有人改变表中的some_default_value会怎样? 有灵活的解决方案吗?
答案 0 :(得分:2)
您可以使用DEFAULT
功能:
SELECT *
FROM table
WHERE IFNULL(column_name, DEFAULT(column_name)) <> DEFAULT(column_name);
答案 1 :(得分:0)
尝试使用rows.count,它可以帮助您了解表是否为null或因此包含相同的值。
答案 2 :(得分:0)
您可以使用MySQL中的DEFAULT function:
SELECT * FROM grouptable WHERE column_name is NOT NULL and column_name <> DEFAULT( column_name )
答案 3 :(得分:0)
您可以使用 information_schema.COLUMNS 表来查找默认值,包括表格的所有定义。
样本表
/// <reference path="./node_modules/@types/lodash/index.d.ts" />
console.log(_);
表的原始数据
CREATE TABLE `Matches` (
`FootballerName` varchar(100) DEFAULT NULL,
`Goal` int(11) DEFAULT '5',
`Tournament` varchar(100) DEFAULT NULL
) ;
要求达到所需的查询。
insert into Matches(FootballerName,Goal,Tournament)
select 'Messi ', 3 ,'La liga' union
select 'Ronaldo ', 5 ,'UEFA' union
select 'Surez ', 2 ,'La liga';
您可以详细了解“information_schema.COLUMNS” here