- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我想在 MySQL 中创建一个具有可选值的查询。当指定值时,查询将按该值过滤,当值不是时返回所有行。想法是这样的:
public function doQuery($item = 'ANY_VALUE') {
$query = "SELECT * FROM table WHERE item = ?";
db->fetchAll($query,array($item))
...
}
doQuery(); // Returns everything
doQuery($item='item1'); // Returns only rows where item = 'item1'
有没有一种简单的方法可以做到这一点,而无需根据 $item 的值创建两个查询字符串?
最佳答案
据我所知,不存在这样的“任何”占位符。
如果你可以使用 LIKE,你可以这样做
SELECT * FROM table WHERE item LIKE '%'
如果你可以附加一个条件,你可以像这样使 item
子句无效:
SELECT * FROM table WHERE item = ? OR 1=1
(但在您的示例中不起作用,因为您将“item”作为参数传递)
这就是我能看到的所有选项 - 使用两个查询可能是最简单的,在第二个查询中完全删除 WHERE
子句。
这可能会起作用,但我*不确定从数据库的角度来看这是否是个好主意。
public function doQuery($item = 'ANY_VALUE') {
$query = "SELECT * FROM table WHERE item = ? OR 1 = ?";
db->fetchAll($query,array($item, ($item == 'ANY_VALUE' ? 1 : 0))
...
}
关于php - MySQL where 子句等于任何东西 (SELECT * WHERE col = ANY_VALUE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430721/
我想从mysql中选择最新的数据,所以我运行下面的sql,但是我得到next_visit_time与max create_time行的实际值不匹配>。所以我检查了数据,发现最新的数据是 null ,所
我正在尝试创建一个动态的 where 子句。我在 PHP 中得到一些复选框数组,如下代码 $brand = array(); if(isset($_GET['brand']) && !empty($_
考虑以下查询: with abc as ( select 1 as a, 1 as b, 2 as c union all select 1, 3, 4 union all selec
我想在 MySQL 5.7 中使用 GROUP BY 时为每个组获取一个随机行。根据我的研究,最干净的方法是这样做: SELECT ANY_VALUE(column_1), ANY_VALUE(col
我有一个连接到 mysql 数据库的 laravel 项目,当我更改服务器时,我的代码失败了,因为我的新服务器有一个 Mariadb,当我检查我的日志时,我意识到,MariaDb 中有一些不受支持的函
面临的问题 incompatible with sql_mode=only_full_group_by; 要解决此问题,请立即使用 ANY_VALUE() ,它解决了问题。 但是,在一些mysql查询
默认启用 SQL 模式 ONLY_FULL_GROUP_BY。因此,我没有禁用 ONLY_FULL_GROUP_BY,而是尝试使用 ANY_VALUE(arg) 查询获取了我预期的结果。 我希望它与
自从mysql 5.7.5 group by发生了变化 https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html 如果我做这个查询
我想在 MySQL 中创建一个具有可选值的查询。当指定值时,查询将按该值过滤,当值不是时返回所有行。想法是这样的: public function doQuery($item = 'ANY_VALUE
我有一个看起来像这样的“供应商”表... **company itemKey itemPriceA itemPriceB** companyA, 203913, 20, 10 companyA, 20
我有重现错误的表格和数据: DROP DATABASE IF EXISTS `theway`; CREATE DATABASE IF NOT EXISTS `theway` DEFAULT C
目前我在开发中使用 mysql 5.7,在生产中使用 5.6。每次我在开发中使用 group by 运行查询时,我都会收到一些错误,例如“错误代码:1055。SELECT 列表的表达式 #1 不在 G
在这样的 SQL 查询中: SELECT * FROM MyTable WHERE x = 5; 是否可以修改 WHERE 条件以便 SELECT 查找 x 的每个值?类似(错误的语法): SELEC
我是一名优秀的程序员,十分优秀!