MySQL:如何从一列中的多列获取值

时间:2016-11-27 16:25:59

标签: mysql

我有2个数据表。 "关键字"和"数据"。

key_id (P)
key_word
key_prod (I)
kay_country
key_is_wr   

id (P)
dat_id (I)
dat_date
dat_is_weekly

对于每个关键字,数据表中都会链接一些不同的行 - dat_date中的 相同的日期。我想只获取此表中存在的日期的所有变体,因此我可以在PHP代码的数组中显示它们。

这是我目前正在使用的查询 - 它会从特定的" key_app"中获取相同日期的列表。我需要的价值。但我只想获得这个特定key_id存在的日期数组。

SELECT * FROM `keywords` 
    JOIN `data` 
    ON `keywords`.`key_id` = `data`.`dat_id`
    WHERE `keywords`.`key_app`= 10

我还没知道如何:  1.只获取dat_date部分(我想我需要datadat_date而不是我的查询中的" *"  2.如何仅获取每个key_prod的不同日期。

我尝试使用各种ORDER BY和MAX(id),似乎在sytaxes方面没有任何效果

SELECT * FROM `keywords` 
    JOIN ( 
            SELECT MAX(id) AS id 
            FROM `data` 
            GROUP BY `data`.`dat_date` 
        ) `keywords`
    ON `keywords`.`key_prod`=10 

我已经挖了一段时间但没有正确的结果

实施例: 如果我在dat_date vars下

2016-06-21
2016-06-21
2016-06-21
2016-06-22
2016-06-22
2016-06-23
2016-06-23

对于特定的key_app - 我会得到:

2016-06-21
2016-06-22
2016-06-23

作为查询结果

1 个答案:

答案 0 :(得分:1)

试试这个。

select distinct data.dat_date
FROM `keywords`, `data` 
ON `keywords`.`key_prod` = `data`.`dat_id`
WHERE `keywords`.`key_app`= 10

您的第一个疑问是如何仅显示日期。这可以使用select data.dat_date代替select *来完成。 Distinct将仅列出与查询相同的日期不同的日期。