我认为下面的查询自然会做我解释的,但显然不是......
我的表格如下:
id | name | g | partner | g2
1 | John | M | Sam | M
2 | Devon | M | Mike | M
3 | Kurt | M | Susan | F
4 | Stacy | F | Bob | M
5 | Rosa | F | Rita | F
我试图得到g或g2值等于'M'的id ...但是,g和g2值都是'M'的记录应返回两行,而不是1.
所以,在上面的示例数据中,我试图返回:
$q = pg_query("SELECT id FROM mytable WHERE ( g = 'M' OR g2 = 'M' )");
1
1
2
2
3
4
但是,它总会返回:
1
2
3
4
答案 0 :(得分:4)
您的查询不起作用,因为每行只返回一次,无论它是否匹配一个或两个条件。要获得您想要的内容,请使用两个查询并使用UNION ALL
来合并结果:
SELECT id FROM mytable WHERE g = 'M'
UNION ALL
SELECT id FROM mytable WHERE g2 = 'M'
ORDER BY id
结果:
1
1
2
2
3
4
答案 1 :(得分:-1)
你可以沿着这些方向尝试UNION:
“SELECT id FROM mytable WHERE(g ='M')UNION SELECT id FROM mytable WHERE(g2 ='M')”
希望这有帮助,马丁
答案 2 :(得分:-1)
SELECT id FROM mytable WHERE g = 'M'
UNION
SELECT id FROM mytable WHERE g2 = 'M'