数据库
首页 > 数据库> > php-如何在m​​ysql中确定OR条件的优先级

php-如何在m​​ysql中确定OR条件的优先级

作者:互联网

我有这样的表结构

+---+----------+-----------+--------------+
| id| customer | Address   | Address_type |
+---+----------+-----------+--------------+
|1  | 1        | Address 1 | 2            |
|2  | 2        | Address 2 | 2            |
|3  | 1        | Address 3 | 1            |
+---+----------+-----------+--------------+

数据库中有两种Address_type.
我必须根据以下条件选择地址

>如果提供给客户的地址Address_type = 1,则显示该地址.
>如果不存在Address_type = 1并且存在Address_type = 2,则显示该客户的Address_type = 2地址.
>如果该客户同时存在两者,则仅显示其中Address_type = 1的地址

我已经尝试通过OR条件进行此操作,但是它会显示记录,以数据库中的第一个为准,因此mysql查询中只有一种查询才能实现此目的?即像在数据库中同时存在两个Address_types(1和2)时在OR条件中赋予优先权以仅获取Address_type = 1记录之类的东西?

解决方法:

另一种选择:获取每个客户的最小Address_Type,然后加入该地址:

SELECT
  id,
  customer,
  Address,
  Address_Type
FROM custs
INNER JOIN (
  SELECT customer, MIN(Address_Type) AS MinType
  FROM custs
  GROUP BY customer
) AddType ON custs.Address_Type = AddType.MinType

标签:greatest-n-per-group,mysql,php
来源: https://codeday.me/bug/20191030/1967898.html