dtvpe4837413 2013-09-19 17:17
浏览 340
已采纳

为什么我的MySQL查询返回带有IN值的错误数据[重复]

This question already has an answer here:

I am running a query in PHP and I am getting to many results. Here is the query:

mysql> SELECT `location` FROM `listings` WHERE `fulltext` LIKE '%a%' OR `title` LIKE
'%a%' AND location IN(33702,33709,33714,33716,33760,33762,33771,33773,33777,33781,33782)
ORDER BY `date` DESC \g

and this is the CMD result that I get, which matches exactly what I am getting in the PHP run:

+----------+
| location |
+----------+
|    78787 |
|    33782 |
|    33782 |
|    98102 |
|    33782 |
|    33782 |
|    33782 |
|    33782 |
|    33782 |
|    56564 |
|    44569 |
|    33782 |
|    33782 |
+----------+
13 rows in set (0.00 sec)

As you can see, I should not be getting 78787,98102,56564 or 44569. does anyone see what could be wrong with the query. Let me know if you need more info.

P.S. I originally had this set up to use RLIKE, and it will be again once I get this figured out.

</div>
  • 写回答

2条回答 默认 最新

  • douchongbang6011 2013-09-19 17:18
    关注

    It looks like the precedence of your OR is incorrect. Try:

    SELECT `location` FROM `listings` WHERE (`fulltext` LIKE '%a%' OR `title` LIKE '%a%') AND location IN(33702,33709,33714,33716,33760,33762,33771,33773,33777,33781,33782) ORDER BY `date` DESC
    

    The important thing here is to use brackets to separate your two basic conditions:

    1. check title OR fulltext
    2. check location
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用