错误与#39;喜欢'在多个MYSQL声明中

时间:2014-02-17 13:09:30

标签: mysql sql-like

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}%有错误。我已经尝试过这个版本的许多不同版本,似乎无法让它工作。提前谢谢!

2 个答案:

答案 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 joinjoin子句替换on之前,这将无法执行您想要的操作。