好吧,假设在应用程序的进一步过程中您以相同的方式处理结果列,您可以尝试使用
SELECT * FROM
(
select service, ipreq, latency, ... FROM agreements WHERE id = 3
UNION ALL
select service, rates, markup, ... FROM agreements WHERE id = 3
) tmp
WHERE service = 'internet'
这将选择所有可能条目的组合,id = 3然后选择您需要的条目service。
但是,这仅适用于所有具有相同类型的字段。
可能您还应该重命名字段以统一对它们的访问,例如
SELECT * FROM
(
select service, ipreq as field1, latency as field2, ... FROM agreements WHERE id = 3
UNION ALL
select service, rates as field1, markup as field2, ... FROM agreements WHERE id = 3
) tmp
WHERE service = 'internet'
如果您不想这样做,则需要通过应用程序中的列索引来访问它们。字段类型仍然需要相同。
编辑:
这是更新的代码:
SELECT * FROM
(
SELECT doc.id as docid, service, ipreq, latency,... FROM agreements WHERE service = 1
UNION ALL
SELECT doc.id as docid, service, rates, markup,... FROM agreements WHERE service = 2
) as tmp
WHERE docid = 1
现在,此代码将选择与特定服务类型相关的所有字段。