mysql - 我可以使用一个语句从每一列中获取不同的行吗

标签 mysql sql group-by distinct

请看一下这个fiddle

是否可以将这四个不同的查询合并到一个语句中?

SELECT DISTINCT(name) from `product` order by name;
SELECT DISTINCT (category) from `product` order by category;
SELECT DISTINCT (price) from `product` order by price;
SELECT DISTINCT (year) from `product` order by year;

我想从每一列中获取不同的行,并以 JSON 格式返回选择框选项的结果,但我不知道如何在不使用四个独立的选择语句的情况下返回如下结果:

NAME   
A
C
D
E
G

CATEGORY
Brainteaser
Doll
Outdoor

PRICE

20
22
25
30
34

YEAR

2008
2009
2010

表: 创建表产品 (ID int,名称 varchar(1),类别 varchar(11),价格 int,int) ;

INSERT INTO product
    (`ID`, `name`, `category`, `price`,`year`)
VALUES
    (1, 'A', 'Outdoor', 25,2010),
    (2, 'A', 'Doll', 34,2009),
    (3, 'C', 'Doll', 25,2008),
    (4, 'D', 'Outdoor', 20,2010),
    (5, 'E', 'Brainteaser', 22,2010),
    (6, 'E', 'Brainteaser', 22,2009),
    (7, 'G', 'Brainteaser', 30,2009),
    (8, 'G', 'Brainteaser', 30,2009)
;

最佳答案

也许你可以尝试这样的事情:

SELECT DISTINCT(name) FIELDVALUE, 'NAME' FIELDNAME from `product` 
UNION
SELECT DISTINCT (category) FIELDVALUE, 'CATEGORY' FIELDNAME from `product` 
UNION
SELECT DISTINCT (price) FIELDVALUE, 'PRICE' FIELDNAME  from `product` 
UNION
SELECT DISTINCT (year) FIELDVALUE, 'YEAR' FIELDNAME  from `product` ;

它的输出为:

FIELDVALUE      FIELDNAME
A               NAME
C               NAME
D               NAME
E               NAME
G               NAME
Outdoor         CATEGORY
Doll            CATEGORY
Brainteaser     CATEGORY
25              PRICE
34              PRICE
20              PRICE
22              PRICE
30              PRICE
2010            YEAR
2009            YEAR
2008            YEAR

关于mysql - 我可以使用一个语句从每一列中获取不同的行吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24696299/

相关文章:

mysql - 每天按 date_format 分组

python - 在 Pandas 的 groupby 对象中绘制每个组的大小

mysql 查询以获取不同phone_numbers 的最新N 行的平均值

c# - 使用 SQL 插入日期时间(同时转换为字符串)

php - 查看数组中是否存在文本区域值

php - Mysqli 总是提交,即使在失败时

Mysql搜索引擎喜欢并匹配

sql - 表别名的范围是什么?

sql - generate_series() 在 DB2 中等效

ruby-on-rails-3 - Rails 3 和 mongoid : How would you about sorting/grouping collect to display as a 2 dimension table?