Php MySQL IF语句?

Php MySQL IF语句?,php,mysql,Php,Mysql,我有一个巨大的sql查询,在这里我选择并格式化一堆行,以便导出到Excel中。我想再添加一个角色,如果rid角色id存在并且是3,则将其设置为角色1,否则将其设置为角色2 Mysql查询当前 SELECT uc_orders.billing_first_name AS 'First Name', uc_orders.billing_last_name AS 'Last Name', users.name AS 'Username', uc_orders.billing_street1 AS '

我有一个巨大的sql查询,在这里我选择并格式化一堆行,以便导出到Excel中。我想再添加一个角色,如果rid角色id存在并且是3,则将其设置为角色1,否则将其设置为角色2

Mysql查询当前

SELECT uc_orders.billing_first_name AS 'First Name', uc_orders.billing_last_name AS 'Last 
Name', users.name AS 'Username', uc_orders.billing_street1 AS 'Address', 
uc_orders.billing_city AS 'City', uc_zones.zone_name AS 'State',uc_orders.billing_postal_code
 AS 'Postal Code', ROUND(uc_orders.order_total,2) AS 'Order Total'  FROM uc_orders, users,
 uc_zones WHERE uc_orders.uid!='0' AND uc_orders.uid = users.uid AND uc_orders.billing_zone =
 uc_zones.zone_id AND uc_orders.modified BETWEEN '1271124575' AND '1274978899'
但是,该用户并不总是存在于users_角色数据库中,它只存在于3或其他数字时,通常不存在。因此,如果它不存在,它也将返回“角色2”

所以

我如何在MySQL中做到这一点?还是PHP是唯一的方法?

使用CASE语句。CASErid当3然后“角色1”或“角色2”结束时

可以找到有关案例陈述的信息

使用案例陈述。CASErid当3然后“角色1”或“角色2”结束时

可以找到有关案例陈述的信息


是的,有一个IF语句。还有一个IF函数。下面是IF语句的MySQL参考页:


是的,有一个IF语句。还有一个IF函数。下面是IF语句的MySQL参考页:

您应该对多表查询使用JOIN。还要考虑格式化查询并使用别名进行更容易的阅读。

SELECT
    `a`.`billing_first_name` as `First Name`,
    `a`.`billing_last_name` as `Last Name`,
    `b`.`name` as `Username`,
    `a`.`billing_street1` as `Address`,
    `a`.`billing_city` as `City`,
    `c`.`zone_name` as `State`,
    `a`.`billing_postal_code` as `Postal Code`,
    ROUND(`a`.`order_total`,2) as `Order Total`,
    IF(`d`.`rid` IS NOT NULL AND `d`.`rid`=3,'Role 1','Role 2') as `Role`
FROM `us_orders` as `a`
JOIN `users` as `b` ON `a`.`uid`=`b`.`uid`
JOIN `uc_zones` as `c` ON `a`.`billing_zone`=`c`.`zone_id`
LEFT JOIN `users_role` as `d` on `a`.`uid`=`d`.`uid`
WHERE `a`.`modified` BETWEEN '1271124575' AND '1274978899'
回答实际问题的部分是带有IF和左JOIN的行。

您应该使用JOIN进行多表查询。还要考虑格式化查询并使用别名进行更容易的阅读。

SELECT
    `a`.`billing_first_name` as `First Name`,
    `a`.`billing_last_name` as `Last Name`,
    `b`.`name` as `Username`,
    `a`.`billing_street1` as `Address`,
    `a`.`billing_city` as `City`,
    `c`.`zone_name` as `State`,
    `a`.`billing_postal_code` as `Postal Code`,
    ROUND(`a`.`order_total`,2) as `Order Total`,
    IF(`d`.`rid` IS NOT NULL AND `d`.`rid`=3,'Role 1','Role 2') as `Role`
FROM `us_orders` as `a`
JOIN `users` as `b` ON `a`.`uid`=`b`.`uid`
JOIN `uc_zones` as `c` ON `a`.`billing_zone`=`c`.`zone_id`
LEFT JOIN `users_role` as `d` on `a`.`uid`=`d`.`uid`
WHERE `a`.`modified` BETWEEN '1271124575' AND '1274978899'

回答您实际问题的部分是带IF的行和带左连接的行。

请确定您的问题标题。让它来描述你的问题。它怎么不呢?我想在MySql语句中做一个IF语句?标题列出了一个广泛使用的技术和一个难以置信的通用特性。没有任何东西可以让它从其他问题中脱颖而出,没有任何东西可以确定这个问题与其他问题的不同方式,如果他们和你有相同的问题,没有人能够用它来找到解决方案。你还不如写一篇计算机问题,请修改你的问题标题。让它来描述你的问题。它怎么不呢?我想在MySql语句中做一个IF语句?标题列出了一个广泛使用的技术和一个难以置信的通用特性。没有任何东西可以让它从其他问题中脱颖而出,没有任何东西可以确定这个问题与其他问题的不同方式,如果他们和你有相同的问题,没有人能够用它来找到解决方案。你还不如把这个问题写下来
SELECT
    `a`.`billing_first_name` as `First Name`,
    `a`.`billing_last_name` as `Last Name`,
    `b`.`name` as `Username`,
    `a`.`billing_street1` as `Address`,
    `a`.`billing_city` as `City`,
    `c`.`zone_name` as `State`,
    `a`.`billing_postal_code` as `Postal Code`,
    ROUND(`a`.`order_total`,2) as `Order Total`,
    IF(`d`.`rid` IS NOT NULL AND `d`.`rid`=3,'Role 1','Role 2') as `Role`
FROM `us_orders` as `a`
JOIN `users` as `b` ON `a`.`uid`=`b`.`uid`
JOIN `uc_zones` as `c` ON `a`.`billing_zone`=`c`.`zone_id`
LEFT JOIN `users_role` as `d` on `a`.`uid`=`d`.`uid`
WHERE `a`.`modified` BETWEEN '1271124575' AND '1274978899'