我有一张table foo
包含以下两列。这个 reference_uid
可以是相同的 type
创建和删除。
+======================================================+
| 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";
2条答案
按热度按时间drkbr07n1#
我们可以试试这个:
这是因为文本
DELETE
在词典编纂上大于CREATE
因此,假设DELETE
存在。如果DELETE
如果不存在,则默认情况下它只会选择CREATE
.gz5pxeao2#
你也可以把
ORDER BY
以及LIMIT
: