尝试使用mysql php获取某些值?
看看我的桌子,我正试图从美国得到ups发货的水果,以及任何不包括美国的水果。看看我的桌子,苹果包括美国和ups,浆果不包括美国。所以我想得到苹果和浆果。下面的查询是我得到的最好的查询,但它失败了,它不包括美国尝试使用mysql php获取某些值?,php,mysql,Php,Mysql,看看我的桌子,我正试图从美国得到ups发货的水果,以及任何不包括美国的水果。看看我的桌子,苹果包括美国和ups,浆果不包括美国。所以我想得到苹果和浆果。下面的查询是我得到的最好的查询,但它失败了,它不包括美国 SELECT fruit FROM table fruit WHERE shipping = 'ups' AND country ='USA' GROUP BY fruit table fruit fruit country shipping apple
SELECT fruit FROM table fruit WHERE shipping = 'ups' AND country ='USA' GROUP BY fruit
table fruit
fruit country shipping
apple USA ups
apple China ups
apple UK ups
banana USA fedez
banana Russia fedez
banana Italy fedez
berry Italy fedez
berry China fedez
berry French fedez
试试这个
从水果中选择水果(运输='ups'和国家='USA')或不在('USA')代码>试试这个
从水果中选择水果(配送='ups'和国家='USA')或国家!='美国水果集团 你可以写这个
SELECT fruit FROM fruit WHERE (shipping = 'ups' AND country = 'USA') OR fruit NOT IN (SELECT fruit FROM fruit WHERE country = 'USA' GROUP BY fruit);
因此,如果我是对的,第一条语句将返回您apple
。第二个有一个嵌套查询,它将返回apple
和banana
,因为两者都有country USA,语句将查找不在该组中的水果,因此它是berry
。因此,最终它只会返回apple
和berry
如果它能反映一切,我会在我的电脑上试试
SELECT DISTINCT f.fruit
FROM TableFruit AS f
LEFT OUTER JOIN TableFruit AS usa ON f.fruit=usa.fruit and usa.country='USA'
WHERE f.shipping = 'ups' AND f.country ='USA'
OR usa.country IS NULL
说明:如果没有满足联接条件的行,则外部联接将为联接表中的所有列返回null。在本例中,它正在查找一行b
,该行与f
和美国国家具有相同的结果。因此,如果没有与美国国家的行,则国家将为空。感谢您的回复。它呼应一切。我正在使用GROUP BY,但它仍然反映了所有内容。我想原因是桌子上有三排香蕉。当你说国家不在(“美国”)时,其他两排没有美国,但仍然是香蕉,这就是为什么它呼应每一种水果。如何解决此问题?是否希望它不显示包含香蕉的行
?@FahadKazmi banana包括美国。因此它不应显示。它会回显每个水果。感谢您的回复。它呼应一切。我正在使用GROUP BY,但它仍然反映了所有内容。我想原因是桌子上有三排香蕉。当你说国家不在(“美国”)时,其他两排没有美国,但仍然是香蕉,这就是为什么它呼应每一种水果。如何解决这个问题?请查看您的数据库。如果香蕉不在美国,它就不在美国。所以它显示了一切。你想做什么?你和我现在几乎得到了相同的答案,但你的答案在更新后仍然是错误的,因为在或之后,你正在比较国家
,但是你的嵌套查询返回水果
,因此它仍然会回显每个水果。很抱歉我的错误。是的,你是对的。谢谢你这是工作,但它返回[apple,berry,berry,berry]
,我想OP只是想要[apple,berry]
。您可以将分组按
移动到主选择的末尾。@akinuri啊,是的,我没有看到。现在编辑答案。你介意我编辑查询以使其更具可读性吗?我认为这值得一提:)@akinuri这是这篇文章中用小写字母写的唯一答案:(继续:)
SELECT fruit
FROM fruit
WHERE
(country = "USA" AND shipping = "ups")
OR
fruit NOT IN (
SELECT fruit FROM fruit WHERE country = "USA"
)
GROUP BY fruit
SELECT DISTINCT f.fruit
FROM TableFruit AS f
LEFT OUTER JOIN TableFruit AS usa ON f.fruit=usa.fruit and usa.country='USA'
WHERE f.shipping = 'ups' AND f.country ='USA'
OR usa.country IS NULL