【问题标题】:Stucking with MYSQL to get value from one table to another坚持使用 MYSQL 从一张表获取价值到另一张表
【发布时间】:2020-08-13 19:44:44
【问题描述】:

这是我第一次寻求帮助。我不确定我是否做得正确,但这是我的问题:

表结构:

Table 'users'             Table 'made'
+--+---------+---------+   +--+---------+---------------+
|id|user_id  |friends  |   |id|p_id     |result         |
+--+---------+---------+   +--+---------+---------------+
|1 |x        |["y","z"]|   |1 | y       |some_text_here |
+--+---------+---------+   +--+---------+---------------+

到目前为止我得到了什么:

SELECT friends FROM users WHERE user_id = 'x'

并在第二个查询中循环 users.friends 的信息:

SELECT * FROM made WHERE p_id IN ('y', 'z')

我基本上需要的是 users.friends 的信息(来自特定的 user.user_id),以查找“made”中是否存在包含 users.friends 的行,以便我可以输出 made.result 数据。

我正在使用nodeJS执行查询,例如

sql.query("SELECT ....... WHERE user_id = ?", user_id, (err, res) => {......

希望我能很好地解释这一点,这对我来说非常复杂。

感谢您以后的帮助:)

【问题讨论】:

  • users中的列friends的数据类型是什么?
  • friends的数据类型是json

标签: mysql sql node.js json join


【解决方案1】:

好的,据我推断,您希望合并两个表中的数据,对吗? 您可以使用内部属性。

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

你可以在这里看到更多:https://www.w3schools.com/sql/sql_join_inner.asp

【讨论】:

  • 我猜它不适用于内部包含 json 数据的列。就我而言,我有一个带有 ["123", "456"] 的数组并尝试使用 "IN"。
【解决方案2】:

一种选择是使用JSON function json_search() 加入(从 MySQL 5.7 开始可用):

select m.*
from made m
inner join users u on json_search(u.friends, 'one', m.p_id) is not null
where u.user_id = 'x'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 2018-06-24
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    相关资源
    最近更新 更多