MySQL查询不适用于SQLite

时间:2014-05-23 07:31:28

标签: java android mysql sql sqlite

我在SQLite中遇到了一个查询问题。 我正在java for android中写一个简单的聊天。

我从服务器上的数据库获取数据并将其插入设备上的本地数据库。 我希望每个用户都收到最后一条消息。

当我从MySQL获取数据时它是正确的但是当在SQLite上执行相同的查询(我复制它)时,我又得到一行。 MySQL和SQLite之间的代码实现有什么不同吗?

SELECT _id, od, do, tresc, godzina
            FROM wiadomosci w
            WHERE
            (od = "Aaaa" AND _id =
            (SELECT max(_id) FROM wiadomosci
            WHERE (od = "Aaaa" AND do = w.do) OR (do = "Aaaa" AND od = w.do)))
            OR
            (do = "Aaaa" AND _id = (
            SELECT max(_id) FROM wiadomosci
            WHERE (do = "Aaaa" AND od = w.od) OR (od = "Aaaa" AND do = w.od)))

其中:

  • od - 消息来自谁,
  • 做 - 消息是谁,
  • tresc - 消息内容,
  • godzina - 发送消息的小时

抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

MySQL有一些怪癖,包括它接受字符串的双引号(")。这不是标准的,因为双引号通常用于列名。

如果将双引号更改为单引号,则可能会获得更大的成功:

SELECT
    _id, od, do, tresc, godzina
FROM wiadomosci w
WHERE
(od = 'Aaaa' AND _id = (
    SELECT max(_id) FROM wiadomosci
            WHERE (od = 'Aaaa' AND do = w.do) OR (do = 'Aaaa' AND od = w.do)))
            OR
            (do = 'Aaaa' AND _id = (
            SELECT max(_id) FROM wiadomosci
            WHERE (do = 'Aaaa' AND od = w.od) OR (od = 'Aaaa' AND do = w.od)))