Mysql 使用条件选择检查从表中选择

Mysql 使用条件选择检查从表中选择,mysql,sql,select,mysqli,where-in,Mysql,Sql,Select,Mysqli,Where In,我有一个带有以下两列的表foo。创建和删除的类型的参考uid可以相同 +======================================================+ | reference_uid | type | +======================================================+ | 180f28e3-6abd-45a8-b84c-410e908e62ed |

我有一个带有以下两列的表
foo
。创建和删除的
类型的
参考uid
可以相同

+======================================================+
|  reference_uid                         |    type     | 
+======================================================+
| 180f28e3-6abd-45a8-b84c-410e908e62ed   | CREATE      | 
| 180f28e3-6abd-45a8-b84c-410e908e62ed   | DELETE      | 
+------------------------------------------------------+
下面的查询返回我的两行

SELECT type FROM foo WHERE `reference_uid` = '180f28e3-6abd-45a8-b84c-410e908e62ed';
但我希望这样的查询只返回一行。如果存在类型为DELETE的行,则返回类型为DELETE的行,否则返回类型为CREATE的行(注意类型为CREATE的行将始终存在)

我想我需要在SELECT语句中创建SELECT? 我失败的尝试是

 SELECT type FROM foo WHERE type IN (SELECT type FROM foo WHERE `reference_uid` = '180f28e3-6abd-45a8-b84c-410e908e62ed') WHERE type = "DELETE";
我们可以试试这个:

SELECT
    reference_uid,
    MAX(type) AS max_type
FROM foo
WHERE reference_uid = '180f28e3-6abd-45a8-b84c-410e908e62ed'
GROUP BY
    reference_uid;
这是因为文本
DELETE
在词典上大于
CREATE
,因此,假设存在
DELETE
,则前者将优先于后者。如果
DELETE
不存在,则默认情况下,它只需选择
CREATE

,我们可以尝试以下操作:

SELECT
    reference_uid,
    MAX(type) AS max_type
FROM foo
WHERE reference_uid = '180f28e3-6abd-45a8-b84c-410e908e62ed'
GROUP BY
    reference_uid;

这是因为文本
DELETE
在词典上大于
CREATE
,因此,假设存在
DELETE
,则前者将优先于后者。如果
DELETE
不存在,则默认情况下,它只会选择
CREATE

您还可以使用
按顺序
限制
的简单组合:

SELECT *
FROM `foo`
WHERE `reference_uid` = '180f28e3-6abd-45a8-b84c-410e908e62ed'
ORDER BY `type` DESC LIMIT 1

您还可以使用
按顺序
限制
的简单组合:

SELECT *
FROM `foo`
WHERE `reference_uid` = '180f28e3-6abd-45a8-b84c-410e908e62ed'
ORDER BY `type` DESC LIMIT 1

你说“列”的时候好像是指“行”?谢谢。。。更正:)当你说“列”时,你的意思似乎是“行”?谢谢。。。更正:)