Mysql中条件查询id结果为null,替换成0或者其他数字

条件查询的结果id的值为null,但是我们通常不希望用null,我们就会希望用一个数字去替换它

select user_id from sm_user where user_password = "111"  and user_phone = "111";


替换的方法是利用IFNULL

select  IFNULL((select user_id from sm_user where user_password = "111"  and user_phone = "111") ,0) ;












要让雪花ID替换自增ID,需要进行以下步骤: 1. 将自增ID字段替换为雪花ID字段 首先需要在表添加一个新的雪花ID字段,同时将自增ID字段删除。可以使用以下语句: ``` ALTER TABLE `table_name` ADD COLUMN `snowflake_id` BIGINT UNSIGNED NOT NULL FIRST, DROP COLUMN `id`, ADD PRIMARY KEY (`snowflake_id`); ``` 其,`table_name` 是表名,`snowflake_id` 是新的雪花ID字段名,`id` 是原来的自增ID字段名。 2. 创建存储过程自动生成雪花ID 接下来需要创建一个存储过程,用于自动生成雪花ID并将其插入到新的雪花ID字段。可以使用上面提到的雪花ID生成存储过程,例如: ``` DELIMITER $$ CREATE PROCEDURE `generate_snowflake_id`( OUT `id` BIGINT UNSIGNED ) BEGIN DECLARE `worker_id` INT UNSIGNED DEFAULT 1; DECLARE `data_center_id` INT UNSIGNED DEFAULT 1; DECLARE `timestamp` BIGINT UNSIGNED DEFAULT 0; DECLARE `sequence_id` BIGINT UNSIGNED DEFAULT 0; SELECT FLOOR(UNIX_TIMESTAMP()*1000) INTO `timestamp`; SELECT `sequence_id` INTO `sequence_id` FROM `snowflake_sequence` WHERE `id` = 1 FOR UPDATE; UPDATE `snowflake_sequence` SET `sequence_id` = `sequence_id` + 1 WHERE `id` = 1; SET `id` = `timestamp` << 22; SET `id` = `id` | (`data_center_id` << 17); SET `id` = `id` | (`worker_id` << 12); SET `id` = `id` | `sequence_id`; END$$ DELIMITER ; ``` 3. 创建触发器在插入数据时自动生成雪花ID 最后需要创建一个触发器,在插入数据时自动生成雪花ID并将其插入到新的雪花ID字段。可以使用以下语句: ``` DELIMITER $$ CREATE TRIGGER `table_name_insert` BEFORE INSERT ON `table_name` FOR EACH ROW BEGIN CALL generate_snowflake_id(@id); SET NEW.snowflake_id = @id; END$$ DELIMITER ; ``` 其,`table_name` 是表名,`snowflake_id` 是新的雪花ID字段名。 完成以上步骤后,就可以使用雪花ID替代自增ID进行数据插入了。需要注意的是,如果表已经有数据,需要在执行上述操作前备份数据,然后将数据导入到新表
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懒笑翻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值