Mysql中的条件,同时从不同的表中选择数据

时间:2016-05-25 07:12:11

标签: mysql sql database

我有这个代码并且它运行正常,但我在我的数据库的orders表中添加了两个新列:

  • guest_user ('Y'/'N'

  • guest_phone

我想要做的是,如果guest_user'y',那么我就不会users.email,所以请用orders.guest_phone替换它。

如何做到这一点。任何人都可以解决它....

 SELECT DISTINCT
    orders.id AS 'Order Id',
    users.email AS 'Email',
    orders.price AS 'Amount',
    orders.city_sj AS 'City',
    orders.order_from AS 'Web/App',
    orders.payment_status AS 'COD/PWC',
    orders. AT AS 'Date and Time'

FROM users, orders, order_history    

WHERE users.id = order_history.uid
  AND orders.id = order_history.oid
  AND orders. REAL = 1
  AND orders.price > 1
  AND orders. STATUS = 1
ORDER BY orders.id;

运行上面的代码我得到以下类型的输出:

enter image description here

谢谢

1 个答案:

答案 0 :(得分:4)

这样的事情可以完成你想要的工作:

SELECT DISTINCT orders.id as 'Order Id',  
       IF(orders.guest_user = 'Y', orders.guest_phone, users.email) as 'Phone/Email',  
       orders.price as 'Amount', orders.city_sj as 'City',
       orders.order_from as 'Web/App', 
       orders.payment_status as 'COD/PWC', 
       orders.at as 'Date and Time'
FROM users
JOIN order_history ON users.id = order_history.uid  
JOIN orders ON orders.id= order_history.oid
WHERE orders.real=1 AND orders.price>1 AND orders.status=1
ORDER BY orders.id;

您还应该使用显式连接语法,而不是旧式隐式样式。