开发者

Is there a UniData SQL equivalent to the UniQuery SAMPLE keyword?

开发者 https://www.devze.com 2023-04-02 06:44 出处:网络
I\'m using UniData 6. Is there a UniData SQL equivalent to the UniQuery SAMPLE keyword? Using UniQuery, I\'ve always been able to do:

I'm using UniData 6. Is there a UniData SQL equivalent to the UniQuery SAMPLE keyword?

Using UniQuery, I've always been able to do:

SELECT CUST BY NAME SAMPLE 1 

and it would give me the record with the first alphabetical name.

In UniData SQL, I'd like to be able to do something like:

SELECT NAME FROM CUST ORDER BY NAME SAMPLE 1; 

...or, as in other SQL databases...

SELE开发者_运维知识库CT TOP 1 NAME FROM CUST ORDER BY NAME; 

and get just the name of the the customer who's listed first alphabetically. Is there a keyword like this?


Unfortunately, no, there does not appear to be a UniSQL equivalent to the UniQuery SAMPLE keyword. UniSQL consists of a subset of ANSI SQL-92 standards, with some extensions to support multivalue. However, ANSI SQL-92 does not contain a standard for limiting the result set returned from a query, which is why various DBMS have different syntax for doing so.

ANSI SQL-2008 added the FETCH FIRST clause which is the standard way of implementing a limit to the number of rows returned by a query. It would require a pretty significant update to bring UniSQL up to recent standards since it is now 20+ years behind. There doesn't seem to be significant enough demand in the user community to undertake that effort.

Depending on your file's schema, you may be able to apply a workaround. If you are using an auto-incrementing key, you could use a syntax such as:

SELECT foo
FROM bar
WHERE @ID <= 10

The above query would be apply a de facto limit to the number of rows returned.


SELECT will usually only apply to record IDs. If you want to list out attributes, try LIST: LIST INVENTORY PROD_NAME PRICE QTY SAMPLE for instance will return the first 10 product names, prices and quantities.

0

精彩评论

暂无评论...
验证码 换一张
取 消