php mysqli从我的\u表中选择*,其中id=数组\u of \u id

btqmn9zl  于 2021-06-18  发布在  Mysql
关注(0)|答案(6)|浏览(365)

我已经使用这个网站多年了,这是我第一次在这里问问题,所以现在有点害怕:d
我的问题是,我有两张table。表a有三列,表b有五列。所以现在的设置是这样的:

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 |
+----+-------+-----+------+------+

现在我要做的是从表a中获取所有数据,然后只获取 lm 从表b。我从表a得到的所有数据如下: SELECT r_id, foo, bar from table_a 我需要用我的身份证 bar 要获取的列 lm 从表b。那么,有没有一种方法可以传递一个数组,以便仅基于数组中的id获取数据呢?如果没有,那么最有效的方法是什么?
我期望的结果是 jk, lol, funk . 谢谢你的帮助,谢谢!

uurv41yg

uurv41yg1#

为此,您可以尝试使用sql的where特性。

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
9q78igpj

9q78igpj2#

为什么不加入?

select group_concat(lm) as lm_list
from table_b b
inner join table_a a on b.id = a.bar

您可以使用group\u concat()函数,这样您就可以 jk, lol, funk 否则你会得到3行每一个 lm 价值观,

oiopk7p5

oiopk7p53#

尝试 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

yizd12fk

yizd12fk4#

你可以用 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 |
+------+-------+-----+-----+

slmsl1lt

slmsl1lt5#

我假设你有一个ID数组。因此,首先用逗号分隔ID数组,如下所示:

ids_str = implode("," $ARRAY_OF_IDS);

然后用这个 ids_strIN os mysql查询如下:

SELECT lm from table_b WHERE id IN( ids_str )
ukqbszuj

ukqbszuj6#

您应该考虑在一个查询中使用联接将两个表链接在一起。。。

SELECT  r_id, foo, bar, lm
    FROM table_a 
    JOIN table_b on bar = id

相关问题