选择行(a = 1和b = 2和c = 3)和(a = 2和b = 2和c = 2)等行

时间:2017-09-22 22:57:37

标签: mysql

所以我想将游戏地图存储到我的数据库中,其中包括星系,系统和位置。我的表看起来像这样:

id | galaxy | system | position | other information ...
1  | 1      | 1      | 1        | blahblah
2  | 1      | 1      | 2        | blahblah
3  | 1      | 1      | 3        | blahblah
4  | 1      | 1      | 4        | blahblah
5  | 2      | 111    | 6        | blahblah

我想要做的是选择多个带坐标的行,让我们说WHERE galaxy = 1 AND system = 1 AND position = 1WHERE galaxy = 1 AND system = 1 AND position = 2。它应该可能以某种方式,但我找不到解决方案,或者我只是用错误的关键字搜索,因为我真的不知道如何表达我的问题。

4 个答案:

答案 0 :(得分:1)

有几种方法可以过滤。尝试理解in子句以及如何使用orbraces()

方法1

WHERE (galaxy = 1 AND system = 1 AND position = 1) 
or (galaxy = 1 AND system = 1 AND position = 2)

方法2

 WHERE galaxy = 1 AND system = 1 AND position in (1,2)

答案 1 :(得分:1)

@Ivar是正确的:

WHERE
   (galaxy = 1 AND system = 1 AND position = 1) OR 
   (galaxy = 1 AND system = 1 AND position = 2)

是一般表格

在这个确切的示例中,您可以OR positions

WHERE
   galaxy = 1 AND system = 1 AND position IN (1,2)

了解ANDOR条件对您有好处。

答案 2 :(得分:0)

如果你只是寻找那些字段具有相同值的所有行,这也会有效并且更容易:

SELECT * FROM `test` WHERE `galaxy` = `system` = `position`;

答案 3 :(得分:-1)

您可以使用IN()函数

例如:

AllowCurrencySymbol

这样做是为了从表中选择galaxy等于'1'且系统等于'1'且位置等于'1'或'2'的所有行