MySQL将结果添加到基于结果的查询中

时间:2018-08-01 16:37:32

标签: mysql

我知道标题含糊不清,这可能让我难以解释,但这是我想要实现的目标。

说我有一个叫做商品的表。

在该表中,我有一个ID,密码,文件,组等。

我想查询密码为“ thispassword”的地方。很容易。

但是然后以某种方式加入该查询的结果还包括group = file

的位置
id | password  | file   | group
----------------------------------
1  | passA     | 1filea | group1
2  | passB     | 2fileb | group1
3  |           | group1 | 
4  | passD     | 4filed | group2
5  | passD     | 5filee | group2
6  |           | group2 | 

在上表中,如果我查询passA(WHERE密码='passA'),则在group列中有 group1 。我还想在同一查询中返回文件等于group1的文件,该文件将是上表中的id:3。

1 个答案:

答案 0 :(得分:0)

看来我们可以使用MySQL逻辑OR运算符来满足规范。

https://dev.mysql.com/doc/refman/5.7/en/logical-operators.html#operator_or

  FROM mytable t
 WHERE t.password = 'passA' 
    OR t.file     = 'group1'

鉴于示例数据,我们希望它返回两行,id值为1和3。

规范尚不完全清楚。我们可以结合多个条件以获得不同的结果:

  FROM mytable t
 WHERE ( t.password IN ('passA','') OR t.password IS NULL )
   AND t.file     = 'group1'

编辑

如果我了解规范,则group列中的值是file列的外键。

SELECT t.id
     , t.password
     , t.file
     , t.group
  FROM mytable t
 WHERE t.password = 'passA'

 UNION ALL

SELECT f.id
     , f.password
     , f.file
     , f.group
  FROM mytable g
  JOIN mytable f
    ON f.file = g.group
 WHERE g.password = 'passA'