Mysql 是否有一种方法可以从SQL表中的一列中选择数据,以获得具有多列的表?
所以我有两个SQL表:一个是id,另一个是meta-value和meta-u-key。我加入了他们,所以看起来像这样: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 |
+------+------------+----------+
| 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的初学者,如果你能帮我的话。