我想从同一个表中的不同行中选择不同的列和一个语句。我将如何将其合并为一个?
SELECT `shop_lat_log` FROM `customers` WHERE `phoneNumber`='254719401837'
SELECT `delivery_lat_log` FROM `customers` WHERE `phoneNumber`='25472054919'
答案 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')