[英]SQL Query Syntax error?
我试图修改一个查询,该查询导致在修改之前产生2条记录,由于某种原因,我的修改使其不起作用,因为它不返回任何内容。
该查询有效并返回2条记录:
$query = mysql_query("SELECT * FROM `table1`
WHERE `date` = '{$eventdate->format('Y-m-d')}'
OR `date` >= CURDATE() ORDER BY id DESC");
...我添加了这个:JOIN table2
USING(id)...所以这最后的代码是这样的:
$query = mysql_query("SELECT * FROM `table1` JOIN `table2` USING(id)
WHERE `date` = '{$eventdate->format('Y-m-d')}'
OR `date` >= CURDATE() ORDER BY id DESC");
问题是第二个什么都不返回。
这是语法错误吗? 我该如何工作? 两个表都有id字段。
您的ORDER BY
id
现在不明确。 不过可能会有更多错误。 用mysql_error()
检查
确保table2包含匹配的数据,其中id等于table1中的id。
如果不需要此匹配项,则可以使用LEFT JOIN。
尝试这个
$query = mysql_query("SELECT * FROM `table1` a,`table2` b WHERE a.id=b.id
and (`a.date` = '{$eventdate->format('Y-m-d')}' OR `a.date` >= CURDATE())
ORDER BY id DESC")
连接两个在列名上没有前缀的表(如-table1_id,table2_id)时,应使用别名-
SELECT * FROM table1 as t1 JOIN table2 as t2 on ...
然后您可以像这样在表中引用字段-t1.id,t2.id(也可以不使用别名(如t1)来执行此操作,然后您应该引用-table1.id这样的字段)。 您的脚本的问题在于2个表的列ID为in:
ORDER BY id DESC
引擎不知道您从哪个表引用此ID
我的其他建议是,在可能的情况下不要在查询中使用聚合函数(在查询中,CURDATE是该类型的函数)。 SQL中的聚合功能可防止查询缓存。 在我们的情况下,您可以将currdate从php传递到查询,并且可以缓存查询。 希望我有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.