我不确定我对问题的标题是否正确,我将尝试通过示例来解释我的意思。

我有以下查询:

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值的另一行,并将name_ascii值与“ whois”串联为item列。

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

谢谢!

最佳答案

一种实现此目标的方法是使用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 Fiddle:http://sqlfiddle.com/#!9/d5164/3

关于mysql - 将列值设为行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36741432/

10-12 15:42