【问题标题】:Is it possible to select data in groups / arrays?是否可以选择组/数组中的数据?
【发布时间】:2013-07-15 20:13:29
【问题描述】:

我有一个看起来像这样的数据库:

CREATE TABLE `enter_uniq_data` (
  `user_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `type` set('email','phone','website','address','custom_field') NOT NULL DEFAULT '',
  `value` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`type`),
  UNIQUE KEY `value` (`value`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

用于typeahead。那么是否有可能认为一个选择获取具有定义用户 ID 的所有数据,以便按类型排序,或者我只能通过单独的查询来完成?

【问题讨论】:

    标签: php mysql bootstrap-typeahead


    【解决方案1】:

    如果您未分配的 ID 包含 null,您可以这样做:

    SELECT *
    FROM enter_uniq_data
    WHERE user_id IS NOT NULL
    ORDER BY TYPE
    

    或者,如果你的未分配 ID 包含 0,你可以使用这个:

    SELECT *
    FROM enter_uniq_data
    WHERE user_id != 0
    ORDER BY TYPE
    

    【讨论】:

    • 在这种情况下,我只得到一种类型,但我需要得到所有类型。例如可以同时通过 2 部电话、3 封电子邮件等。
    • 一种类型?这个查询获取的是enter_uniq_data表的记录,你还想要什么?
    • 如果user_id存在,这将获取表中的所有记录。
    • 是的,我知道,但我需要这个结果已经按类型排序。像array('email' => result_of_email, 'phone' => result_of_phones, 'website' => result_of_websites.... 这样的东西所以我的问题是是否可以在 MySQL 级别上做。
    • MySQL 将在数据库中为每条记录返回一行,它不会为您准备数组,您需要使用 PHP 来完成。
    猜你喜欢
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多