我正在尝试运行以下MySQL查询:
SELECT *
FROM user u
JOIN user_categories uc ON u.user_id = uc.user_id
WHERE (uc.category_id = 3 OR uc.category_id = 1)
Run Code Online (Sandbox Code Playgroud)
它目前返回:
Joe,Smith,60657,male
Joe,Smith,60657,male
Mickey,Mouse,60613,female
Petter,Pan,60625,male
Petter,Pan,60625,male
Donald,Duck,60615,male
Run Code Online (Sandbox Code Playgroud)
如果用户属于这两个类别,则它当前将返回两次.如何在不使用SELECT DISTINCT的情况下仅返回用户一次,无论他们属于多少个类别?
总而言之,我是一名贸易程序员,但对于这个特殊的项目,我自己也是DBA.这是我面临的情景:
适用于400-1000客户的Web应用程序.客户是"实体公司",每个公司都有n个.每个客户(公司)平均拥有1GB的数据(总共约2亿行).每个公司在存储的数据类型方面可能有80%的相似数据.另外20%是公司自己定义的自定义数据(基本上是自定义字段).
当你发现客户需要相当不错的反应时间时,我试图找出以便宜的方式扩展这种方法的最佳方法.例如,客户X可能想要获取姓氏为"史密斯"的所有记录,以及像"555"这样的电话,其中客户Y可能想要获取帐号等于"1526A"的所有记录.
最重要的是,性能是关键,我发现很难决定索引什么,如果这甚至会帮助我,因为这些人基本上可以通过UI创建自己的查询.
我的问题是,你会做什么?您是否认为将每个客户分解为自己的数据库是明智的?目前的DB总大小约为400GB.
这是一个完整的重写,所以我有幸能够在需要时重新开始.任何想法,提示将不胜感激.
我希望能够在现实世界环境中获得有关Web应用程序的示例mysql结构的反馈,这些结构来自之前在现实世界中使用过复杂mysql的人们.
例子〜
教育管理应用.80,000名用户.每个用户都有自己的数据库,其中包含-messages -uploads -grades -info的表
以及其他功能的更多表格
我想知道的是,在这样的情况下,任何信息都会受到赞赏
这个数据库模型有效吗?(基本上就像80,000个数据库一样)或者是否存在(我有这种瘙痒的感觉)更好的方法吗? - 这需要什么样的专用服务器?80,000个数据库,每个数据库包含10-15个包含TONS表的表,所有80,000人每天访问该站点20-30次,持续10-20个会话
我是SQl的新手并且尝试自己学习.
我正在学习SQL中if和else语句的用法
这里是我尝试使用的数据,如果或者在下表中声明,我希望根据年龄使用sql查询更新注释,假设年龄介于22和25之间,评论"下毕业"
Age: 26 to 27, comments " post graduate"
Age: 28 to 30, comments "working and single"
Age: 31 to 33, comments " middle level manager and married"
Run Code Online (Sandbox Code Playgroud)
表名:人
personid lastname firstname age comments
1 Cardinal Tom 22
2 prabhu priya 33
3 bhandari abhijeet 24
4 Harry Bob 25
5 krishna anand 29
6 hari hara 31
7 ram hara 27
8 kulkarni manoj 35
9 joshi santosh 28
Run Code Online (Sandbox Code Playgroud) 我有一个查询以检索货运信息。
我希望能够在日期列上使用索引。此列的where子句看起来像shipment.end_alloc_date >= to_date( last week )。当我添加shipment.end_alloc_date <= to_date( next week )索引时使用。但是,我不想使用第二行。
有谁知道如何强迫Oracle仅使用第一个限制来使用此日期索引?
该表包含约180.000行,并且两个sql都检索50行。但是,当我运行解释计划时,end_alloc_date上的索引仅在第二个sql中使用。怎么会导致强迫Oracle使用索引呢?
1) select <some data> from shipment where shipment.end_alloc_date >= to_date( last week )
2) select <some data> from shipment where shipment.end_alloc_date >= to_date( last week ) and shipment.end_alloc_date <= to_date( next week )
我有一个大的SQL语句,我想在c#中运行,但是,我看到的所有示例都是针对长度为一行的SQL语句.
到目前为止,这是我的C#代码.在我的代码之后,我已经包含了Query,我想要运行.
private void button4_Click(object sender, EventArgs e)
{
System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection();
conn.ConnectionString = "Driver={Oracle in OraClient11g_home1};" +
"Dbq=" + "database" +
";Uid=" + "admin" + ";Pwd=" + "admin" + ";";
try
{
conn.Open();
OdbcCommand com = new OdbcCommand("select count(*) from user_tables;", conn);
com.CommandType = CommandType.Text;
OdbcDataReader rdr = com.ExecuteReader();
while (rdr.Read())
{
var mystring = rdr.GetString(0);
MessageBox.Show(mystring);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
conn.Close();
}
Run Code Online (Sandbox Code Playgroud)
SELECT user_id,
user_name,
user_name_full,
(SELECT user_name
FROM MD_SITE_USER …Run Code Online (Sandbox Code Playgroud) 我想从我的 mysql 数据库中获取每天的最高室外温度。它返回我的所有数据,但不返回外部温度。它始终为空。有人能帮我吗?这是mysql代码:
(SELECT MAX(tempOutside), tempInside, pressure, datetime
from weather
WHERE datetime BETWEEN (CURDATE() - INTERVAL 30 DAY) AND CURDATE()
GROUP BY MONTH(datetime), DAY(datetime));
Run Code Online (Sandbox Code Playgroud)
现在返回:
null 18.4 1011 2014-01-23 00:15:04
null 19.2 1010 2014-01-24 00:00:05
null 19.6 1009 2014-01-25 13:15:02
Run Code Online (Sandbox Code Playgroud)
我的错误在哪里?一个解释会很好。谢谢
编辑:
我发现了错误。在我的 PHP 文件中我写了$row_array['tempOutside'] = ...在我更改 mysql 代码后MAX(tempOutside) AS tempOutside, ...它起作用了!
但我现在有一个新问题。它现在返回 maxOutSide 温度,但内部压力值和时间戳不是记录最大外部温度时记录的值。我该如何解决这个问题?应该是这样的:最大室外温度是在下午 5 点记录的 - 当时的内部和压力值是:...