MYSQL 有 with Or 语句

标签 mysql having

我在使用 select 语句时遇到了一些麻烦。请参阅我的代码,为简洁起见,我删除了不重要的元素。

   $sql = "SELECT … column names … (calculation for distance)… as distance 
   FROM table 
   WHERE col1 = 'value1' AND col2 = 'value2' HAVING distance < 1

上面的代码工作得很好。但是,当我尝试添加 OR 语句时,因为我希望另一列搜索多个值,这似乎与查询有冲突。它可以在没有 HAVING 子句的情况下工作,但如果删除,我将失去该搜索选项。当更改为以下代码时,我收到一条错误消息,指出语法不正确。

   $sql = "SELECT … column names … (calculation for distance)… as distance 
   FROM table 
   WHERE col1 = 'value1' AND col2 = 'value2' HAVING distance < 1 
   OR col1 = 'value1' AND col2 = 'a different value' HAVING distance < 1

关于这个的任何想法,我不确定会发生什么冲突。也许有更好的方法来使用 OR 语句搜索一列的多个值。

最佳答案

having by子句需要放在最后

所以

   $sql = "SELECT … column names … (calculation for distance)… as distance 
   FROM table 
   WHERE col1 = 'value1' AND col2 IN ('value2' , 'a different value')
   HAVING distance < 1"

关于MYSQL 有 with Or 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23173170/

相关文章:

mysql - 无法从 MySQL 表中删除集合

Mysql - 我可以在 'having' 子句之后使用 'order by' 子句吗?

mysql - 选择按具有最大聚合的列分组的行

mysql - 从不同的表中选择 COUNT

mysql HAVING 组用于多个 LIKE 条件?

java - 如果java中的结果集为负数,如何获取时间

mysql - 在 RUnit 测试套件中使用 .setUp() 和 .tearDown() 函数

php - 模拟来自不同客户端的不同行每秒 400 次更新

mysql - 如何确保 HAVING 发生在 GROUP BY 之前

MySQL Workbench 不提交更改