我已经使用这个网站多年了,这是我第一次在这里问问题,所以现在有点害怕:D
这是我的问题所在,我有两个桌子。在table_a中,我有三列,在table_b中,我有5列。所以现在的设置如下所示:
table_a
| r_id | foo | bar |
+------+-------+-----+
| 1 | dude | 5 |
+------+-------+-----+
| 2 | homie | 6 |
+------+-------+-----+
| 3 | bro | 7 |
+------+-------+-----+
table_b
| id | ada | rea | lm | cor |
+----+-------+-----+------+------+
| 5 | ching | ink | jk | 32.4 |
+----+-------+-----+------+------+
| 1 | momo | pal | lmao | 95.5 |
+----+-------+-----+------+------+
| 6 | mama | pen | lol | 26.9 |
+----+-------+-----+------+------+
| 4 | chac | pin | fun | 91.2 |
+----+-------+-----+------+------+
| 7 | chim | lap | funk | 82.4 |
+----+-------+-----+------+------+
| 9 | cho | kil | fin | 38.1 |
+----+-------+-----+------+------+
现在我要做的是从table_a获取所有数据,然后仅从table_b获取lm
。我是这样从table_a获取所有数据的:
SELECT r_id, foo, bar from table_a
我需要使用从bar
列中获取的ID从table_b获取lm
。那么有没有办法我可以传递一个数组,使其仅基于数组中的id获取数据?如果没有,那么获得这些的最有效方法是什么?
我期望的输出是jk, lol, funk
。
感谢您的帮助,谢谢!
答案 0 :(得分:4)
您应该考虑使用JOIN在1个查询中将两个表链接在一起...
SELECT r_id, foo, bar, lm
FROM table_a
JOIN table_b on bar = id
答案 1 :(得分:2)
为什么不加入?
select group_concat(lm) as lm_list
from table_b b
inner join table_a a on b.id = a.bar
您可以使用GROUP_CONCAT()函数,这样您将获得jk, lol, funk
,否则将获得一个lm
值每个3行,
答案 2 :(得分:1)
为此,您可以尝试SQL的WHERE IN功能。
SELECT lm from table_b WHERE id IN(ARRAY_OF_IDS)
或者您也可以使用join实现此目的
Select tale_a.*, tale_b.lm from tale_a inner join table_b ON tale_a.bar=tale_b.id
答案 3 :(得分:1)
尝试inner join
SELECT a.r_id, a.foo, a.bar, b.lm from table_a as a inner join table_b as b on b.id=a.bar
答案 4 :(得分:0)
您可以使用INNER JOIN
SELECT tale_a.r_id, tale_a.foo, tale_a.bar ,table_b.lm
FROM tale_a
INNER JOIN table_b
ON tale_a.bar=table_b.id
注意:它将返回table_a
中的所有列,而仅返回table_b
中的一列
结果输出:
| r_id | foo | bar | lm |
+------+-------+-----+-----+
| 1 | dude | 5 | jk |
+------+-------+-----+-----+
| 2 | homie | 6 |lol |
+------+-------+-----+-----+
| 3 | bro | 7 |funk |
+------+-------+-----+-----+
答案 5 :(得分:0)
我假设您有具有ID的ID数组。 因此,首先用逗号分隔该ID数组的字符串,如下所示:
for ($x = 0; $x < count($rows); $x++) {
$mergearray = array_merge($rows[$x][0], $rows[$x][1]);
foreach ($mergearray as $key => $value) {
//Here echo your values i. $value;
}
}
,然后在ids_str = implode("," $ARRAY_OF_IDS);
的mysql查询中使用该ids_str
,如下所示:
IN