我有一個mssql
查詢,我想將它轉換成mySql
,轉換後仍然查詢不起作用。爲什麼這個查詢不工作,儘管它轉換爲mysql
這裏是我的mssql
查詢(原件)
SELECT
product_id,
NOW() AS `current_date`,
`bt`.`date_from` AS `starts_on`,
`bt`.`date_end` AS `ends_on`,
IF(`bt`.`end` >= NOW(),
DATEDIFF(`bt`.`date_end`, NOW()), #show days until event ends
0 #the event has already passed
) AS `days_remaining`
FROM `bookings` AS `bt`
這裏是我的轉換查詢(這裏轉換:http://www.sqlines.com/online):
SELECT
product_id,
NOW() AS `current_date`,
`bt`.`date_from` AS `starts_on`,
`bt`.`date_end` AS `ends_on`,
CASE WHEN(`bt`.`end` >= NOW() THEN
DATEDIFF(`bt`.`date_end`, NOW()) ELSE #show days until event ends
0 #the event has already passed
) AS `days_remaining`
FROM `bookings` AS `bt`
但這種變了查詢提供了以下錯誤
Static analysis:
27 errors were found during analysis.
An expression was expected. (near "CASE" at position 154)
Unrecognized keyword. (near "CASE" at position 154)
Unrecognized keyword. (near "WHEN" at position 159)
Unexpected token. (near "(" at position 163)
Unexpected token. (near "`tn`" at position 164)
Unexpected token. (near "." at position 168)
Unexpected token. (near "`end`" at position 169)
Unexpected token. (near ">=" at position 175)
Unrecognized keyword. (near "NOW" at position 178)
Unexpected token. (near "(" at position 181)
Unexpected token. (near ")" at position 182)
Unrecognized keyword. (near "THEN" at position 184)
Unrecognized keyword. (near "DATEDIFF" at position 204)
Unexpected token. (near "(" at position 212)
Unexpected token. (near "`bt`" at position 213)
Unexpected token. (near "." at position 217)
Unexpected token. (near "`date_end`" at position 218)
Unexpected token. (near "," at position 228)
Unrecognized keyword. (near "NOW" at position 230)
Unexpected token. (near "(" at position 233)
Unexpected token. (near ")" at position 234)
Unexpected token. (near ")" at position 235)
Unrecognized keyword. (near "ELSE" at position 237)
Unexpected token. (near "0" at position 256)
Unexpected token. (near ")" at position 266)
Unrecognized keyword. (near "AS" at position 268)
Unexpected token. (near "`days_remaining`" at position 271)
SQL query: Documentation
SELECT product_id, NOW() AS `current_date`, `bt`.`date_from` AS `starts_on`, `bt`.`date_end` AS `ends_on`, CASE WHEN(`tn`.`end` >= NOW() THEN DATEDIFF(`bt`.`date_end`, NOW()) ELSE 0) AS `days_remaining` FROM `bookings` AS `bt` LIMIT 0, 25
MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'THEN
DATEDIFF(`bt`.`date_end`, NOW()) ELSE 0 ' at line 6
這裏是我的預訂表結構
請參閱編輯/更新1
更新1:爲什麼這個代碼工作http://sqlfiddle.com/#!9/acf65/2爲什麼它是給錯誤在phpMyadmin
問題: phpMyadmin version
是10.1.13-MariaDB
但當我執行此(http://sqlfiddle.com/#!9/4a543/1)查詢mysql 5.6
它不會工作,爲什麼?
非常感謝你!
_why此查詢不工作,儘管其轉換成mysql_因爲在這27個錯誤。 – RiggsFolly
您必須將關鍵字「end」放在您的案例的末尾,而不是右括號 – Osuwariboy
什麼是'tn'.'end' – James