簡體   English   中英

語法 SELECT EXISTS 使用 MySql 版本 8.0.17

[英]Syntax SELECT EXISTS using MySql version 8.0.17

在表do_table中存儲了一個數據庫MySql version 8.0.17我有這些行

+----+-------------------------+-----+
| ts | tt                      | tID |
+----+-------------------------+-----+
|  1 | t_contents_11111_2_2021 |   1 |
|  0 | t_contents_2222_2_2021  |   2 |
|  1 | t_contents_3333_2_2021  |   3 |
+----+-------------------------+-----+

使用SQL我需要:

  1. 檢查database中是否存在表,因為它可能尚未創建;
  2. 如果ts字段等於zero ,@t 的返回值應該是zero ,否則@t的返回@t應該是one

SQL查詢下方

mysql> SELECT EXISTS
    ( SELECT @t := tt, 
      CASE WHEN ts = 0 THEN 0 
      ELSE 1 END
      FROM `do_table` WHERE tt = 't_contents_2222_2_2021') AS COUNT INTO @t;
    
SELECT
    @t;
Query OK, 1 row affected (0.00 sec)

+----+
| @t |
+----+
|  1 |
+----+
1 row in set (0.01 sec)

@t的返回總是one ......無論行得到......

-- ----------------------------
-- Table structure for do_table
-- ----------------------------
DROP TABLE IF EXISTS `do_table`;
CREATE TABLE `do_table`  (
  `ts` int(11) DEFAULT NULL,
  `tt` varchar(255) DEFAULT NULL,
  `tID` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`tID`) USING BTREE
) ENGINE = InnoDB;

-- ----------------------------
-- Records of do_table
-- ----------------------------
INSERT INTO `do_table` VALUES (1, 't_contents_11111_2_2021', 1);
INSERT INTO `do_table` VALUES (0, 't_contents_2222_2_2021', 2);
INSERT INTO `do_table` VALUES (1, 't_contents_3333_2_2021', 3);

對於表創建,您可以使用IF NOT EXISTS

CREATE TABLE IF NOT EXISTS`do_table`  (
  `ts` int(11) DEFAULT NULL,
  `tt` varchar(255) DEFAULT NULL,
  `tID` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`tID`) USING BTREE
) ENGINE = InnoDB;

對於查詢,您可以執行以下操作:

SELECT IF(ts=0, 0, 1) INTO @t
FROM `do_table` 
WHERE tt = 't_contents_2222_2_2021';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM