我在db表上运行以下查询

SELECT *, CONVERT_TZ(`received_on`, '+00:00','+05:30') AS received_on
FROM `user_chat_msgs`
WHERE (`from_user`='54610' AND `to_user`='1')
OR (`to_user`='1' AND `from_user`='54610')
ORDER BY id DESC
LIMIT 10000;

这只返回如下消息
从用户=54610到用户=1
预期结果
从用户=54610到用户=1或
从用户=1到用户=54610
逻辑查询在我看来是正确的,我不确定这里的问题是什么?

最佳答案

然后使用适当的where子句:

SELECT *, CONVERT_TZ(`received_on`, '+00:00','+05:30') AS received_on
FROM `user_chat_msgs`
WHERE (`from_user` = '54610' AND `to_user` = '1') OR
      (`from_user` = '1' AND `to_user` = '54610')
ORDER BY id DESC
LIMIT 10000;

你的where条款:
WHERE (`from_user` = '54610' AND `to_user` = '1') OR
      (`to_user` = '1' AND `from_user` = '54610')

只是重复这两个条件,但顺序不同。
注意:如果用户id是一个数字,那么不要在常量周围使用引号。

关于mysql - 使用OR查询的MySQL仅返回数据子集?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32351844/

10-13 00:52