结合SQL语句

时间:2017-10-01 13:31:06

标签: php mysql

我想从同一个表中的不同行中选择不同的列和一个语句。我将如何将其合并为一个?

SELECT `shop_lat_log` FROM `customers` WHERE `phoneNumber`='254719401837'
SELECT `delivery_lat_log` FROM `customers` WHERE `phoneNumber`='25472054919'

3 个答案:

答案 0 :(得分:1)

您可以在一个select语句中将两个当前查询中的每一个用作子查询:

SELECT
    (SELECT shop_lat_log FROM customers WHERE phoneNumber = '254719401837') AS shop_lat_log,
    (SELECT delivery_lat_log FROM customers WHERE phoneNumber = '25472054919') AS delivery_lat_log
FROM dual;

这假设您的两个查询中的每一个都返回一个值。如果没有,那么UNION可能更合适:

SELECT
    shop_lat_log AS log_value,
    'shop_lat_log' AS log_type
FROM customers
WHERE phoneNumber = '254719401837'
UNION ALL
    SELECT
    delivery_lat_log,
    'delivery_lat_log'
FROM customers
WHERE phoneNumber = '25472054919'

答案 1 :(得分:1)

您可以使用UNION

SELECT `shop_lat_log` FROM `customers` WHERE `phoneNumber`='254719401837'
UNION
SELECT `delivery_lat_log` FROM `customers` WHERE `phoneNumber`='25472054919'

请注意,第二个查询的列数必须与第一个查询的列数相同,结果将包含第一个查询的列名称。

因此,即使您在第二个查询中选择delivery_lat_log列,如果您正在提取关联数组,结果也会显示在shop_lat_log列中。

答案 2 :(得分:1)

使用SQL case语句

select case c.phone_number 
    when '254719401837' 
    then c.shop_lat_log
    when '25472054919'
    then c.delivery_lat_log
end as field
from customer as c
where c.phone_number in ('254719401837', '25472054919')