SQL - 如果存在不适用于 Select 语句?

Posted

技术标签:

【中文标题】SQL - 如果存在不适用于 Select 语句?【英文标题】:SQL - If exists does not work with Select Statements? 【发布时间】:2021-04-16 15:17:01 【问题描述】:

当我添加IF EXISTS 以检查以下查询中是否存在任何记录时,我没有得到任何输出。在删除 IF EXISTS 时,查询工作正常。我不确定是什么问题

I am only trying to check if there are any records present, if yes display them

查询

async getData() 
        try 
            const data = await this._conn.query(`

IF EXISTS(select first_name.value_name,quiz_table.answer, windows,player,first_name.value_id,country_place,current_name, pet_name, marker, relations
from schema_name.plugin,schema_name.quiz_table,schema_name.first_name, schema_name.value_version, schema_name.relationss
where (plugin.answer= quiz_table.answer
and quiz_table.windows=first_name.value_id
and marker is not null
and schema_name.value_version.value_id= schema_name.first_name.value_id
and schema_name.value_version.caste= schema_name.first_name.caste
and schema_name.value_version.value_name= schema_name.first_name.value_name
and schema_name.value_version.version_number= schema_name.first_name.version_number
and schema_name.relationss.value_id= schema_name.first_name.value_id
and schema_name.relationss.caste= schema_name.first_name.caste
and schema_name.relationss.value_name= schema_name.first_name.value_name))
limit 1;)

【问题讨论】:

IF 语句只能用于复合语句(过程、触发器等)。 好的,我还能在这里使用什么?我有 2 个选择语句。我正在寻找 if - else 类型的逻辑,如果数据存在,则从任何 1 选择中显示 我只是想检查是否有任何记录存在 SELECT EXISTS (subquery). ***.com/questions/5528854/usage-of-mysqls-if-exists 您有两个 *** 用户?为什么???至于你想要什么,只需将IF 放在你的应用程序代码中,而不是SQL。 【参考方案1】:

只需使用查询来选择数据,所以开始

SELECT first_name.value_name, quiz_table.answer, ...

没有IF EXISTS,并且按照cmets 中@MatBailie 的建议,在您的应用程序代码中使用if-else 语句,检查查询返回的结果集的内容。 然后显示数据(如果存在)。

例如,在 php 中:

$query = "select first_name.value_name,quiz_table.answer, windows,player,first_name.value_id,country_place,current_name, pet_name, marker, relations
        from schema_name.plugin,schema_name.quiz_table,schema_name.first_name, schema_name.value_version, schema_name.relationss
        where plugin.answer= quiz_table.answer
        and quiz_table.windows=first_name.value_id
        and marker is not null
        and schema_name.value_version.value_id= schema_name.first_name.value_id
        and schema_name.value_version.caste= schema_name.first_name.caste
        and schema_name.value_version.value_name= schema_name.first_name.value_name
        and schema_name.value_version.version_number= schema_name.first_name.version_number
        and schema_name.relationss.value_id= schema_name.first_name.value_id
        and schema_name.relationss.caste= schema_name.first_name.caste
        and schema_name.relationss.value_name= schema_name.first_name.value_name
";
$resultset = mysqli_query($conn, $query);

// error checking code ...

if ($resultset->num_rows > 0)   // here is where you check the IF EXISTS
    // display data ...

【讨论】:

以上是关于SQL - 如果存在不适用于 Select 语句?的主要内容,如果未能解决你的问题,请参考以下文章

HSQLDB - 可更新语句不适用于“SELECT TOP”或“ORDER BY”

MSSql - 选择语句不适用于所有列

SQL SELECT 查询不适用于电子邮件地址

针对 Access 2010 DB 的 SQL 语句不适用于 ODBC

准备好的语句适用于 INSERT 但不适用于 SELECT

sql 脚本适用于 MySQL,但不适用于 google bigquery