希望对比我更好脑的人来说这是一个简单的问题 - 从表中选择行时我的MySQL语法出现问题。
$query="SELECT auth, first_name, last_name FROM main_user
WHERE (auth='1' OR auth='2'
AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%')
LIMIT 10";
我基本上想要根据'auth'设置为1或2的用户输入来检索客户端名称。
我目前的结果似乎是在只有'auth'值匹配的情况下返回结果。
答案 0 :(得分:2)
auth='1' OR auth='2' AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%'
这相当于
(auth='1')
OR (
auth='2'
AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%'
)
你应该把它写成
(
auth='1'
OR auth='2'
)
AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%'
答案 1 :(得分:2)
尝试将这些OR
放在括号中,如下所示:
SELECT
auth,
first_name,
last_name
FROM main_user
WHERE (auth = '1' OR auth = '2')
AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%')
LIMIT 10;
答案 2 :(得分:1)
你错了()
。尝试
SELECT auth, first_name, last_name
FROM main_user
WHERE (auth = '1' OR auth = '2')
AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%'
LIMIT 10
或更简单
SELECT auth, first_name, last_name
FROM main_user
WHERE auth in ('1','2')
AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%'
LIMIT 10
答案 3 :(得分:1)
请尝试执行下面提到的sql select查询。
我在下面的sql查询中用IN替换了OR运算符
$query="SELECT auth, first_name, last_name FROM main_user
WHERE auth in ('1','2')
AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%')
LIMIT 10";
答案 4 :(得分:0)
您需要将两个OR子句放在parens中:
WHERE ( ( auth='1' OR auth='2' )
AND ...