現有乙個含三個欄位的使用者表,id/email/mobile, id是自動遞增的,不具有重複性。當email和mobile有乙個重複時即認為是同乙個user, 請用一種方法查詢表中實際有幾個user?
--樣例資料
create table tb_test(
id int ,
email varchar(10),
mobile varchar(20)
);truncate table tb_test;
insert into tb_test values(1, 'a','e');
insert into tb_test values(2, 'b','d');
insert into tb_test values(3, 'c','d');
insert into tb_test values(4, 'c','a');
insert into tb_test values(5, 'd','b');
insert into tb_test values(6, 'e','a');
insert into tb_test values(7, 'e','f');
insert into tb_test values(8, 'e','e');
-- 正確答案: 2個
解法:
-- 正解
select count(distinct email)+count(distinct mobile)-count(distinct concat(email,mobile)) from tb_test;
--但乙個特殊情況:就是=0的情況下要+1(見下圖)
-- 我的解法:底層思路一致
sql語句題集
15 顯示所有雇員的姓名,用a替換所有 a select replace ename,a a from emp 16 顯示所有雇員的姓名以及滿10年服務年限的日期 select ename,from days to days now to days hiredate 服務年限 from emp se...
SQL刷題心得
題目 給定乙個 salary 表,如下所示,有 m 男性 和 f 女性 的值。交換所有的 f 和 m 值 例如,將所有 f 值更改為 m,反之亦然 要求只使用乙個更新 update 語句,並且沒有中間的臨時表。update 表名稱 set 列名稱 新值 where 列名稱 某值 update sal...
演算法 常見演算法題
演算法題 假如有100個不相同的數,比如從1到100,怎樣使用10次取出其中的10個不同的數字,要求每個數取出的概率一樣 一開始沒有說10次,所以我說,使用乙個random函式,以時間為種子來取,當取出乙個時,做標記,下次再取到這個數時,重新取一次 然後他就說了如果只能夠取10次怎麼辦?一開始我想到...