Php MySQL IF语句?
我有一个巨大的sql查询,在这里我选择并格式化一堆行,以便导出到Excel中。我想再添加一个角色,如果rid角色id存在并且是3,则将其设置为角色1,否则将其设置为角色2 Mysql查询当前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 '
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'