小编Joh*_*ica的帖子

如何选择一行1亿x

我想使用select中的单行生成以下输出.

SELECT max(t1.id)+1 as new_id FROM t1;
-> 101

However I want to do

SELECT s.last_id, sequence(1..100000000) as new_id 
FROM (SELECT max(table1.id)+1 as last_id FROM table1) s;
-> 101,1
-> 101,2
-> 101,3 
......
-> 101,100000000
Run Code Online (Sandbox Code Playgroud)

在postgreSQL中,我可以使用:

SELECT s.last_id, generate_series(1,100000000) 
FROM (SELECT max(table1.id)+1 as last_id FROM table1) s;  -- returns 100,000,000 rows 
Run Code Online (Sandbox Code Playgroud)

如何在不使用临时表的情况下在MySQL中执行此操作?

mysql

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

函数MySQL不存在

我正在使用以下代码创建我的第一个函数:

CREATE FUNCTION CTRLPRODUCAO.COMPARATOTAIS (AG INT, P INT, ANO INT)
RETURNS BOOLEAN DETERMINISTIC

BEGIN
    (...)
END
Run Code Online (Sandbox Code Playgroud)

当我运行该命令时,收到了Workbench的返回:"0行受影响".好吗?

当我运行SELECT CTRLPRODUCAO.COMPARATOTAIS(1,9,2011)AS TEST时;

我明白了

"错误代码:1305 FUNCTION CTRLPRODUCAO.COMPARATOTAIS不存在"

我究竟做错了什么?

mysql function

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

如何看两个形状是否重叠

我正在尝试编写一个简单的firemonkey测试应用程序.

我有一个表单,有一个面板(align:= alClient).
表格上是2 TCircle.我已经设置了TCircle.Dragmode:= dmAutomatic.

我想拖动圆圈并在圆圈重叠时发生一些事情.
问题是:我没有在TCircle中看到任何称为重叠的方法,也没有看到一个名为重叠的事件.我已经尝试了所有的xxxxDrag事件,但这对我的测试没有帮助.

如何查看拖动的形状何时与另一个形状重叠?
我期待的一个DragOver,DragEnter事件检测这对我来说,但是这似乎并不如此.

当然在Firemonkey中必须有一些标准方法吗?

现在pas文件看起来像:

implementation

{$R *.fmx}

procedure TForm8.Circle1DragEnter(Sender: TObject; const Data: TDragObject;
  const Point: TPointF);
begin
  if Data.Source = Circle1 then Button1.Text:= 'DragEnter';

end;

procedure TForm8.Circle1DragOver(Sender: TObject; const Data: TDragObject;
  const Point: TPointF; var Accept: Boolean);
begin
  if (Data.Source = Circle2) then Button1.Text:= 'Circle2 drag';
end;

procedure TForm8.Circle2DragEnd(Sender: TObject);
begin
  Button1.Text:= 'DragEnd';
end;

procedure TForm8.Circle2DragEnter(Sender: TObject; const Data: TDragObject;
  const Point: TPointF);
begin
  Button1.Text:= 'DragEnter';
end; …
Run Code Online (Sandbox Code Playgroud)

delphi hittest delphi-xe2 firemonkey

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

MySQL if语句条件连接

嗨伙计们我想尝试做类似的事情

SELECT * from accounttable, peopletable, companytable 
WHERE if accounttable.account_type = company 
JOIN companytable 
WHERE companytable.id = accounttable.company_id 
ELSE IF accounttable.account_type = = person 
JOIN peopletable 
  WHERE peopletable.id = accounttable.person_id
Run Code Online (Sandbox Code Playgroud)

对不起它有点sqlenglish但我真的不知道如何写出来!

mysql select if-statement

4
推荐指数
2
解决办法
9977
查看次数

有没有办法自动删除文本字段中的所有前导和尾随空格

在使用TADODataSet组件访问Access数据库的Delphi应用程序中,有什么方法可以在将记录写入磁盘时从文本字段中删除前导和尾随空格?或者在检索数据时,但不修改我的所有查询.

我的意思是在ADO引擎中,没有编写自己Trim()BeforePost每个表上使用.

database delphi ado

4
推荐指数
2
解决办法
955
查看次数

有没有办法强制两个线程在同一个核心上执行?

我有一个处理大量数据的应用程序.
当工作集超过L2(L3)时,缓存性能急剧下降.

我想使用预取数据来解决部分问题.

我想利用在超线程CPU上运行的多线程代码共享核心和缓存这一事实.

第一个线程(A)是工作线程.
第二个线程(B)预取数据.

如果我可以强制两个线程在同一个核心上执行,我可以让线程(B)运行并获取数据.
以下是伪代码的外观.

procedure TWorkerThread.Execute;
begin
  Node:= WalkTheDataTree.GetNode;  
  Dowork(Node.MyData);
  SyncWithThreadB;
