【问题标题】:find the SQL Syntax error?找到 SQL 语法错误?
【发布时间】:2014-01-10 06:24:52
【问题描述】:

谁能发现这个 sql 中的语法错误?

SELECT * FROM ubuser 
INNER JOIN post ON (ubuser.usr_ID = post.pos_USERID) 
INNER JOIN ubFriendsLink ON (ubuser.usr_ID = (ub_lnkID1 OR ub_lnkID2)) 
WHERE"& session("ID") &" = (ub_lnkID1 OR ub_lnkID2) 
ORDER BY pos_DATE DESC

我看不出有什么问题,但我对 SQL 还是很陌生。

这是错误:

查询表达式 '(ubuser.usr_ID = post.pos_USERID) INNER JOIN ubFriendsLink ON (ubuser.usr_ID = (ub_lnkID1 OR ub_lnkID2)) WHERE18 = (ub_lnkID1 OR ub_lnkID2'。

谢谢

更新 ------------------------------------------------

当我按照 Dan 的建议在我的 sql 中添加一个空格时,我收到了这个错误

Microsoft Access 数据库引擎错误“80040e14”

查询表达式 '(ubuser.usr_ID = post.pos_USERID) INNER JOIN ubFriendsLink ON (ubuser.usr_ID = (ub_lnkID1 OR ub_lnkID2)'。

/S000000/newsfeed1.asp,第 28 行

当我使用 juergen 给我的代码时,我得到了这个:

Microsoft Access 数据库引擎错误“80040e14”

查询表达式 'ubuser.usr_ID = 中的语法错误(缺少运算符) post.pos_USERIDINNER 加入 ubFriendsLink ON ubuser.usr_ID IN (ub_lnkID1,ub_lnkID2)在哪里 18 (ub_lnkID1,ub_lnkID2)ORDER BY pos_DATE DES'。

/S000000/newsfeed1.asp,第 31 行

谢谢

【问题讨论】:

标签: sql ms-access asp-classic syntax-error


【解决方案1】:
SELECT * FROM ubuser 
INNER JOIN post ON ubuser.usr_ID = post.pos_USERID
INNER JOIN ubFriendsLink ON ubuser.usr_ID IN (ub_lnkID1,ub_lnkID2)
WHERE session("ID") IN (ub_lnkID1,ub_lnkID2) 
ORDER BY pos_DATE DESC

【讨论】:

  • 您没有在错误消息中看到您错过放置空格的位置吗?这有点明显。最后你写了。 des 而不是 desc
  • 我把空格放进去,我确实写了 desc。仍然无法正常工作:Syntax error (missing operator) in query expression 'ubuser.usr_ID = post.pos_USERID INNER JOIN ubFriendsLink ON ubuser.usr_ID IN (ubFriendsLink.ub_lnkID1,ubFriendsLink.ub_lnkID2) WHERE 18 IN (ubFriendsLink.ub_lnkID1,ubFriendsLink.ub_lnkID2) ORDER BY post.pos_DATE DES'.
  • 您现在的完整查询是什么?
  • "SELECT * FROM ubuser INNER JOIN post ON ubuser.usr_ID = post.pos_USERID INNER JOIN ubFriendsLink ON ubuser.usr_ID IN (ubFriendsLink.ub_lnkID1,ubFriendsLink.ub_lnkID2) WHERE "& session("ID") &" IN (ubFriendsLink.ub_lnkID1,ubFriendsLink.ub_lnkID2) ORDER BY post.pos_DATE DESC"
  • 奇数。查询似乎没问题。
【解决方案2】:

如果这是您的错误消息的一部分,

(ubuser.usr_ID = post.pos_USERID) 
INNER JOIN ubFriendsLink ON (ubuser.usr_ID = (ub_lnkID1 OR ub_lnkID2)) 
WHERE18 = (ub_lnkID1 OR ub_lnkID2'

这里需要一个空格:

WHERE"& session("ID") &" = (ub_lnkID1 OR ub_lnkID2)

在 WHERE 和引号之间。

【讨论】:

  • 细节是什么意思?
  • “没有用”这个词含糊不清。这可能意味着引发了错误,在这种情况下,详细信息将是错误消息。它也可能意味着意想不到的结果,在这种情况下,细节将是预期的和实际的结果。在这两种情况下,您使用的代码都会很有用。我建议编辑您的问题,在其中发布您尝试遵循我的 an 和 @juergen 的建议以及每次尝试的结果。
  • 好的,感谢您的澄清,我现在编辑我的问题,向您展示我添加空格时得到的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 2019-04-12
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多