作者 主題: SQL2000的語法錯誤  (閱讀 16728 次)

0 會員 與 1 訪客 正在閱讀本文。

symis

  • 懷疑的國中生
  • **
  • 文章數: 34
    • 檢視個人資料
SQL2000的語法錯誤
« 於: 2008-05-14 17:28 »
假設有個table 叫aaa, 內容有2個欄位,如下:
a1          a2
-----      -----
a            1
b            2
c            3
-----------------------------
語法:
select *
from
(
 select max(aaa1.a2) as a2_max
 from aaa aaa1
 inner join
 (
  select * from aaa where a2 = (select max(a2) from aaa)
 ) aaa2 on aaa1.a1=aaa2.a1
) x
-----------------------------
錯誤訊息:
伺服器: 訊息 8624,層級 16,狀態 3,行 1
Internal SQL Server error.
-----------------------------
請問,問題的關鍵在哪?
thanks!

vincent119

  • 憂鬱的高中生
  • ***
  • 文章數: 137
    • 檢視個人資料
回覆: SQL2000的語法錯誤
« 回覆 #1 於: 2008-07-21 13:38 »
假設有個table 叫aaa, 內容有2個欄位,如下:


有個疑問aaa1 aaa2那來的

symis

  • 懷疑的國中生
  • **
  • 文章數: 34
    • 檢視個人資料
回覆: SQL2000的語法錯誤
« 回覆 #2 於: 2008-07-21 19:42 »
假設有個table 叫aaa, 內容有2個欄位,如下:

有個疑問aaa1 aaa2那來的

這是SQL語法的Alias, 是基本功哦!

lschang

  • 懷疑的國中生
  • **
  • 文章數: 82
    • 檢視個人資料
回覆: SQL2000的語法錯誤
« 回覆 #3 於: 2008-07-22 09:24 »
select *
from
(
 select max(aaa1.a2) as a2_max
 from aaa aaa1
 inner join
 (
  select * from aaa where a2 = (select max(a2) from aaa)
 ) aaa2 on aaa1.a1=aaa2.a1
) x


= 改  in 試看看

symis

  • 懷疑的國中生
  • **
  • 文章數: 34
    • 檢視個人資料
回覆: SQL2000的語法錯誤
« 回覆 #4 於: 2008-07-22 14:19 »
感謝指教,
結果一樣!
該不會你測  可以吧?

lschang

  • 懷疑的國中生
  • **
  • 文章數: 82
    • 檢視個人資料
回覆: SQL2000的語法錯誤
« 回覆 #5 於: 2008-07-23 10:50 »
select *
from
(
 select max(aaa1.a2) as a2_max
 from aaa aaa1
 inner join
 (
  select * from aaa where a2 = (select max(a2) from aaa)
 ) aaa2 on aaa1.a1=aaa2.a1
) x
------------------------改成
select max(a2_max )
from
(
 select aaa1.a2  as a2_max
 from aaa aaa1
 inner join
 (
  select * from aaa where a2 = (select max(a2) from aaa)
 ) aaa2 on aaa1.a1=aaa2.a1
) x

可以 且結果 同您的需要
不然亦可

select *
from
(
 select aaa1.a2 as a2_max
 from aaa aaa1
 inner join
 (
  select * from aaa where a2 = (select max(a2) from aaa)
 ) aaa2 on aaa1.a1=aaa2.a1
) x

其實您用  inner join  所以 aaa1 與 aaa2 只要一個用 max 就可得到您要的結果

micmic3

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料
回覆: SQL2000的語法錯誤
« 回覆 #6 於: 2008-07-26 14:12 »
這是要找 aaa 中 a2 最大的 a1 嗎?
select a1,max(a2) as a2_max  from aaa group by a1 應該會比用inner join 又 sub query 來的快吧
假設 a1 是人名,a2 是分數....
a1          a2
-----      -----
a            1
b            2
c            3
a            5
b            6
c            7
應設是 select a1,max(a2) as a2_max from aaa group by a1 就可以了
要找出有分數最高的紀錄的人名
select a1,max(a2) as a2_max  from aaa group by a1 order by a2_max desc limit 1
這樣就可以了