Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL动态生成多个where子句_Mysql_Sql_Where - Fatal编程技术网

MySQL动态生成多个where子句

MySQL动态生成多个where子句,mysql,sql,where,Mysql,Sql,Where,因此,用户可以选择要按多少类别筛选列表 当只选择一个项目时,一切正常: SELECT SQL_CALC_FOUND_ROWS a.id, a.PAnr, b.family, b.articlenr, b.ratio, a.oiltype, a.oiltemp FROM testdata_test a, testdata_gear b WHERE a.id = b.test_id AND b.family = 'R660' ORD

因此,用户可以选择要按多少类别筛选列表

当只选择一个项目时,一切正常:

        SELECT SQL_CALC_FOUND_ROWS a.id, a.PAnr, b.family, b.articlenr, b.ratio, a.oiltype, a.oiltemp
        FROM testdata_test a, testdata_gear b
        WHERE a.id = b.test_id  AND b.family = 'R660' 
        ORDER BY a.PAnr desc
        LIMIT 0, 10
但当用户添加更多时:

        SELECT SQL_CALC_FOUND_ROWS a.id, a.PAnr, b.family, b.articlenr, b.ratio, a.oiltype, a.oiltemp
        FROM testdata_test a, testdata_gear b
        WHERE a.id = b.test_id  AND b.family = 'R540' OR  b.family = 'R660' 
        ORDER BY a.PAnr desc
        LIMIT 0, 10
我得到了大约400万次点击,而没有和部分的表大约是4000次。如果用户选择另一个,点击率约为800万次。
我遗漏了什么?

您混合了
以及
子句,没有
()
,因此您有效地运行了:

WHERE ((a.id = b.test_id) AND (b.family = 'R540')) 
   OR (b.family = 'R660')
注意
()
是如何定位的

你可能想要

WHERE (a.id = b.test_id) AND (b.family IN ('R540', 'R660'))

您混合了
以及
子句,而没有
()
,因此您有效地运行了:

WHERE ((a.id = b.test_id) AND (b.family = 'R540')) 
   OR (b.family = 'R660')
注意
()
是如何定位的

你可能想要

WHERE (a.id = b.test_id) AND (b.family IN ('R540', 'R660'))

您混合了
以及
子句,而没有
()
,因此您有效地运行了:

WHERE ((a.id = b.test_id) AND (b.family = 'R540')) 
   OR (b.family = 'R660')
注意
()
是如何定位的

你可能想要

WHERE (a.id = b.test_id) AND (b.family IN ('R540', 'R660'))

您混合了
以及
子句,而没有
()
,因此您有效地运行了:

WHERE ((a.id = b.test_id) AND (b.family = 'R540')) 
   OR (b.family = 'R660')
注意
()
是如何定位的

你可能想要

WHERE (a.id = b.test_id) AND (b.family IN ('R540', 'R660'))

将查询更改为此,查询将不会按预期运行或语句

SELECT SQL_CALC_FOUND_ROWS a.id, a.PAnr, b.family, b.articlenr, 
        b.ratio, a.oiltype, a.oiltemp
        FROM testdata_test a, testdata_gear b
        WHERE a.id = b.test_id  AND (b.family = 'R540' OR  b.family = 'R660')
        ORDER BY a.PAnr desc
        LIMIT 0, 10


将查询更改为此,查询将不会按预期运行或语句

SELECT SQL_CALC_FOUND_ROWS a.id, a.PAnr, b.family, b.articlenr, 
        b.ratio, a.oiltype, a.oiltemp
        FROM testdata_test a, testdata_gear b
        WHERE a.id = b.test_id  AND (b.family = 'R540' OR  b.family = 'R660')
        ORDER BY a.PAnr desc
        LIMIT 0, 10


将查询更改为此,查询将不会按预期运行或语句

SELECT SQL_CALC_FOUND_ROWS a.id, a.PAnr, b.family, b.articlenr, 
        b.ratio, a.oiltype, a.oiltemp
        FROM testdata_test a, testdata_gear b
        WHERE a.id = b.test_id  AND (b.family = 'R540' OR  b.family = 'R660')
        ORDER BY a.PAnr desc
        LIMIT 0, 10


将查询更改为此,查询将不会按预期运行或语句

SELECT SQL_CALC_FOUND_ROWS a.id, a.PAnr, b.family, b.articlenr, 
        b.ratio, a.oiltype, a.oiltemp
        FROM testdata_test a, testdata_gear b
        WHERE a.id = b.test_id  AND (b.family = 'R540' OR  b.family = 'R660')
        ORDER BY a.PAnr desc
        LIMIT 0, 10


你错过了什么?括号。是的,差不多是@Danbracuk你错过了什么?括号。是的,差不多是@Danbracuk你错过了什么?括号。是的,差不多是@Danbracuk你错过了什么?括号。是的,差不多是在DanBracuk