我正在尝试以该格式显示MySQL查询结果
Title 1 Title 2 Title3 。
使用此查询:
SELECT title as titre1 FROM sequence WHERE ID_sequence = 1
UNION
SELECT title as titre2 from sequence WHERE ID_sequence = 2
UNION
SELECT title as titre3 FROM sequence WHERE ID_sequence = 3
但结果显示在此表单
标题1 与不同的ROWS(标题1,2和3)。
任何有助于感谢的想法!
答案 0 :(得分:0)
UNION
数据会将各种数据集合并到一个公共列结构中,每个列都有一行。
在这种情况下,您要查找的是每个序列的子查询,以列的形式返回。这应该可以解决问题。请注意,如果您的子查询返回多行,那么您将收到错误,但这不应该是您的查询中的问题,因为您正在过滤单个ID(假设序列表的主键中的ID_sequence)
SELECT
(SELECT title as titre1 FROM sequence WHERE ID_sequence = 1 ) AS titre1
, (SELECT title as titre2 from sequence WHERE ID_sequence = 2) AS titre2
, (SELECT title as titre3 FROM sequence WHERE ID_sequence = 3) AS titre3
答案 1 :(得分:0)
UNION
始终将行添加到查询中 - 在UNION
的两个查询中,第二个查询的结果将显示在第一个结果的下方。所以UNION
不会在这里做你想做的事。
此查询:
SELECT
CASE ID_sequence WHEN 1 THEN title ELSE NULL END CASE as titre1,
CASE ID_sequence WHEN 2 THEN title ELSE NULL END CASE as titre2,
CASE ID_sequence WHEN 3 THEN title ELSE NULL END CASE as titre3
FROM sequence
WHERE ID_sequence > 0 AND ID_sequence < 3 ;
会给你三列。但是,在任何给定的行中,其中两列将为空白,这可能是您想要的,也可能不是。
如果您希望所有三列都包含每行中的值,那么您需要指定它们之间的某种关系(即Title1
与哪个Title2
等),然后使用自我加入。你还没有说过这种关系应该是什么,所以我不能举一个例子。