sql:一个表 的条件中又引用表自己内部一个字段的问题。

adoguo 2009-09-02 05:40:53
大家帮忙看一下,这个语句有没有错,再就是属不属于自连接的范畴。这个语句在ACCESS中用。

"select * from buyrecord where 用户编号 = " + CStr(BianHao) + " where 购买日期 = ( select max(购买日期) from buyrecord where 用户编号= " + CStr(BianHao) + " "

还有一个问题时,语句最后的 " " 什么时候必须用,什么时候可以不用,当然都是指用在句末的时候。
...全文
159 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
布衣散人 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jhone99 的回复:]
引用 9 楼 clear_zero 的回复:
没有语句是必须加的吧


同意
[/Quote]

应该是没有


lz举个例子吧
adoguo 2009-09-02
  • 打赏
  • 举报
回复
谢谢大家,我看了两遍,才明白,确实是有两个WHERE,真是马虎。这是我从一个很复杂的语句中摘出来的。谢谢。
我又得更正一下了。
"select * from buyrecord where 用户编号 = " + CStr(BianHao) + " and 购买日期 = ( select max(购买日期) from buyrecord where 用户编号= " + CStr(BianHao) + " )"
li163 2009-09-02
  • 打赏
  • 举报
回复
应该不属于自连接的范畴,可以
jhone99 2009-09-02
  • 打赏
  • 举报
回复
假如 用户编号是 字符型,应该这样写

"select * from buyrecord where 用户编号 = '" + CStr(BianHao) + "' and 购买日期 = ( select max(购买日期) from buyrecord where 用户编号= '" + CStr(BianHao) + "' )"


***********************************************************
你的所谓必须加是不是指这个,字符型要加 + "' "
"select * from buyrecord where 用户编号 = '" + CStr(BianHao) + "' "

jhone99 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 clear_zero 的回复:]
没有语句是必须加的吧
[/Quote]

同意
jhone99 2009-09-02
  • 打赏
  • 举报
回复
"select * from buyrecord where 用户编号 = " + CStr(BianHao) + " where 购买日期 = ( select max(购买日期) from buyrecord where 用户编号= " + CStr(BianHao) + " )"

where 改成 and

"select * from buyrecord where 用户编号 = " + CStr(BianHao) + " and 购买日期 = ( select max(购买日期) from buyrecord where 用户编号= " + CStr(BianHao) + " )"
clear_zero 2009-09-02
  • 打赏
  • 举报
回复
没有语句是必须加的吧
adoguo 2009-09-02
  • 打赏
  • 举报
回复
谢谢大家。是我一时疏忽,少写了一个括号。sql语句如下:
"select * from buyrecord where 用户编号 = " + CStr(BianHao) + " where 购买日期 = ( select max(购买日期) from buyrecord where 用户编号= " + CStr(BianHao) + " )"

不过,我还是想问一下,有时候语句末尾必须加一个 "",到底是什么时候该加,什么时候不该加。
of123 2009-09-02
  • 打赏
  • 举报
回复

购买日期的等于可能不行吧?字段值如何与记录集比较?似乎:

"select * from buyrecord where 用户编号 = " & BianHao & " where 购买日期 In (select Top 1 购买日期 from buyrecord where 用户编号 = " & BianHao & " Order By 购买日期 DESC)"



"select * from buyrecord where 用户编号 = " & BianHao & " where 购买日期 In (select max(购买日期) from buyrecord where 用户编号= " & BianHao & ")"

1 值与记录集的关系似乎必须用 IN 关键字。
2 最好用字符串连接算符 &,而不要用 +。虽然这仅仅是习惯问题。
3 CStr 可以不要了。在与字符串连接时,数值自动转成字符串类型了。
4 这是一个子查询作查询条件的例子,很常见。
king06 2009-09-02
  • 打赏
  • 举报
回复
'字符型
Dim str1 As String
str1 = "select * from buyrecord where 用户编号 = '" _
& CStr(表示编号的变量) _
& "'"

'日期型
Dim str2 As String
str2 = "select * from buyrecord where 购买日期 = #" _
& CStr(表示日期的变量) _
& "#"

'数值型
Dim str3 As String
str3 = "select * from buyrecord where 购买数量 = " _
& CStr(表示数量的变量)
chinaboyzyq 2009-09-02
  • 打赏
  • 举报
回复
起码你要知道,这里的括号是要成双的!!

末尾加一个空格毫无意义......
king06 2009-09-02
  • 打赏
  • 举报
回复
""里面包含的是数据库语言字符串,你的这个例子的最后两个"里面少个 )

"select * from buyrecord where 购买日期 = ( select max(购买日期) from buyrecord where 用户编号= '" + CStr(BianHao) + "')"

语句给你分一分或许好看点:
'字符型
Dim str1 As String
str1 = "select * from buyrecord where 用户编号 = '" _
& CStr(BianHao) _
& "'"

'日期型
Dim str2 As String
str2 = "select * from buyrecord where 购买日期 = #" _
& CStr(BianHao) _
& "#"

'数值型
Dim str3 As String
str3 = "select * from buyrecord where 购买数量 = " _
& CStr(BianHao)
hanvan 2009-09-02
  • 打赏
  • 举报
回复
SQL不对,最外层怎么有两个Where,而且少了一个)

select * from buyrecord where 用户编号 = XXXXX and 购买日期 = (
select max(购买日期) from buyrecord where 用户编号= XXXXX
);

如果用户编号是字符串字段,还要加'

chinaboyzyq 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 adoguo 的回复:]
大家帮忙看一下,这个语句有没有错,再就是属不属于自连接的范畴。这个语句在ACCESS中用。

"select * from buyrecord  where 用户编号 = " + CStr(BianHao) + "  where 购买日期 = ( select max(购买日期) from buyrecord where 用户编号= " + CStr(BianHao) + " "

还有一个问题时,语句最后的 " " 什么时候必须用,什么时候可以不用,当然都是指用在句末的时候。

[/Quote]
大概是这样
"select * from buyrecord where 用户编号 = " + CStr(BianHao) + " where 购买日期 = ( select max(购买日期) from buyrecord where 用户编号= " + CStr(BianHao) + ")"

而不是什么空格.....

goosen 2009-09-02
  • 打赏
  • 举报
回复
帮顶

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