【问题标题】:SQL - How can I combine Select Statements?SQL - 如何组合选择语句?
【发布时间】:2021-07-11 13:51:05
【问题描述】:

有没有办法在两个 Select 语句之间应用Logical Operator -> OR

我对@9​​87654325@ 的其他解决方案持开放态度。

If there is no data in 1st Select then goto next Select

例子

SELECT column1, column2
  FROM table-name1 JOIN table-name2 
    ON column-name1 = column-name2
 WHERE //all condition

SELECT column3, column4
  FROM table-name3 JOIN table-name4 
    ON column-name3 = column-name4
 WHERE //all condition

条件 1/查询 1

async getData() {
        try {
            const data = await this._conn.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
and schema_name.relationss.version_number= schema_name.first_name.version_number
and  schema_name.quiz_table.windows= schema_name.first_name.value_id
and in_process='N'
}

条件 2/查询 2 - 显示数据

select schema_name.relationss."relations", schema_name.quiz_table."answer", schema_name.quiz_table."windows", schema_name.quiz_table."in_process", schema_name.quiz_table."object_name", schema_name.quiz_table."processed_date", schema_name.quiz_table."player", schema_name.quiz_table."country_place", schema_name.tools."mesh_scope_note", schema_name.plugin."current_name", schema_name.plugin."pet_name"
            from schema_name.quiz_table, schema_name.tools, schema_name.plugin, schema_name.relationss, schema_name.value_version 
            where (in_process = 'N' 
              and schema_name.quiz_table."windows" = schema_name.tools."value_id"
              and schema_name.quiz_table."player" = schema_name.tools."language"
              and schema_name.quiz_table."answer" = schema_name.plugin."answer"
              and schema_name.relationss."language" = schema_name.quiz_table."player"
              and schema_name.relationss."language" = schema_name.tools."language"
              and schema_name.relationss."caste" = schema_name.tools."caste"
              and schema_name.relationss."value_name" = schema_name.tools."value_name"
              and schema_name.relationss."version_number" = schema_name.tools."version_number"
              and schema_name.relationss."value_id" = schema_name.tools."value_id"
              and schema_name.value_version."value_id" = schema_name.tools."value_id"
              and schema_name.value_version."version_number" = schema_name.tools."version_number"
              and schema_name.value_version."caste" = schema_name.tools."caste"
)

注意- 在WHERE 子句中,Select 有不同的条件

【问题讨论】:

  • 步骤 1) 切换到显式 JOIN 语法。
  • 近 30 年前,JOIN 关键字的语法被采用为标准 (ANSI-92)停止使用,隐式连接表,已经过时了三个十年。
  • edit您的问题显示一些示例数据和所需的结果。请考虑提供minimal reproducible example,以便我们为您提供更好的帮助。
  • 对不起,我不知道您所说的 逻辑运算符 -> OR 在 2 个 Select 语句之间 是什么意思。 SQL 基本上是一种集合处理语言:您的两个 SELECT 操作返回不同的行集。对您来说,将 OR 运算应用于这些不同的集合意味着什么?请edit您的问题或提出其他问题。
  • 请不要将问题编辑为与最初的根本不同。它使 cmets 和答案无效,当人们将来回顾这个问题时,这会造成混乱。相反,提出一个新问题来反映您的新需求。

标签: mysql sql join select


【解决方案1】:

一个简单的方法是union allexists——好吧,假设这两个选择返回相同的列:

with cte as (
      select . . .
     )
select *
from cte
union all
select *
from t2
where not exists (select 1 from cte);

【讨论】:

  • 嗨,戈登,我在NOTE 中提到过SELECT has different conditions-> columns are different
  • @AAama 。 . .您的问题暗示where 子句使用不同的列,而不是select。其实很清楚。
  • 我已经添加了实际代码,希望对您有所帮助。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多