![](/img/trans.png)
[英]Row to column transformation in MySQL version 8.0.17 using Pivot
[英]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
我需要:
database
中是否存在表,因為它可能尚未創建;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.