日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

問題背景

在業務開發中,經常遇到如下需求:從數據庫中查找符合一組條件的數據是否存在。結果也無非兩種狀態:“有”或者“沒有”。

模擬數據表

CREATE TABLE `user`  (  `id` bigint NOT NULL COMMENT 'id',  `userName` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_AI_ci NULL DEFAULT NULL COMMENT '用戶昵稱',  `userAccount` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '賬號',  `userAvatar` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用戶頭像',  `gender` tinyint NULL DEFAULT NULL COMMENT '性別',  `userRole` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'user' COMMENT '用戶角色:user / admin',  `userPassword` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '密碼',  `mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手機號',  `createTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',  `updateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',  `isDelete` tinyint NOT NULL DEFAULT 0 COMMENT '是否刪除',  PRIMARY KEY (`id`) USING BTREE,  UNIQUE INDEX `uni_userAccount`(`userAccount`) USING BTREE,  UNIQUE INDEX `uni_mobile`(`mobile`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用戶' ROW_FORMAT = Dynamic;

 

大多數人的寫法

SQL寫法


 
SELECT COUNT(*) FROM user WHERE gender = '女';

 

JAVA寫法

QueryWrApper<User> queryWrapper = new QueryWrapper();queryWrapper.eq("gender", '女');int countNum = userService.count(queryWrapper);if (countNum > 0) {    //...} else {    //...}

 

優化方案

在業務代碼中,根據一個或者一組條件,查詢記錄是否存在,并不關心記錄有多少條。

SQL寫法


 
SELECT 1 FROM user WHERE gender = '女' LIMIT 1;

 

Java寫法

QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.select("1")            .eq("gender", "女")            .last("LIMIT 1");User user = userMapper.selectOne(queryWrapper);if (user != null) {    //...} else {    //...}

 

拓展知識

SELECT 1 FROM user WHERE gender = '女' LIMIT 1; 解釋

這是一條SQL查詢語句,它的作用是從名為"用戶"(user)的表中選擇一個性別為女(gender = '女')的記錄,并且只返回第一條匹配項(LIMIT 1)。

具體而言,SELECT 1表示只需要返回一個值,因此并不會返回整個記錄。如果有多個符合條件的記錄,也只會返回第一條記錄。

在該表中,可能會包含其他字段,例如用戶名、密碼等等,但在此查詢中,我們只關心返回一個值,以便驗證表中是否存在至少一個女性用戶。

SELECT 1 和 LIMIT 1是否重復?

SELECT 1 和 LIMIT 1 不重復,它們之間有不同的作用。

SELECT 1 是一條 SQL 查詢語句,表示要選取表中的數據列或者返回一個常量。下面這個示例中,SELECT 1 返回了一個常量值 "1":


 
SELECT 1 FROM table;

 

常見的用途是檢查表是否存在或者用于查詢返回布爾值(true/false)。

LIMIT 1 也是一條SQL語句,用于限制查詢結果的返回行數。例如:


 
SELECT * FROM table LIMIT 1;

 

這將返回“table”表中的第一行(行號為1)。

因此,兩條語句具有不同的作用:SELECT 1可以返回一個常量值,而LIMIT 1則限制返回的行數,并不會返回任何特定的值。在某些情況下,可以將兩者組合使用,例如:


 
SELECT 1 FROM table WHERE id = 1234 LIMIT 1;

 

該查詢將返回id等于1234的記錄中的第一行,如果不存在則返回空結果集。

分享到:
標簽:查找 SQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定