0

我是这个数据库的新手,我遇到了一个问题。我有一个查询,它返回多行作为输出。我想根据条件检查查询是否返回值。我正在使用 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';

它返回多行,但我想检查表中是否存在“材料”。

4

2 回答 2

1

如果表中存在该值,则以下查询将产生一个 1:

SELECT DISTINCT 1 FROM product_meta WHERE categorie_heading="material";

如果该列至少有一行包含“材料”,则返回 1,否则返回 null。

于 2013-09-27T13:12:42.980 回答
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
于 2013-09-27T14:12:23.810 回答