mysql子查询返回多行

标签 mysql sql select subquery group-concat

我的问题出在第一个子查询选择中。我被告知我正在返回多行。

$sql = "SELECT
      messages.message_id
    , messages.sent_timestamp
    , messages.content
    , messages.subject
    , users.user_name
    , (SELECT thread_participants.user_id 
FROM thread_participants 
WHERE thread_participants.user_id !=".$user_id.") as thread_participants
    , (SELECT message_read_state.readDate
       FROM message_read_state
       WHERE message_read_state.message_id = messages.message_id
        and message_read_state.user_id =". $user_id.") as ReadState
    FROM (messages INNER JOIN users ON messages.sender_user_id = users.user_id
    INNER JOIN thread_participants tp ON tp.thread_id = messages.thread_id)
    WHERE (((messages.thread_id)=".$thread_id."))
    ORDER BY messages.sent_timestamp DESC";

最佳答案

您可以使用GROUP_CONCAT()函数获取单个字段中的所有userIds

试试这个:

$SQL = "SELECT
      messages.message_id
    , messages.sent_timestamp
    , messages.content
    , messages.subject
    , users.user_name
    , (SELECT GROUP_CONCAT(thread_participants.user_id) 
FROM thread_participants 
WHERE thread_participants.user_id !=".$user_id.") as thread_participants
    , (SELECT message_read_state.readDate
       FROM message_read_state
       WHERE message_read_state.message_id = messages.message_id
        and message_read_state.user_id =". $user_id.") as ReadState
    FROM (messages INNER JOIN users ON messages.sender_user_id = users.user_id
    INNER JOIN thread_participants tp ON tp.thread_id = messages.thread_id)
    WHERE (((messages.thread_id)=".$thread_id."))
    ORDER BY messages.sent_timestamp DESC";

关于mysql子查询返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20852963/

相关文章:

sql - SSAS 多维数据集按角色限制数据源

mysql - SQL 连接不工作(或非常慢)

ruby-on-rails - 如何在 Rails 上的选择框中使用表列?

ruby-on-rails - 在 Rails 表单中编辑时设置选定值

c# - 如果您有一个使用 Select() 方法的 LINQ 语句,是否有办法从下一条记录中获取值?

mysql - 如何从 MySql 中旋转表

mysql - onDelete 级联不适用于 "one to one"- Sequelize.js

mysql - MySQL 查询速度慢需要改进

mysql - 使用 INNER JOIN 在重复键上插入

PHP检查数据库中是否存在值