【问题标题】:MySQL statement to query each result separatelyMySQL 语句分别查询每个结果
【发布时间】:2017-11-29 14:04:31
【问题描述】:

我正在尝试查询一个 wordpress 数据库,其中每个用户的每个值都存储在不同的行上。

例如

ID  USER_ID FIELD_ID  VALUE
1      1       2        my name is paul smith
2      1       3        i bought books
3      1       4        online
4      2       2        my name is big boy
5      2       3        i bought pens
6      2       4        offline

在这里您可以看到它不是字段名称,而是 FIELD_ID,因此 FIELD_ID=2 表示用户名,FIELD_ID=3 表示他们购买的内容,FIELD_ID=4 表示他们在线/离线。

我需要做的是创建一个 sql 语句,返回一个现在在线购买笔的用户列表。

所以我尝试这样做

选择 field_id=4 且 value='online' 的所有用户

 string online= "(select * from table where FIELD_ID='4' AND VALUE='online')";

选择 field_id 3 包含“笔”的所有用户

 string pens="(select * from table where FIELD_ID='3' AND VALUE LIKE '%pens%'";

然后像这样把它们放在一起

string query=pens + " WHERE " + online;

如果我自己运行“在线”和“笔”sql语句,它可以工作,但组合的“查询”不会返回任何内容。

我想这可能是因为“在线”查询结果将包括一堆现在在线的用户的 USER_ID,但是第二个查询必须对每个 USER_ID 运行查询并返回值。

所以它必须知道从“在线”查询中选择 USER_ID 字段,然后分别查询每个 USER_ID 并将组合结果发回。

我不知道如何只创建一条 SQL 语句来一次性完成所有操作,然后将现在在线购买笔的用户发回。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您声明该表包含一个 USER_ID。如果是这样,那么结合两个查询的方法如下:

    SELECT * FROM table WHERE FIELD_ID='4' AND VALUE='online' AND USER_ID IN (SELECT USER_ID FROM table WHERE FIELD_ID='3' AND VALUE LIKE '%pens%');
    

    【讨论】:

    • 非常感谢,我会试试的!!
    • 非常感谢 CaitLAN,FREEKING 成功了!!!!感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢!
    • 我不知道如果没有用户堆栈溢出我会怎么做,我会被搞砸的!!!
    • 我很乐意为您提供帮助。如果您对此特定回复感到满意,请将其标记为答案,以便问题得到解决并从未回答的问题源中删除。
    【解决方案2】:

    使用连接

    Select *
    From (
        Select *
        FROM Table
        WHERE FIELD_ID='4' AND VALUE='online'
    ) t
    WHERE t.FIELD_ID='3' AND t.VALUE LIKE '%pens%'
    

    【讨论】:

    • 这不是一个联接,但它适用于 OP 似乎想要做的事情。
    • 是的,我不知道为什么我说加入...这是一个漫长的早晨。
    【解决方案3】:

    你在正确的轨道上,你只需要让你的子查询返回用户的 id,然后使用 IN 语句,示例伪代码:

    ... WHERE id IN ([subquery]) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 2015-10-05
      • 2015-06-06
      • 2015-07-06
      相关资源
      最近更新 更多