我不确定我对问题的标题是否正确,我将尝试通过示例来解释我的意思。
我有以下查询:
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/