mysql - 将列值设置为行

标签 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的第三列,并将其插入作为具有相同价格<的另一行 值和串联 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/

相关文章:

mysql - SQL异常参数索引超出范围

mysql - 强制 Doctrine 将类型 ="guid"创建为 VARCHAR(255) 而不是 CHAR(36)

symfony - 尝试执行查询时路径表达式无效

php - Doctrine 2.1 如何使用yaml

mysql - Sonar 数据库清理

mysql - SELECT 语句中的 SELECT 返回 0 计数

Python 使用临时表运行 SQL 查询

sql - 删除SQL Server中的重复记录?

php - 使用 MySQL 和 PHP 启动帖子线程的逻辑?

mysql - 从 SQL View 中选择 JSON 数组的字段以创建列