如何获取MySQL中每个标记最常出现的类别?理想情况下,我想模拟一个计算列模式的聚合函数.
SELECT
t.tag
, s.category
FROM tags t
LEFT JOIN stuff s
USING (id)
ORDER BY tag;
+------------------+----------+
| tag | category |
+------------------+----------+
| automotive | 8 |
| ba | 8 |
| bamboo | 8 |
| bamboo | 8 |
| bamboo | 8 |
| bamboo | 8 |
| bamboo | 8 |
| bamboo | 10 |
| bamboo | 8 |
| bamboo | 9 |
| bamboo | 8 …Run Code Online (Sandbox Code Playgroud) 我有一个联系消息系统的查询,我做的连接越多,指数越来越慢.
表结构基本上是联系表和联系人字段表.
查询多次加入联系人字段表,对于每次加入,它需要两倍的时间.
这是查询.
SELECT SQL_CALC_FOUND_ROWS
`contact_data`.`id`,
`contact_data`.`name`,
`fields0`.`value` AS `fields0`,
`fields1`.`value` AS `fields1`,
`fields2`.`value` AS `fields2`,
...etc...
CONTACT_DATA_TAGS(
GROUP_CONCAT(DISTINCT `contact_data_tags`.`name`),
GROUP_CONCAT(DISTINCT `contact_data_assignment`.`user`),
GROUP_CONCAT(DISTINCT `contact_data_read`.`user`)
) AS `tags`,
GROUP_CONCAT(DISTINCT `contact_data_assignment`.`user`) AS `assignments`,
`contact_data`.`updated`,
`contact_data`.`created`
FROM
`contact_data`
LEFT JOIN contact_data_tags ON contact_data.`id` = contact_data_tags.`data`
LEFT JOIN contact_data_assignment ON contact_data.`id` = contact_data_assignment.`data`
LEFT JOIN contact_data_read ON contact_data.`id` = contact_data_read.`data`
LEFT JOIN contact_data_fields AS fields0 ON contact_data.`id` = fields0.`contact_data_id` AND fields0.`key` = :field1
LEFT JOIN contact_data_fields AS fields1 ON contact_data.`id` = fields1.`contact_data_id` AND …Run Code Online (Sandbox Code Playgroud) 嘿所有,我对我的项目有一些有趣的要求.我需要一个has_one关系,它可以是一个类或另一个类,但没有继承.如果它是唯一的方法,我可以逃脱继承,但两个相关记录具有完全不同的数据,并且根本不相关.
我需要弄清楚的是以下内容.
# 1. Foo never belongs to anything.
# 2. Foo MUST have one assigned sub-record for validity.
# 3. Foo can only have either Bar or Baz assigned.
# 4. Bar and Baz have only ONE common property, and aren't
# related in either data or implementation.
class Foo < ActiveRecord::Base
# Attributes: id, name, value
has_one :assignment, :foreign_key => 'assigned_to', :readonly => true
# Could really use an :object_type for has_one here...
end
class Bar …Run Code Online (Sandbox Code Playgroud) polymorphism activerecord ruby-on-rails has-one polymorphic-associations
我有一个具有这种结构的MySQL数据库表:
table
id INT NOT NULL PRIMARY KEY
data ..
next_id INT NULL
Run Code Online (Sandbox Code Playgroud)
我需要按链表顺序获取数据.例如,给定这些数据:
id | next_id
----+---------
1 | 2
2 | 4
3 | 9
4 | 3
9 | NULL
Run Code Online (Sandbox Code Playgroud)
我需要按顺序获取id = 1,2,4,3,9的行.如何使用数据库查询执行此操作?(我可以在客户端完成.我很好奇是否可以在数据库端完成.因此,说这是不可能的(没有足够的证明)).
有一个终止点也是很好的(例如,在10次提取后停止,或者当行上的某些条件变为真时),但这不是必需的(可以在客户端完成).我(希望我)不需要检查循环引用.
我有以下代码:
public function checkLoginDetails($email, $password) {
$select = $this->select ();
$select->where ( "password=?", md5($password) );
$select->where ( "email=?", $email );
return $this->fetchRow($select);
}
Run Code Online (Sandbox Code Playgroud)
电子邮件和密码直接来自用户.我是否需要使用mysql_real_escape_string过滤电子邮件,或者Zend DB是否为我做了?
谢谢!
我正在尝试使用PHP和SQLite表设置创建一个分层列表,如下所示:
| itemid | parentid | name |
-----------------------------------------
| 1 | null | Item1 |
| 2 | null | Item2 |
| 3 | 1 | Item3 |
| 4 | 1 | Item4 |
| 5 | 2 | Item5 |
| 6 | 5 | Item6 |
Run Code Online (Sandbox Code Playgroud)
这些列表将使用无序列表构建,并允许这种类型的树结构:
Item1
|_Item3
|_Item4
Item2
|_Item5
|_Item6
Run Code Online (Sandbox Code Playgroud)
我已经看到这对目录和平面数组完成了,但我似乎无法使其正常使用此结构并且没有深度限制.
这个表对mysql有什么好处吗?我希望将来能够灵活地使用这种类型的数据存储.使用此表结构,您不能使用PRIMARY KEY而是索引...
我应该更改表格的格式以包含标题 - 主键,宽度,长度,空格,耦合......
ID_NUM Param Value
1 Width 5e-081
1 Length 12
1 Space 5e-084
1 Coupling 1.511
1 Metal Layer M3-0
2 Width 5e-082
2 Length 1.38e-061
2 Space 5e-081
2 Coupling 1.5
2 Metal Layer M310
Run Code Online (Sandbox Code Playgroud) 我正在尝试显示成员记录列表,我有一些表用于显示我需要的内容.
这很容易.我需要帮助的部分是一个表,每个成员记录有许多记录:登录历史记录
我想只显示每个成员记录的第一行,它存在于"登录历史记录"表中.或者,我可能想要翻转并在Login History表中显示最后一条记录.
这是我到目前为止所得到的:
SELECT m.memberid, m.membername, m.gender, mp.phone
FROM tbl_members m,
tbl_members_phones mp,
tbl_members_addresses ma
WHERE m.defaultphoneid = mp.phoneid
AND m.defaultaddressid = ma.addressid
Run Code Online (Sandbox Code Playgroud)
所以这会回报预期的结果.
tbl_members_login_history我要添加到返回结果的2列是:mh.loggedtime,嗯.ipaddy
我知道添加tbl_members_login_history作为LEFT JOIN将返回重复项,所以我认为这里必须有一个Subquery必需,以便只返回memberid存在于其中的第一条记录tbl_members_login_history.
我担心的是,如果历史表中没有记录,我仍然希望显示该成员信息,但将历史记录列保留为NULL.
这会是一个子查询事件吗?如果是这样,如何添加那种LIMIT?
我有一些有关MySQL索引的相关问题:
我的应用程序中有很多插入,我担心MySQL会在每次插入后重建索引。数据不必是实时的,因此我可以在插入特定数量的数据后(如有可能)更新索引。
我mysql在Linux下使用命令行客户端来处理MySQL数据库.如何更改当前工作目录?我没有在文档中找到它.
编辑:这不是上述问题的重复,因为OP限制使用系统的解决方案,他们只是回答如何运行系统命令,它显然从未与系统一起工作.对于如何进入cd,这不是一个好的规范问题mysql.永远不会有一个好的答案.
mysql ×7
sql ×3
activerecord ×1
frequency ×1
group-by ×1
has-one ×1
indexing ×1
linked-list ×1
performance ×1
php ×1
polymorphism ×1
shell ×1
sqlite ×1
subquery ×1
zend-db ×1