我想检查行数是否等于 10 且值相同。 我这样插入值
INSERT test (value) SELECT 'AAA' AS value FROM seq_1_to_10;
我想检查sql中的值的数量是否等于10行,但我想在mariadb中
DO \$\$ DECLARE cp int; BEGIN SELECT count(*) INTO cpt FROM test WHERE value = 'AAA'; IF cpt != 10 THEN RAISE 'cpt'; END IF; END \$\$;
我正在寻找 mariadb 中的等效查询
我遇到了这个错误:
您的 SQL 语法有错误;检查手册 对应于您的 MariaDB 服务器版本,以便使用正确的语法 靠近 '$$ DECLARE cp int; BEGIN SELECT count(*) INTO cpt FROM 测试 WHERE value = '...' 在第 1 行
除非您禁用了序列存储引擎,否则您的插入将按原样工作。
您也可以使用递归 cte:
insert test (value)
with recursive c as (select 1 value union select value+1 from c where value < 10)
select 'AAA' from c
如果你想先检查现有行数,你确实需要一个复合语句,但你的语法不正确;这是一个示例,请调整以适应:
BEGIN NOT ATOMIC
DECLARE c int default 10;
SET c = c - (select count(*) from test);
WHILE c > 0 DO
INSERT test (value) VALUES ('AAA');
SET c = c - 1;
END WHILE;
END
您想如何进行测试? 在应用程序中? 在存储过程中?
您想要 10 个吗? 10个或更多?
在存储过程中:
SELECT COUNT(*) INTO @ct FROM test WHERE val = 'AAA';
IF (@ct = 10) THEN
...
ENDIF
在应用程序中:
...("SELECT COUNT(*) FROM test WHERE val = 'AAA'); # perform the query
... get the one row of output into $ct
if ($ct == 10) ...