mysql - 从子查询中选择 "the best result"?

标签 mysql sql

SELECT * FROM table1
WHERE col1 = ANY (
    SELECT DISTINCT col2 FROM table2
    WHERE first = 'blah'
    OR second = 'blahblah'
    OR third = 'blahblahblah' );

子查询检查三列(firstsecondthird)。在此示例中,我使用 ANY,但我希望它像这样返回:

If found `first` return `first`
else if found `second` return `second`
else if found `third` return `third`

知道我在说什么吗?我只能选择优先级为 firstsecondthird

的 1 行(最好的)

最佳答案

我想你想要这个:

SELECT * FROM table1
WHERE col1 = (
    SELECT col2 FROM table2
    WHERE first = 'blah'
    OR second = 'blahblah'
    OR third = 'blahblahblah'
    ORDER BY
    first = 'blah' DESC,
    second = 'blahblah' DESC,
    third = 'blahblahblah' DESC
    LIMIT 1
);

关于mysql - 从子查询中选择 "the best result"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28350324/

相关文章:

java - 如何绑定(bind)到 Cloud Spanner Java API 中的 IN 参数

mysql - 更新查询不起作用?

mysql - 开放地理数据库 : migrate mySQL data to postgreSQL

java - 访问 GAE DB 给出 AccessControlException

mysql - 具有多个 postmeta 左连接的 Wordpress 自定义 SQL 查询

php - 将两个查询合并为一个查询

mysql - 制作类似于 Oracle 序列的机制

mysql - 使用 RStudio 连接数据库 SQL

mysql - 选择多对多关系中所有唯一的可能(多个)值?

sql - 使用 to_clob 后字符串连接的结果太长