从左列IN内容右列的两个表中选择[重复]

Posted

技术标签:

【中文标题】从左列IN内容右列的两个表中选择[重复]【英文标题】:Select from two tables where left column IN content right column [duplicate] 【发布时间】:2018-02-25 02:14:33 【问题描述】:

我有两张桌子:

用户:

+-------+-------------+------+
| id    | name        | type |
+-------+-------------+------+
|   1   | Name 1      |  1   |
|   2   | Name 2      |  2   |
|   3   | Name 3      |  3   |
+-------+-------------+------+

消息:

+-------+-------------+-----------+----------+
| id    |  poster_id  |  message  | for_type |
+-------+-------------+-----------+----------+
|   1   |      3      |   mess1   |     1    |
|   2   |      2      |   mess2   |    2,3   |
|   3   |      1      |   mess3   |    3,1   |
+-------+-------------+-----------+----------+

在 for_type 中获取关于 $user_type 消息的查询是什么?

SELECT messages.*, users.name FROM messages LEFT JOIN users ON 
messages.poster_id = users.id WHERE messages.id > ' . $last_message_id . ' AND 
' . $user_type . ' IN (messages.for_type) 
ORDER BY news.id ASC

【问题讨论】:

查看规范化,它的设计很糟糕。参考***.com/questions/25644986/… 目前的方案对我来说很方便。我更新了帖子 【参考方案1】:

如果我理解正确,您想选择一个特定的 for_type 并遇到该列未正确规范化的问题,具有多个值。如果您无法正确规范结构,则 where 子句中的 LIKE 命令将起作用,例如:

for_type LIKE "%1%"

将从消息中获取记录 1 和 3。

【讨论】:

它只适用于小于 10 的数字 :) 我正在考虑将 type_num 更改为 type_name 并使用 LIKE 是的,使用 LIKE 可以在该列上提供大量潜在的解决方案。如果我有帮助,请给我们点赞。

以上是关于从左列IN内容右列的两个表中选择[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用动态内容构建两个同步 ListView

使用 flexbox CSS 的左列和堆叠的右列 [重复]

如何在 Flexbox 中的两个 div 之间添加边距/空格 [重复]

IN SQL INNER JOIN 可以添加两个不同列的表吗?

在响应式设计中移动最左侧的列

当光标在右列上方时如何滚动左列?