我正在尝试从 MySql 数据库中选择用户配置文件。我还有另一个包含用户电话的表,因为他们可以有多个电话。在电话表中,我有一个名为 main
的字段,表示它是主要联系人。
因此,用户可能有 3 部手机(甚至更多),但只有 1 部可以作为主手机。当我选择用户配置文件时,我需要验证是否有任何电话标记为主电话并选择此电话。如果没有标记为 main
的手机,那么我会从列表中选择第一个。
这是我的电话 table :
id | id_user | main | phone
15 | 23 | 0 | 99999999999
16 | 23 | 1 | 88888888888
17 | 27 | 0 | 66666666666
18 | 27 | 0 | 77777777777
因此,在上面的示例中,我需要选择两个用户(23 和 27),用户 23 需要拥有电话 88888888888
,用户 27 需要拥有电话 66666666666
。
但我不知道如何实现这一点,我只能选择第一个寄存器,这是迄今为止我的代码:
SELECT
a.id, a.f_name, a.l_name, a.code,
(
SELECT phone FROM tb_phone WHERE id_user = a.id ORDER BY id LIMIT 1
) as 'phone'
FROM tb_user a
WHERE a.active = 1
最佳答案
您的查询已结束:
SELECT u.*
(SELECT p.phone
FROM tb_phone p
WHERE p.id_user = u.id
ORDER BY p.main DESC, p.id
LIMIT 1
) as phone
FROM tb_user u
WHERE u.active = 1;
换句话说,您需要将 p.main
添加到 ORDER BY
中。
此外,我更改了表别名,因此它们是表名称的缩写。这使得查询更容易理解。
关于php - MySql 如果条件匹配则选择值,如果不匹配则选择第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44615204/