我在使用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语句搜索一列的多个值。
答案 0 :(得分:1)
by 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"
答案 1 :(得分:0)
如果没有sqlfiddle或整个sql查询,很难给出一个好的答案,但是:
SELECT … column names … (calculation for distance)… as distance
FROM table
WHERE (col1 = 'value1' AND col2 = 'value2' OR col1 = 'value1' AND col2 = 'a different value')
HAVING distance < 1