使用多个where条件构建MySql查询

时间:2016-11-04 20:56:18

标签: php mysql where

我必须构建一些复杂的mysql查询。我有一个包含一些用户信息的表,有3列:id,id_user,id_campo,valore。所以,例如:

  • 1,1,1,“Roberto”(其中id_campo = 1代表用户名);
  • 2,2,1,“Luca”;
  • 3,1,2,“Windows”; (其中id_campo = 2用于使用的OS);
  • 4,2,2,“Linux”; 等等。

现在,我必须选择以下用户:name =“Roberto”AND os =“Linux”,但是同一个用户:

SELECT id_user WHERE (id_campo=1 AND valore="Roberto") OR (id_campo=2 AND valore="Linux").

在此示例中,查询返回id_user = 1和id_user = 2,但我没有得到任何结果。我如何修改查询,以便我可以包含条件“同一个用户”?

谢谢!

2 个答案:

答案 0 :(得分:1)

你需要构建两个"子查询"然后按用户ID加入。

SELECT a.id_user
from (
    SELECT id_user FROM table
    WHERE (id_campo=1 AND valore="Roberto") 
) a, 
(
    SELECT id_user FROM table
    WHERE (id_campo=2 AND valore="Linux")
) b
WHERE a.is_user = b.id_user

答案 1 :(得分:1)

您的数据库设计错误但无论如何您可以在同一个表上使用基于id_user

的内部联接
  select  a.id_user, a.id_campo, a.valore
  from my_table as a
  inner join my_table as b on .id_user = b-id_user
  where ( a.id_campo = 1 and a.valore ='Roberto')
  AND ( b.id_campo = 2 and b.valore ='Linux')