我必须构建一些复杂的mysql查询。我有一个包含一些用户信息的表,有3列:id,id_user,id_campo,valore。所以,例如:
现在,我必须选择以下用户: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,但我没有得到任何结果。我如何修改查询,以便我可以包含条件“同一个用户”?
谢谢!
答案 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')