相关疑难解决方法(0)

MySQL在JOIN语法中将子查询相关联

我想通过指定innertable.id = outertable.id为内部查询提供WHERE条件.但是,MySQL(5.0.45)在'where子句'中报告"未知列'outertable.id'".这种查询是否可行?

内部查询使用GROUP BY将行旋转到列.这可以完全在外部查询中执行,但由于额外的连接可能会产生额外的开销.

或者,我可以在内部查询中省略WHERE条件,而是指定一个ON outertable.id = innerquery.id,但它会获取整个内部查询行集再次连接外部,这是低效的.

实际的SQL如下所示:

select t.ticketid, u.userid, t.fullname, u.loginapi_userid, t.email, tp.subject, tp.contents, a.PhoneNumber, a.Location, a.Extension, a.BusinessUnit, a.Department
from swtickets t
inner join swticketposts tp on t.ticketid = tp.ticketid
inner join swusers u on t.userid = u.userid
left join
  (
  select
  cfv.typeid,
  min(case cfv.customfieldid when 1 then cfv.fieldvalue end) as 'PhoneNumber',
  min(case cfv.customfieldid when 3 then cfv.fieldvalue end) as 'Location',
  min(case cfv.customfieldid when 5 then cfv.fieldvalue end) as 'Extension',
  min(case cfv.customfieldid when 8 then cfv.fieldvalue …
Run Code Online (Sandbox Code Playgroud)

mysql sql join subquery entity-attribute-value

18
推荐指数
1
解决办法
5万
查看次数

在单个查询中为每个DISTINCT选择几条记录

我需要为每个不同的记录选择几行.几乎所谓的问题在SQL Server 2008中为每个不同的ID选择前n条记录,尽管我使用的是MySQL.

这个目的可以通过在这种情况下运行21个查询来实现:1个general和20个来获取子记录,即这样的事情:

SELECT DISTINCT `user_id`
FROM `posts`
WHERE `deleted` = '0'
ORDER BY `user_id` ASC
LIMIT 20
Run Code Online (Sandbox Code Playgroud)

...选择所需的所有行,然后

SELECT *
FROM `posts`
WHERE `deleted` = '0'
AND `user_id` = ?
ORDER BY `id` DESC
LIMIT 5
Run Code Online (Sandbox Code Playgroud)

...在第一个查询选择的每一行的循环中.

基本上,我需要每个用户获得5个帖子.我需要在一个查询中完成此操作.该posts设置是只是举例,我做了这件事所以它,希望,更容易理解我需要什么.

我从以下查询开始:

SELECT * 
FROM `posts` 
WHERE `user_id` 
IN (
    SELECT DISTINCT `user_id` 
    FROM `posts` 
    ORDER BY `user_id` DESC 
    LIMIT 4
) 
LIMIT 5
Run Code Online (Sandbox Code Playgroud)

但是我得到了#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME …

mysql join distinct

5
推荐指数
1
解决办法
7301
查看次数

如果count大于20,如何从表中删除

我有一个mysql表,我需要在添加其他记录之前只包含20条最新记录.每天都会添加新行,因此我希望首先删除任何大于最早允许的记录.

该表包含一个自动增量"id"列,因此我可以轻松确定哪个是最早的记录.

谢谢你的帮助.

mysql

3
推荐指数
1
解决办法
1万
查看次数

PHP MySQL GROUP_CONCAT限制

我无法找到这是可能的,所以,有没有选择限制GROUP_CONCATMySQL函数?

例如:

GROUP_CONCAT(ColName ORDER BY ColName DESC LIMIT 5)
Run Code Online (Sandbox Code Playgroud)

我不想使用子查询,因为这会严重降低性能.我可以稍后在PHP中对数组进行切片,但我想知道还是MySQL已经可以选择在MySQL中实现这一点.

php mysql limit group-concat

1
推荐指数
1
解决办法
2554
查看次数