我不确定我的问题标题是否正确,我会尝试通过示例解释我的意思。
我有以下查询:
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
的第三列,并将其插入作为具有相同价格<的另一行
值和串联 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/