SELECT surplusland_list.*,site_file_sets.*,demandstar.identifier, demandstar.date_due
FROM surplusland_list,site_file_sets,demandstar
WHERE surplusland_list.its_number != 'NULL' AND
surplusland_list.its_number = demandstar.identifier AND
site_file_sts.name LIKE %{demandstar.identifier}%
ORDER BY surplusland_list.county ASC, surplusland_list.assoc_property ASC, surplusland_list.id ASC
我该如何更正此陈述?我在%{demandstar.identifier}%
有错误。我已经尝试过这个版本的许多不同版本,似乎无法让它工作。提前谢谢!
答案 0 :(得分:1)
LIKE
的参数是一个字符串,应该正确引用。
尝试LIKE '%{demandstar.identifier}%'
答案 1 :(得分:0)
您的陈述有多个问题。首先,您应该学习并使用正确的join
语法,并意识到表别名将简化查询。这表明您没有site_file_sets
的加入条件,这显示为cross join
。
SELECT sl.*, sfs.*, ds.identifier, ds.date_due
FROM surplusland_list sl join
demandstart ds
on sl.its_number = ds.identifier cross join
site_file_sets sfs
WHERE sl.its_number != 'NULL' AND
sfs.name LIKE %{demandstar.identifier}%
ORDER BY sl.county ASC, sl.assoc_property ASC, sl.id ASC;
接下来的两个问题是like
模式和!= NULL
缺乏单引号。 != NULL
将始终返回被视为false的NULL
。这是改进版本:
SELECT sl.*, sfs.*, ds.identifier, ds.date_due
FROM surplusland_list sl join
demandstart ds
on sl.its_number = ds.identifier cross join
site_file_sets sfs
WHERE sl.its_number is not 'NULL' AND
sfs.name LIKE '%{demandstar.identifier}%'
ORDER BY sl.county ASC, sl.assoc_property ASC, sl.id ASC;
但是,在您使用适当的cross join
和join
子句替换on
之前,这将无法执行您想要的操作。