Mysql 是否有一种方法可以从SQL表中的一列中选择数据,以获得具有多列的表?

Mysql 是否有一种方法可以从SQL表中的一列中选择数据,以获得具有多列的表?,mysql,sql,Mysql,Sql,所以我有两个SQL表:一个是id,另一个是meta-value和meta-u-key。我加入了他们,所以看起来像这样: +------+------------+----------+ | id | meta_value | meta_key | +------+------------+----------+ | 1544 | product1 | 1 | | 1544 | 2 | 2 | | 1545 | product2 |

所以我有两个SQL表:一个是id,另一个是meta-value和meta-u-key。我加入了他们,所以看起来像这样:

+------+------------+----------+
|  id  | meta_value | meta_key |
+------+------------+----------+
| 1544 | product1   |        1 |
| 1544 | 2          |        2 |
| 1545 | product2   |        1 |
| 1545 | 5          |        2 |
| 1546 | product3   |        1 |
| 1546 | 10         |        2 |
+------+------------+----------+
+------+------------+------------+
|  id  | meta_value | meta_value |
+------+------------+------------+
| 1544 | product1   |          2 |
| 1545 | product2   |          5 |
| 1546 | product3   |         10 |
+------+------------+------------+
SELECT
    wprq_gf_entry.id,
    wprq_gf_entry_meta.meta_value,
    wprq_gf_entry_meta.meta_key 
FROM
    wprq_gf_entry 
    INNER JOIN wprq_gf_entry_meta ON wprq_gf_entry.id = wprq_gf_entry_meta.entry_id 
WHERE
    wprq_gf_entry_meta.form_id = 6
我想得到一个查询,它会显示一个如下表:

+------+------------+----------+
|  id  | meta_value | meta_key |
+------+------------+----------+
| 1544 | product1   |        1 |
| 1544 | 2          |        2 |
| 1545 | product2   |        1 |
| 1545 | 5          |        2 |
| 1546 | product3   |        1 |
| 1546 | 10         |        2 |
+------+------------+----------+
+------+------------+------------+
|  id  | meta_value | meta_value |
+------+------------+------------+
| 1544 | product1   |          2 |
| 1545 | product2   |          5 |
| 1546 | product3   |         10 |
+------+------------+------------+
SELECT
    wprq_gf_entry.id,
    wprq_gf_entry_meta.meta_value,
    wprq_gf_entry_meta.meta_key 
FROM
    wprq_gf_entry 
    INNER JOIN wprq_gf_entry_meta ON wprq_gf_entry.id = wprq_gf_entry_meta.entry_id 
WHERE
    wprq_gf_entry_meta.form_id = 6
第一个表的SQL查询如下所示:

+------+------------+----------+
|  id  | meta_value | meta_key |
+------+------------+----------+
| 1544 | product1   |        1 |
| 1544 | 2          |        2 |
| 1545 | product2   |        1 |
| 1545 | 5          |        2 |
| 1546 | product3   |        1 |
| 1546 | 10         |        2 |
+------+------------+----------+
+------+------------+------------+
|  id  | meta_value | meta_value |
+------+------------+------------+
| 1544 | product1   |          2 |
| 1545 | product2   |          5 |
| 1546 | product3   |         10 |
+------+------------+------------+
SELECT
    wprq_gf_entry.id,
    wprq_gf_entry_meta.meta_value,
    wprq_gf_entry_meta.meta_key 
FROM
    wprq_gf_entry 
    INNER JOIN wprq_gf_entry_meta ON wprq_gf_entry.id = wprq_gf_entry_meta.entry_id 
WHERE
    wprq_gf_entry_meta.form_id = 6

有办法做到这一点吗。。。谢谢大家!

您可以使用
JOIN
,但您需要两个:

SELECT e.*, m1.meta_value, m2.meta_value
FROM wprq_gf_entry e JOIN
     wprq_gf_entry_meta m1
     ON e.id = m1.entry_id AND m1.meta_key = 1 JOIN
     wprq_gf_entry_meta m2
     ON e.id = m2.entry_id AND m2.meta_key = 2;

您可以使用
JOIN
,但需要两个:

SELECT e.*, m1.meta_value, m2.meta_value
FROM wprq_gf_entry e JOIN
     wprq_gf_entry_meta m1
     ON e.id = m1.entry_id AND m1.meta_key = 1 JOIN
     wprq_gf_entry_meta m2
     ON e.id = m2.entry_id AND m2.meta_key = 2;

您可以使用您创建的表,我们称之为joined_table

With joined_table as(
    SELECT
        wprq_gf_entry.id,
        wprq_gf_entry_meta.meta_value,
        wprq_gf_entry_meta.meta_key 
    FROM wprq_gf_entry 
         INNER JOIN wprq_gf_entry_meta ON wprq_gf_entry.id 
         = wprq_gf_entry_meta.entry_id 
    WHERE wprq_gf_entry_meta.form_id = 6
    
)
我们将其分为两个表-一个表的meta key=1,另一个表的meta key=2。 然后,我们加入他们

Select jt.id, jt.meta_value as meta_value_1, 
            jt2.meta_value as meta_value_2
From joined_table jt
         Join joined_table jt2 
         On jt.id = jt2.id
         And jt2.meta_key = 2
Where jt.meta_key = 1 

您可以使用您创建的表,我们称之为joined_table

With joined_table as(
    SELECT
        wprq_gf_entry.id,
        wprq_gf_entry_meta.meta_value,
        wprq_gf_entry_meta.meta_key 
    FROM wprq_gf_entry 
         INNER JOIN wprq_gf_entry_meta ON wprq_gf_entry.id 
         = wprq_gf_entry_meta.entry_id 
    WHERE wprq_gf_entry_meta.form_id = 6
    
)
我们将其分为两个表-一个表的meta key=1,另一个表的meta key=2。 然后,我们加入他们

Select jt.id, jt.meta_value as meta_value_1, 
            jt2.meta_value as meta_value_2
From joined_table jt
         Join joined_table jt2 
         On jt.id = jt2.id
         And jt2.meta_key = 2
Where jt.meta_key = 1 

为什么
wprq\u gf\u entry\u meta.form\u id=6
两次?@jarlh。为什么是一次?这似乎与示例数据无关。@jarlh很抱歉,这是个错误。一次就够了。@GordonLinoff它实际上与样本数据无关,但它与我的代码有关……为什么
wprq\u gf\u entry\u meta.form\u id=6
两次?@jarlh。为什么是一次?这似乎与示例数据无关。@jarlh很抱歉,这是个错误。一次就够了。@GordonLinoff它实际上与示例数据无关,但它与我的代码有关…抱歉,但此代码不适用于我。。。我也是sql的初学者,所以如果你能帮我的话。对不起,这段代码不适合我。。。我也是sql的初学者,如果你能帮我的话。