从左列IN内容右列的两个表中选择

时间:2017-09-15 20:36:47

标签: mysql

我有两张桌子:

用户:

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

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你想要选择一个特定的for_type,并且遇到列没有正确规范化的问题,有多个值。如果无法正确规范化结构,则where子句中的LIKE命令可以正常工作,例如:

for_type LIKE "%1%"

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