end; 

procedure TFetchThread.Execute;
begin
  WaitForThreadA; 
  Node:= WalkTheDataTree_5_nodes_Ahead_of_A.GetNode;  //Prefetch data.
end;
Run Code Online (Sandbox Code Playgroud)

两个线程都以锁步方式执行,工作线程以全速运行,而获取线程等待信号.

有没有办法强制两个线程在HyperThreaded CPU上的同一核心中运行?

我正在使用Delphi XE2.

PS我知道如何使用CPUID指令检测CPU是否支持超线程.

delphi multithreading hyperthreading delphi-xe2

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

为什么编译器坚持我的函数是内联的呢?

我为什么要来

[DCC错误] ProjectCOWArray.dpr(23):E2426内联函数不能包含asm块

program ProjectCOWArray;

{$APPTYPE CONSOLE}

{$R *.res}

type
  PRefCount = ^TRefCount;
  TRefCount = array[0..1] of integer;


  TCOWArray<T> = record
  private
    fData: TArray<T>;
  private
    procedure IncRefCount;  <<-- not inline  
  end;


{ TCOWArray<T> }

procedure TCOWArray<T>.IncRefCount;
asm
  {$if defined(win32)}
  mov eax,fData;
  lock inc dword ptr [eax - 8];
  {$ifend}
  {$if defined(win64)}
  mov rax,fData;
  lock inc dword ptr[rax -12];
  {$ifend}
end;

begin
end.
Run Code Online (Sandbox Code Playgroud)

Delphi XE2没有AtomicIncrement,所以如何解决这个问题呢?
它想保留汇编程序,因为否则我不能使用lock前缀,我不想使用,InterlockedIncrement因为这是一个WinAPI函数,我不希望这种开销.

delphi compiler-errors delphi-xe2

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

我对匿名方法类型使用什么通用约束?

我想声明一个通用记录,如下所示:

type
  TMyDelegate<T: constraint> = record
  private
    fDelegate: T;
  public
    class operator Implicit(a: T): TMyDelegate;
    class operator Implicit(A: TMyDelegate: T);
  end;
Run Code Online (Sandbox Code Playgroud)

我想限制Treference to procedure/function.(越多越好).

我试过这个,但它没有编译:

program Project3;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils;

type

  TProc1 = reference to procedure(a: Integer);
  TProc2 = reference to procedure(b: TObject);

  TTest<T: TProc1, TProc2> = record
  private
    fData: T;
  public
    class operator Implicit(a: T): TTest<T>;
    class operator Implicit(a: TTest<T>): T;
  end;

  { TTest<T> }

class operator TTest<T>.Implicit(a: T): TTest<T>;
begin
  Result.fData:= …
Run Code Online (Sandbox Code Playgroud)

delphi generics anonymous-methods

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

是否有解决方法使类操作符适用于内置类型

我可以使用类操作符来使用中间保持记录.
这样我就可以隐式转换内置类型了.

program TestNewStringHelper; 
{$APPTYPE CONSOLE}
uses
  System.SysUtils;
type
  TStringRecord = record
  private
    Data: string;
  public
    class operator Implicit(const a: TStringRecord): Integer; inline;
    class operator Implicit(const a: string): TStringRecord; inline;
  end;

{ TStringRecord }

class operator TStringRecord.Implicit(const a: string): TStringRecord;
begin
  pointer(Result.Data):= pointer(a);
end;

class operator TStringRecord.Implicit(const a: TStringRecord): Integer;
begin
  Result:= StrToInt(a.Data);
end;

var
  input: TStringRecord;
  output: integer;

begin
  input:= '42';
  output:= input;
  WriteLn(IntToStr(output));
  ReadLn;
end.
Run Code Online (Sandbox Code Playgroud)

我想做一些相反的事情:

var
  input: string;
  output: integer;

begin
  input:= '42';
  output:= input;  //Class operator …
Run Code Online (Sandbox Code Playgroud)

delphi operator-overloading

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

__match_any_sync 在计算能力 6 上的替代方案是什么?

在 cuda 示例中,例如这里__match_all_sync __match_any_sync 用来。

这是一个例子,其中一个经线被分成多个(一个或多个)组,每个组都跟踪自己的原子计数器。

// increment the value at ptr by 1 and return the old value
__device__ int atomicAggInc(int* ptr) {
    int pred;
    //const auto mask = __match_all_sync(__activemask(), ptr, &pred); //error, should be any_sync, not all_sync
    const auto mask = __match_any_sync(__activemask(), ptr, &pred);
    const auto leader = __ffs(mask) - 1;  // select a leader
    int res;
    const auto lane_id = ThreadId() % warpSize;
    if (lane_id == leader) {                 // leader does the update
        res …
Run Code Online (Sandbox Code Playgroud)

cuda gpu-warp

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