請問這句SQL有什麼錯誤,很簡單,但我不知道,謝謝!(30分)

  • 主题发起人 主题发起人 杜風
  • 开始时间 开始时间

杜風

Unregistered / Unconfirmed
GUEST, unregistred user!
SELECT ID, LEVEL_SORT, adjust_level_enable_date, worker_name, day_salary, overtime_pay, duty_kind, sale_kind, allowance, adjust_man, SK, SK_man
FROM level_query
WHERE adjust_level_enable_date =
( SELECT MAX( adjust_level_enable_date ) tdatetemp
FROM level_query
GROUP BY ID )
 
少了一個AS
 
SELECT MAX( adjust_level_enable_date ) tdatetemp
FROM level_query
GROUP BY ID 得到的记录可能不是一条。所以在有些数据库上可能存在问题
 
SELECT ID, LEVEL_SORT, adjust_level_enable_date, worker_name, day_salary, overtime_pay, duty_kind, sale_kind, allowance, adjust_man, SK, SK_man
FROM level_query
WHERE adjust_level_enable_date =
( SELECT MAX( adjust_level_enable_date )
FROM level_query
GROUP BY ID )
 
Oracle出错如下:
single-row subquery returns more than one row
 
是不止一條,但我想實現這外功能,該怎麼寫,請教
 
Oracle下这样应该可以。SQL Server下这样基本不可以。但是还有别的写法。
SELECT ID, LEVEL_SORT, adjust_level_enable_date, worker_name, day_salary, overtime_pay, duty_kind, sale_kind, allowance, adjust_man, SK, SK_man
FROM level_query a
( SELECT MAX( adjust_level_enable_date ) tdatetemp FROM level_query GROUP BY ID )b
WHERE where a.adjust_level_enable_date =b.tdatetemp
 
SELECT ID, LEVEL_SORT, adjust_level_enable_date, worker_name, day_salary, overtime_pay, duty_kind, sale_kind, allowance, adjust_man, SK, SK_man
FROM level_query
WHERE adjust_level_enable_date =
( SELECT MAX( adjust_level_enable_date ) tdatetemp
FROM level_query)

SELECT ID, LEVEL_SORT, adjust_level_enable_date, worker_name, day_salary, overtime_pay, duty_kind, sale_kind, allowance, adjust_man, SK, SK_man
FROM level_query
WHERE adjust_level_enable_date =
( SELECT MAX( adjust_level_enable_date ) tdatetemp
FROM level_query)
ORDER BY ID
 
用In语句来实现很容易,但是速度不好,就是将你的=改成in基本应该可以。
 
所我写的那个 '=' 改为 in, HiHi
 
多人接受答案了。
 
后退
顶部