问题描述
我是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