【发布时间】:2017-11-23 12:12:04
【问题描述】:
我在 MySQL 中有一个table,如下所示:
我正在尝试以下查询:
select * from test.score_card where playerId in(2,3);
select * from test.score_card where playerId not in(0);
我需要一个单行查询,以便它应该像我通过一样显示输出
playerId 在 WHERE IN 子句中,那么它应该显示选定的行,或者如果我
不传递任何值,那么它应该选择所有行。
【问题讨论】:
-
你怎么称呼这个?这是原始 SQL 查询还是基于用户输入并随后传递给数据库?如果它基于用户输入并且没有传入任何内容,您可以使用“id in coalesce(input-string, id)”并传入“2,3,4,x”,它会说“如果有一个值在输入字符串中,使用它,否则匹配表中每个 id 与其自身匹配的位置。”还有一件事——“0”并不意味着“不存在”。 NULL 表示“没有价值”。在您的上表中,没有“0”,您可以轻松地替换为“and id is not null”,因为 ID 在您的 PK 中,这毫无意义。