PHP mysqli SELECT * from my_table哪里ID = array_of_ids

时间:2018-11-13 07:09:49

标签: php mysql mysqli

我已经使用这个网站多年了,这是我第一次在这里问问题,所以现在有点害怕: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。 感谢您的帮助,谢谢!

6 个答案:

答案 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