【发布时间】:2010-09-27 11:45:03
【问题描述】:
下面是我的表格,一个用户可以有多个特定语言的个人资料,非英语个人资料具有更高的优先级。
+---------+--------+----------------+------------ ----+ |ProfileID |用户ID |ProfileLanguage |ProfilePriority | +---------+--------+----------------+------------ ----+ |1 |1 |zh-CN |2 | +---------+--------+----------------+------------ ----+ |2 |1 |es-MX |1 | +---------+--------+----------------+------------ ----+ |3 |1 |ja-JP |1 | +---------+--------+----------------+------------ ----+ |4 |2 |es-MX |1 | +---------+--------+----------------+------------ ----+ |5 |2 |ja-JP |2 | +---------+--------+----------------+------------ ----+ |6 |2 |de-DE |1 | +---------+--------+----------------+------------ ----+ |7 |3 |zh-CN |2 | +---------+--------+----------------+------------ ----+
例如:当讲西班牙语的访问者请求我的网站时(其中 ProfileLanguage = 'es-MX' 或 ProfilePriority = 2),我想要如下记录:
下面是获取用户的基本 SQL:
SELECT UserID, MIN(ProfilePriority) AS ProfilePriority
FROM Profile
WHERE ProfileLanguage = 'es-MX' OR ProfilePriority = 2
GROUP BY UserID
但是如你所知,我只能获取UserID,但我还需要其他列信息,例如ProfileID等。所以我希望这里的专家能告诉我正确的SQL表达式以获取正确的记录。
【问题讨论】:
-
我相信,在您的结果表中,PROFILE_ID = 2 的第一条记录不符合给定条件。
-
致 Adiel A.:对不起,这是一个写作错误,我刚刚更正了,条件应该是“其中 ProfileLanguage = 'es-MX' 或 ProfilePriority = 2”
-
一个更正的地方...... .猜猜是哪儿。 . .. 在您的查询中 ;)
-
再次抱歉,已更正。谢谢你提醒我;)
标签: sql group-by expression