令人惊讶的是--这是一个在MySQL中非常有效的查询:
select X, Y from someTable group by X
如果您在Oracle或SQL Server中尝试此查询,您将得到自然错误消息:
Column 'Y' is invalid in the select list because it is not contained in
either an aggregate function or the GROUP BY clause.
那么MySQL如何确定为每个X显示哪个Y呢?它只会选择一个。据我所知,它只选取它找到的第一个Y。原因是,如果Y既不是聚合
下面是我正在使用的SQL语句。
$sql = "SELECT surname, forename, count(*) FROM people WHERE user_id='$user_id'
GROUP BY surname ORDER BY time";
$result = mysql_query($sql);
$count=mysql_num_rows($result);
if($count > 0){
while($row = mysql_fetch_array($result)) {
$i = $i +1;
$person[$i
我有以下SQL代码,它在小数据集上工作得很好。我有一个朋友告诉我,我应该考虑使用SELECT DISTINCT c.name作为循环条件,将其放入MySQL中的FOR循环中。
SELECT c.name, c.limit, c.price, c._low, c._high, c.date
FROM comp c
WHERE c.e_id IN
(SELECT e_id FROM part_e WHERE core_id=23)
OR c.pn IN
(SELECT pn FROM part_ct WHERE core_id=23)
GROUP BY c.name
ORDER BY c.dat
我最近将我的项目从SQL SErver转换为MySQL。
我确实看到我的一个查询在SQL server中执行得更快,在mysql中花费了更多的时间(2秒)。
我在这里做错了什么吗?.Help me来优化它。感谢s
SELECT ReadingDateTime, SUM(DATA) AS PowerTotal FROM
LTMeterReading WHERE MeterID IN(59) and DataTypeID=48 and
ReadingDateTime >= '2010-04-01 12:00:00 AM' AND
ReadingDateTime <
我有两张桌子,一张用来留言,一张用来回复。
我想以列表的形式得到结果,就像我们在电子邮件中使用的一样,比如
问题
回复
回复
回复
如果我用message_id=1在messages表中说了一个问题,在reply表中用reply_id=1回答了3个答复。
$sql="SELECT * FROM messages
RIGHT JOIN replies ON replies.reply_id=messages.message_id
WHERE messages.status='message' AND (messages.to='$
在mysql中使用view和group by时,我得到了错误的结果。
一个简单的表test
id name value
1 a 200
2 a 100
3 b 150
4 b NULL
5 c 120
当使用普通语法时,
select * from (select * from test order by name asc, value asc ) as test group by test.name;
它返回
id name value
2 a 100
4 b NULL
5 c 120
但是,如果将子查询替换为视图,则会显示
"group“子句是否自动保证结果将按该键排序?换句话说,它是否足以写:
select *
from table
group by a, b, c
还是一个人必须写
select *
from table
group by a, b, c
order by a, b, c
我知道,例如,在MySQL中,我不必这样做,但我想知道是否可以通过SQL实现来依赖它。有保证吗?
我创建了一个包含message, sender, to, time的表,我希望按发件人分组和按时间排序这是我的代码
$query= mysql_query("SELECT * FROM `table` ORDER BY `time` GROUP BY `sender`")or die(mysql_error());
while($arr = mysql_fetch_array($query)){
$num = mysql_num_rows($query);
$msg = $arr ['message'];
echo '</br>';
我想知道一个涉及操作符DISTINCT、ORDER BY和LIMIT的SQL查询应该期望什么。我想我的问题根源于对使用SQL运算符的顺序的误解。
例如,
CREATE TABLE test(id int)
SELECT DISTINCT id
FROM test
ORDER BY id
LIMIT 10
根据我对SQL的了解,我看不出下列哪一种(如果有的话)应该发生
对test的前10行进行排序,然后返回该子集中不同的id的列表()--对测试中所有不同的id的列表进行排序,然后返回前10行中的D13</code>D13</code>的列表,然后排序<code&g
在mysql中运行查询时,得到了一些奇怪的结果:
SQL 1:
SELECT *
FROM location
WHERE name LIKE CONCAT('%','SZ','%')
AND `STATUS` = 1
AND location_level IN (4,3)
ORDER BY location_level;
SQL 2:
SELECT *
FROM location
WHERE name LIKE CONCAT('%','SZ','%')
AND `S
当我使用mysql时,我得到了这个错误,请任何人给我解释一下。下面的A,B,C之间有什么不同?
A) select * from table where a=a group by(b) // this execute & work fine
B) select * from table where a=a group by b,c // this execute * work fine
c) select * from table where a=a group by (b,c) // this is giving an error - error is operand should
我正在为我的团队创建一个锻炼日志。我目前拥有的是一个MySQL查询(用PHP编写),该查询检索与当前周发布的帖子相关联的用户is数组。守则如下:
mysql_query("SELECT u_id FROM posts WHERE id IN (SELECT p_id FROM post_groups WHERE g_id='" . $group['id']. "') AND date >= '" . $d_start . "' AND date <= '" . $d_end .
我很难将MySQL查询转换为C#中的linq语法(用于实体框架)。MySQL查询如下所示:
SELECT *
FROM Availability as tableData
WHERE ID = (
SELECT Availability.ID
FROM Availability
WHERE Availability.FrameID = tableData.FrameID
ORDER BY Availability.Date DESC limit 1)
我不知道如何转换这部分FROM table AS someName。
到目前为止,我唯一的解决方案是执行原始SQL查询,如:
dataCo
我有一张低沉的小桌子。
在这里,我必须获取上周完成entry_status ="Completed"的前3名entry_status ="Completed"。
但我不知道如何获取已经完成状态的expert_id顶级3,我使用的是下面的代码片段。
$query = mysql_query("SELECT sum(count_set)
AS 'meta_sum' FROM wp_lead_action_records_date_status
WHERE
last_updated_date >= cur
我被要求在一个网站上订购产品,在过去的3个月里展示任何产品(首先是最近的),然后是其他产品。目前,网站是以类编写的,目前的产品是按日期添加的。为了最小化工作负载,我想知道是否可以在一个sql查询中完成上述工作?我认为它需要两个单独的查询,但我不是sql方面的专家,所以想知道是否可以这样做?
问候
菲尔
编辑
SELECT pr.id, pr.name AS prod_name, pr.eye_size, pr.bridge_size, pr.opt_size, pr.price, pr.range_id, pr.date_added, ra.name AS range_name
FROM oa