我想为列值提取不等于空值和列值不等于默认值的记录。 我知道,我们可以使用如何检查列值是否为NULL或在Mysql中有DEFAULT值
SELECT * FROM table WHERE column_name is NOT NULL AND column_name != 'some_default_value';
但如果有一个人在未来的变化这some_default_value表? 有灵活的解决方案吗?
我想为列值提取不等于空值和列值不等于默认值的记录。 我知道,我们可以使用如何检查列值是否为NULL或在Mysql中有DEFAULT值
SELECT * FROM table WHERE column_name is NOT NULL AND column_name != 'some_default_value';
但如果有一个人在未来的变化这some_default_value表? 有灵活的解决方案吗?
可以使用DEFAULT
功能:
SELECT *
FROM table
WHERE IFNULL(column_name, DEFAULT(column_name)) <> DEFAULT(column_name);
尝试使用rows.count,这将有助于你知道,如果该表为空或因此含有相同的值。
你可以在MySQL中使用的DEFAULT function:
SELECT * FROM grouptable WHERE column_name is NOT NULL and column_name <> DEFAULT(column_name)
您可以使用INFORMATION_SCHEMA.COLUMNS表中查找默认值,包括表的所有定义。
样品表
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';
所需的查询,以达到所需。
SELECT * FROM Matches WHERE Goal not in(
select COLUMN_DEFAULT from information_schema.COLUMNS where TABLE_NAME='Matches'
and COLUMN_NAME='Goal');
你可以阅读更多有关“INFORMATION_SCHEMA.COLUMNS”here
今天学到更多1功能。 –