我想爲列值提取不等於空值和列值不等於默認值的記錄。 我知道,我們可以使用如何檢查列值是否爲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功能。 –