mysql - 如何在 sql 查询中替换 UNION

标签 mysql sql oracle sybase

我有一张表:attb

------------------------------------------------
Id | Name | Code | Attribute | Amount 
------------------------------------------------
1  | AV   | 123  | Alpha     | 233
------------------------------------------------
2  | TV   | 122  | Beta      | 235
------------------------------------------------
3  | TV   | 123  | Gama      | 238
------------------------------------------------
4  | CD   | 122  | Beta      | 239
------------------------------------------------
5  | TP   | 122  | Beta      | 240
------------------------------------------------
6  | RX   | 123  | Alpha     | 241
------------------------------------------------

我正在查询它:

select id,name, code, attribute, amount
from attb
where code = 123 and attribute='Alpha'
UNION
select id,name, code, attribute, amount
from attb
where code = 122;

它返回以下内容


Id | Name | Code | Attribute | Amount 
------------------------------------------------
1  | AV   | 123  | Alpha     | 233
------------------------------------------------
2  | TV   | 122  | Beta      | 235
------------------------------------------------
4  | CD   | 122  | Beta      | 239
------------------------------------------------
5  | TP   | 122  | Beta      | 240
------------------------------------------------
6  | RX   | 123  | Alpha     | 241
------------------------------------------------

有没有一种方法可以合并两个查询而不是使用 UNION 运算符?或任何更好的实现?

最佳答案

只需将两个 where 子句放在一个查询中:

select id,name, code, attribute, amount
from attb
where (code = 123 and attribute='Alpha') 
   or code = 122;

输出:

id  name  code  attribute  amount
1   AV    123   Alpha      233 
2   TV    122   Beta       235 
4   CD    122   Beta       239 
5   TP    122   Beta       240 
6   RX    123   Alpha      241 

SQLFiddle demo

关于mysql - 如何在 sql 查询中替换 UNION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290924/

相关文章:

mysql - 提高 pentaho 表输入步骤性能

php - 向 Mysql 数据库发送两个查询时出现问题

mysql - 如何仅在字段计数等于 1 的情况下从 sql 连接回填数据,同时维护先前连接的记录?

java - 具有重复 IN 参数的 SQL 查询性能

java - 尝试在 Java 应用程序中执行更多 MySql 查询时出现错误 S1000

php - MySQL 多列全文搜索未提供预期结果

mysql - 在数据库 id 用户创建和 date_created 上创建这些列是一个好习惯吗?

java - 将 java.util.date 与 java.sql.Time 合并

oracle - 时间表和 `max_failures` 属性

SQL 查询连接两个表的结果但还包括在另一个表中没有对应行的行?