Php 合并或相交多个MySQL命令

Php 合并或相交多个MySQL命令,php,mysql,sql,inner-join,intersect,Php,Mysql,Sql,Inner Join,Intersect,我得搜索两张桌子 我的第二张桌子是: +---------+---------------+-------+ | user_id | is_first_time | score | +---------+---------------+-------+ | 44 | 1 | 20 | +---------+---------------+-------+ | 44 | 0 | 20 | +---------+----

我得搜索两张桌子

我的第二张桌子是:

+---------+---------------+-------+
| user_id | is_first_time | score |
+---------+---------------+-------+
|   44    |       1       |   20  |
+---------+---------------+-------+
|   44    |       0       |   20  |
+---------+---------------+-------+
我的第一个表只包含用户信息

如果我使用以下MySQL命令,我将得到一个结果:

SELECT * , users_score.user_id users_score_user_id 
FROM users JOIN users_score 
ON users_score.user_id = users.id 
WHERE (users_score.score='20' AND users_score.is_first_time='1')
如果我使用以下MySQL命令,我也会得到一个结果,我只需将is_first_time值更改为0:

SELECT * , users_score.user_id users_score_user_id 
FROM users JOIN users_score 
ON users_score.user_id = users.id 
WHERE (users_score.score='20' AND users_score.is_first_time='0')
但如果我将这两个命令与AND结合使用,则不会得到任何结果:

SELECT * , users_score.user_id users_score_user_id 
FROM users JOIN users_score 
ON users_score.user_id = users.id 
WHERE (users_score.score='20' AND users_score.is_first_time='1')
AND (users_score.score='20' AND users_score.is_first_time='0')
如何合并或相交两个命令

谢谢您的帮助。

您需要在此处使用或调节

WHERE (users_score.score='20' AND users_score.is_first_time='1') 
  OR  (users_score.score='20' AND users_score.is_first_time='0')
但在条件允许的情况下,它可以以更好的方式编写

SELECT *,
       users_score.user_id users_score_user_id
FROM   users
       JOIN users_score
         ON users_score.user_id = users.id
WHERE  users_score.score = '20'
       AND users_score.is_first_time IN ( '1', '0' ) 

如果希望用户同时满足这两个条件,则有一种方法在中使用或存在:

与的问题是,单行不能同时为0和1

如果您只需要用户id,我建议group by并拥有:


注意,我删除了单引号。如果列是数字,则不要使用单引号进行比较。当然,如果它们是字符串,请使用单引号。

谢谢您的回复。或者将获得is_first_time=1的行、is_first_time=0的行以及is_first_time=1和0的行。因此,它将获得三个用户id,而不是一个用户id。我认为戈登·林诺夫的答案更正确。无论如何,谢谢你。
SELECT u.* 
FROM users u
WHERE u.id IN (SELECT us.user_id FROM users_score us WHERE us.score = '20' AND us.is_first_time = '0'
              ) AND
      u.id IN (SELECT us.user_id FROM users_score us WHERE us.score = '20' AND us.is_first_time = '1'
              );
select us.user_id
from users_score us
where score = 20 and us.is_first_time in (0, 1)
group by us.user_id
having count(distinct us.is_first_time) = 2;