如何检查数据库表中是否存在元素?

时间:2013-09-27 13:07:41

标签: mysql sql

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

2 个答案:

答案 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