我在PostgreSQL(版本9.3)中有两个表。第一个包含id,title,第二个包含schdname。我试图创建一个select语句来检索id和title,其中title包含来自另一个表的schdname。 id,title表可以容纳几千行。如果我使用WHERE LIKE作为单独的schdname示例,但我有40个以上的名称,所以这是不切实际的。
我的原始查询是这样的,我知道它不起作用,但会显示我想要实现的目标。
选择 ID, 标题, DNAME 从 mytable的
WHERE 标题喜欢( 选择 schdname 从 时间表 )
这会产生由用作表达式的子查询返回的多行错误。所以我的问题是,这可以通过另一种方式实现吗?
答案 0 :(得分:1)
这是一种方法:
SELECT id, title, dname FROM mutable
JOIN schedule ON mutable.title like '%' || schedule.schdname || '%'
或稍微可读的方式:
SELECT id, title, dname FROM mutable
JOIN schedule ON POSITION(schedule.schdname in mutable.title)<>0
答案 1 :(得分:0)
你实际上是否正在使用通配符?你不能这么说。如果没有,你可以像IN一样替换。如果您确实想要进行通配符连接,我建议您使用列的子字符串并对其进行比较,例如
詹姆斯 插口 卫
选择substr(names,1,2)作为names_abbr 来自names_table,其中names_abbr =(选择...)