如何解决如何根据三种条件检索记录?
我是HQL的新手。我需要使用HQL / SQL查询基于以下2个条件从表A中获取所有记录: 满足这两个条件“(音乐
下表:
[
[
[
如何根据这三个条件来获取这些记录。有人可以帮我吗。
输出应为
表A中ID为100的记录,因为其位置和值为'A'和'AA'。此外,它还具有音乐和舞蹈技能,音乐值大于100,并且舞蹈值不像“正常”
解决方法
select
*
from a
inner join b as music on a.id = music.person_id and music.skills = 'Music'
inner join b as dance on a.id = dance.person_id and dance.skills = 'Dance'
inner join c on a.id = c.id
where c.place = 'A' and c.country = 'AAA'
and music.score < '100'
and dance.score <> 'Normal'
尝试使用少于“ score”列(文本而非数字)时会遇到问题,请参见下面的测试用例
CREATE TABLE mytable( Value VARCHAR(6) NOT NULL PRIMARY KEY ); INSERT INTO mytable(Value) VALUES ('100'); INSERT INTO mytable(Value) VALUES ('a'); INSERT INTO mytable(Value) VALUES ('aa'); INSERT INTO mytable(Value) VALUES ('bbb'); INSERT INTO mytable(Value) VALUES ('cccc'); INSERT INTO mytable(Value) VALUES ('99'); INSERT INTO mytable(Value) VALUES ('9'); INSERT INTO mytable(Value) VALUES ('1'); INSERT INTO mytable(Value) VALUES ('19');
select * from mytable where value < '100'
| value | | :---- | | 1 |
select * from mytable where value > '100'
| value | | :---- | | a | | aa | | bbb | | cccc | | 99 | | 9 | | 19 |
select * from mytable where cast(value as integer) > 100
ERROR: invalid input syntax for integer: "a"
db 提琴here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。