2016-05-30 72 views
1

任何人都可以帮助我将这个SQL语句转换成MySQL,因为当我试图从MySQL运行它时出现语法错误。从SQL到MySQL的查询

SELECT 
    a.userid, 
    CAST(a.checktime AS VARCHAR) AS timein, 
    ISNULL(CAST(b.checktime AS VARCHAR),'NO TIMEOUT') AS timeout 
FROM timein a 
LEFT JOIN timeout b ON a.userid = b.userid 
WHERE ISNULL(CAST(b.checktime),'NO TIMEOUT') = 'NO TIMEOUT' 
+0

更换'ISNULL'通过'IFNULL' – 1000111

+0

添加错误消息请 – Jens

回答

1

使用COALESCE()代替ISNULL()这是SQL-Server语法。

SELECT 
    a.userid, 
    a.checktime AS timein, 
    COALESCE(b.checktime,'NO TIMEOUT') AS timeout 
FROM timein a 
LEFT JOIN timeout b ON a.userid = b.userid 
WHERE COALESCE(b.checktime,'NO TIMEOUT') = 'NO TIMEOUT' 
+0

感谢,但仍然得到语法错误在这附近CAST(a.checktime为varchar)AS timein, COALESCE(CAST(b.checktime为varchar ),'NO TIMEOUT')AS timeout – Seryu

+0

'checktime'列是什么类型? – sagi

+0

我宣布它为Varchar – Seryu

1
SELECT 
    a.userid, 
    CAST(a.checktime AS CHAR(100)) AS timein, 
    IFNULL(CAST(b.checktime AS CHAR(100)),'NO TIMEOUT') AS timeout 
FROM timein a 
LEFT JOIN timeout b ON a.userid = b.userid 
WHERE IFNULL(CAST(b.checktime),'NO TIMEOUT') = 'NO TIMEOUT'; 
  • 你需要转换为char数据类型。 (您需要将相应的varchar列的长度放在CHAR(LENGTH)中)
  • ISNULL函数在MySQL中需要一个参数,而在SQL SERVER中需要两个参数。您应该使用IFNULLCOALESCE(如上所述)。

备注CAST

的CAST()功能的任何类型的值转换成具有 指定类型的值。目标类型可以是以下任何一种 类型:BINARY,CHAR,DATE,DATETIME,TIME,DECIMAL,SIGNED,UNSIGNED。