php-如何在mysql中确定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