我在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)))
其中:
抱歉我的英语不好。
答案 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)))