首先,这个问题的标题是可怕的,但我没有找到更好的方式来描述我的问题.
这可能是一种非常简单的方法,但我无法理解.这与这个问题非常相似,但是我在sqlite3(iOS)上运行,所以我怀疑我的选项更加有限.
我有一张包含产品记录的表格.所有记录都有一个ID(注意:我不是在谈论行ID,而是每个产品唯一的标识号).某些产品可能在表中有两个条目(两个具有相同的ID).唯一的区别在于一个特殊的列(假设列COLOR可以是RED或GREEN).
我想要做的是根据COLOR的值创建一个独特产品列表,如果同一产品同时存在GREEN和RED记录,则优先选择GREEN.
简而言之,如果我有以下情况:
id PRODUCT ID COLOUR
1 1001 GREEN
2 1002 GREEN
3 1002 RED
4 1003 RED
Run Code Online (Sandbox Code Playgroud)
我希望我的SELECT返回第1,2和4行.我怎样才能实现这一点?
我目前的方法是使用单独的表,并手动进行连接,但显然这是一个非常糟糕的主意.
注:我试图使用相同的方法从这里:
SELECT *
FROM xx
WHERE f_COLOUR = "GREEN"
UNION ALL
SELECT *
FROM xx
WHERE id not in (SELECT distinct id
FROM xx
WHERE f_COLOUR = "GREEN");
Run Code Online (Sandbox Code Playgroud)
但我得到的结果是1,2,3,4行而不是1,2,4行.我错过了什么?
编辑:还有一个问题:如何使用一部分记录,即.如果不是整个表我想过滤一些记录?
例如,如果我有SELECT*FROM table WHERE productID LIKE"1%"......我如何检索每个独特的产品,但仍然尊重颜色优先级(GREEN> RED)?
您的查询几乎正确.只是使用PRODUCTID而不是ID.
SELECT *
FROM xx
WHERE f_COLOUR = "GREEN"
UNION
SELECT *
FROM xx
WHERE PRODUCTID not in
(SELECT PRODUCTID
FROM xx
WHERE f_COLOUR = "GREEN");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1828 次 |
| 最近记录: |