mysql - 在不同列之间使用 OR 以及 AND

标签 mysql

我有一个 mysql 查询

$query = "SELECT id,link, shape, size, color, clarity, cut, price, markup, cert, certificateNumber, stockNumber FROM diamonds WHERE cert IN ('GIA,AGS') AND storeKey = '$storeKey' AND size BETWEEN $minCarat AND $maxCarat AND price BETWEEN $minPrice AND $maxPrice AND cut IN($cut) AND clarity IN ($clarity) AND color IN ($color) AND shape IN ($shape) ORDER BY price ASC";

可以看出,它只允许那些具有GIA或AGS证书的钻石列表

我想添加另一个条件。该表有一列“链接”,它可以为空或非空。如果我使用 GIA 或 AGS,许多链接不为空的钻石将被排除。我也想添加链接条件。类似的东西

cert IN ('GIA,AGS') Or link != '' 

如何在 AND 之外添加 Or 和其他值

最佳答案

$query = "SELECT 
           id,link,shape,size,
           color, clarity, cut, price,
           markup, cert, certificateNumber,stockNumber
         FROM 
            diamonds 
        WHERE 
              (cert IN ('GIA,AGS') or link != '')
          AND storeKey = '$storeKey'
          AND size BETWEEN $minCarat AND $maxCarat
          AND price BETWEEN $minPrice AND $maxPrice 
          AND cut IN($cut)
          AND clarity IN ($clarity)
          AND color IN ($color)
          AND shape IN ($shape)
       ORDER BY price";

仅添加 OR 语句没有发现任何问题

关于mysql - 在不同列之间使用 OR 以及 AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36588460/

相关文章:

php - 根据自定义数组位置排序帖子

php - 从 MySQL 表中获取最近的日期

mysql - 在 Spring Boot 中创建表并从 .sql 文件导入数据

php - 如何计算两个时间点之间的小时数?

javascript - 如何在 javascript 或 MySQL 中对数据透视动态数组进行分组?

mysql - 如何在同类搜索中区分 s 和 ş

mysql - ZEROFILL 列始终以 000 而不是 0001 开头

php - 创建安全的 MYSQLI 登录脚本?

php - mysqli 更新查询应该返回结果吗?

mysql - 如何使用 FOSUserBundle 为迁移的用户生成 salt 和 confirmation_token 条目