我是这个数据库的新手,我遇到了问题。 我有一个查询返回多行作为输出。我想根据条件检查查询是否返回值。我正在使用MySQL和存储过程。
CREATE PROCEDURE getSearchFilter(IN searchname varchar(220),categoryid int, categoryheading varchar(220),catdiscription varchar(220))
DETERMINISTIC
BEGIN
if SELECT IF( EXISTS(SELECT distinct categorie_heading FROM product_meta_data WHERE categorie_heading='material'), 1, 0) then
//code
else
//code
end if;
END
SELECT distinct categorie_heading FROM product_meta_data WHERE categorie_heading='material';
它返回多行,但我想检查表中是否存在'material'。
答案 0 :(得分:1)
如果表中存在值,则以下查询将产生一个1:
SELECT DISTINCT 1 FROM product_meta WHERE categorie_heading="material";
如果列中至少有一行包含'material',则返回1,否则返回null。
答案 1 :(得分:0)
您正在检查条件,然后在不检查条件的情况下选择所有内容。如果您想要退出或不使用它:
CREATE PROCEDURE getSearchFilter(IN searchname varchar(220),categoryid int, categoryheading varchar(220),catdiscription varchar(220))
DETERMINISTIC
BEGIN
if SELECT IF( EXISTS(SELECT distinct categorie_heading FROM product_meta_data WHERE categorie_heading='material'), 1, 0) then
SELECT 'True'
else
SELECT 'False'
end if;
END
如果您想查看结果是否存在,请按以下方式使用:
CREATE PROCEDURE getSearchFilter(IN searchname varchar(220),categoryid int, categoryheading varchar(220),catdiscription varchar(220))
DETERMINISTIC
BEGIN
if SELECT IF( EXISTS(SELECT distinct categorie_heading FROM product_meta_data WHERE categorie_heading='material'), 1, 0) then
SELECT distinct categorie_heading FROM product_meta_data WHERE categorie_heading='material';
else
//you can select a value here or not
end if;
END