Sql 分组
下表:Sql 分组,sql,oracle,Sql,Oracle,下表: +---+------------+-----------------------------+ | ID | A | B | C | +-----+------------+-------------+-------------+ | 1 | TRUE | FALSE | 123 | | 2 | FALSE | FALSE | 123 | |
+---+------------+-----------------------------+
| ID | A | B | C |
+-----+------------+-------------+-------------+
| 1 | TRUE | FALSE | 123 |
| 2 | FALSE | FALSE | 123 |
| 3 | FALSE | FALSE | 123 |
| 4 | FALSE | FALSE | 222 |
| 5 | TRUE | FALSE | 222 |
| 6 | FALSE | FALSE | 222 |
| 7 | FALSE | FALSE | 333 |
| 8 | FALSE | TRUE | 333 |
| 9 | FALSE | TRUE | 444 |
| 10 | FALSE | FALSE | 444 |
+-----+------------+-------------+-------------+
+-----+------------+-------------+-------------+
| ID | A | B | C |
+-----+------------+-------------+-------------+
| 1 | TRUE | FALSE | 123 |
| 5 | TRUE | FALSE | 222 |
| 8 | FALSE | TRUE | 333 |
| 9 | FALSE | TRUE | 444 |
+-----+--------------------------+-------------+
感谢您的帮助我想您希望实现
a
和B
之间的优先级。尝试不存在
和全部联合
SELECT ID, A, B, C FROM your_table WHERE A = 'True'
UNION ALL
SELECT ID, A, B, C FROM your_table WHERE B = 'True' AND NOT EXISTS
(
SELECT 1 FROM your_table t2 WHERE t2.ID = ID AND A = 'True'
)
是否要显示
A
或B
为'TRUE'
的记录?这有什么困难
select * from mytable where a = 'TRUE' or b = 'TRUE' order by c;
你的代码在哪里!到目前为止,您尝试了什么?PL/SQL是一种编程语言。这和你的问题有什么关系?请改为标记您的DBMS(Oracle、PostgreSQL、MySQL等)。列数据类型?数据库管理系统?Oracle支持布尔值吗<代码>。。。其中a或b@jarlh:No,Oracle SQL不支持
布尔值。并不是OP用Oracle标记了这个请求。我们不知道DBMS,也不知道这里的TRUE和FALSE是指布尔值还是字符串。我把它们理解为字符串,它在每个RDBMS中都可用:-)