【发布时间】:2015-01-29 09:41:14
【问题描述】:
我有一个名为 people 的 MYSQL 表,其列:id|firstname|lastname|birthdate|phone。
我对 MYSQL 很陌生,我正在尝试 UNION 几个 SELECT,以便结果如下所示:
只能显示前 20 个结果
第一个 SELECT 条件是 firstname+lastname+birthdate 的组合:WHERE (birthdate="1980-01-01") AND ((firstname LIKE "%john%") AND (lastname LIKE "%smith %"))
第二个 SELECT 条件是 firstname+lastname 的组合:WHERE (firstname LIKE "%john%") AND (lastname LIKE "%smith%")
第三个 SELECT 条件是通过电话:WHERE phone="0123456"
输出结果实际上必须有 3 列:order|id|type;其中“order”和“type”是别名列
导出的 id 必须是唯一的:如果相同的 id 来自所有 3 个 SELECT(或来自多个 SELECT),那么它必须在输出表中只出现一次
第一个 SELECT 的结果必须为“order”列的值 1,第二个 SELECT 的结果为 2,最后一个 SELECT 的结果为 3
如果多个SELECT产生相同的id值,那么它的行必须有最高的顺序值;其中最高阶可能为 1,从第一个 SELECT
1234563如果 id 来自第二个 SELECT,则它的类型值为“~firstname+lastname~”;最后,如果 id 来自第三个 SELECT,则它的类型值为“~phone~”
如果相同的 id 值来自多个 SELECT,则“type”别名列上的值必须是找到该 id 的 SELECT 之间的串联(例如,如果相同的 id 导致所有3 SELECT 查询然后“类型”列上的值将是“~firstname+lastname+birthdate~~firstname+lastname~~phone~”)
有没有可能实现这样的输出?
【问题讨论】:
-
请尽你最大的努力:SQL 表结构 + SQL 查询。