将列值设为行

时间:2016-04-20 10:47:07

标签: mysql sql doctrine

我不确定我是否正确地提出了这个问题,我会尝试解释一下我的意思。

我有以下查询:

SELECT
  d.name_ascii,
  d.price,
  t.whois_price
FROM domain d
  JOIN tld t ON d.tld_id = t.id
  JOIN user_tld ut ON t.id = ut.tld_id
WHERE ut.user_id = 1
  AND d.name_ascii IN ('domain.com')

返回以下内容:

+------------+---------+-------------+
| name_ascii |  price  | whois_price |
+------------+---------+-------------+
| domain.com | 321.000 | 15.000      |
+------------+---------+-------------+

没关系,但我需要下一个结果:

+------------------+---------+
|       item       |  price  |
+------------------+---------+
| domain.com       | 321.000 |
| domain.com whois | 15.000  |
+------------------+---------+

这就是我需要删除名为whois_price的第3列和插入它作为另一行具有相同的price值和< em>连接 name_ascii值与&#34; whois&#34;作为item列。

我不知道如何解决它。有什么建议吗,提示?

谢谢!

1 个答案:

答案 0 :(得分:2)

实现这一目标的一种方法是使用UNION。

SELECT
  d.name_ascii as item,
  d.price
FROM domain d
WHERE d.name_ascii IN ('domain.com')
UNION ALL
SELECT
  concat(d.name_ascii,' whois'),
  t.whois_price
FROM domain d
  JOIN tld t ON d.tld_id = t.id
  JOIN user_tld ut ON t.id = ut.tld_id
WHERE ut.user_id = 1
  AND d.name_ascii IN ('domain.com')

第一部分获得价格,第二部分获得whois价格。 这是一个SQL小提琴:http://sqlfiddle.com/#!9/d5164/3