single 與 up to 1 rows的區別
[@more@]
選擇一條記錄:single 、 up to 1 rows
使用single : 在where語句中如果使用了全部的key欄位可以使用single
格式: SELECT single Field_Name_List
FROM Table_Name
WHERE Condition_List
使用up to 1 rows : 在where語句中如果使用了部分或沒有使用key欄位,則只能使用up to 1 rows
格式 : SELECT Field_Name_List
FROM Table_Name
up to 1 rows
WHERE Condition_List
ENDSELECT
例題 : 表kssk,其中MANDT、OBJEK、MAFID、KLART、CLINT、ADZHL為key欄位。
使用single : SELECT single CLINT
INTO KSSK-CLINT
FROM KSSK
WHERE OBJEK EQ INOD-CUOBJ
AND MAFID EQ C_O_SIGN
AND KLART EQ C_KLART
使用up to 1 rows : SELECT CLINT
INTO KSSK-CLINT
FROM KSSK
up to 1 rows
WHERE OBJEK EQ INOD-CUOBJ
AND MAFID EQ C_O_SIGN
AND KLART EQ C_KLART
ENDSELECT
在使用single時是錯誤的,而使用up to 1 rows是正確的。
因為single,在where子句中要使用所有key欄位的作為條件才能使用single。
而up to 1 rows 則使用了部分或沒有使用key欄位都可以使用。
single 取第一個符合條件的資料,不需要繼續再查詢下去。
up to 1 rows 先查詢所有資料,再取一條符合條件的資料。
up to n rows 可以取n條資料。
各有好處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9437124/viewspace-997334/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- FIRST_ROWS和FIRST_ROWS_n的區別
- FIRST_ROWS和FIRST_ROWS(N)的區別 (zt)
- DataTable.ImportRow()與DataTable.Rows.Add()的區別Import
- [20180917]關於分析函式的range與rows的區別.txt函式
- docker-compose up start restart區別DockerREST
- exit(0)與exit(1)、return的區別
- 粵語與普通話的區別1
- struts1與struts2的區別
- ??與?:的區別
- Flutter Dart語法(1):extends 、 implements 、 with的用法與區別FlutterDart
- MySQL的@與@@區別MySql
- mybatis #與$的區別MyBatis
- Null 與 “” 的區別Null
- &與&&, |與||區別
- in與exist , not in與not exist 的區別
- Tensorflow1.x 與 Tensorflow2.0 的區別
- Hadoop1.x與Hadoop2的區別Hadoop
- CentOS 與 Ubuntu 的區別CentOSUbuntu
- artice與section的區別
- GET 與 POST 的區別
- WebSocket 與 Socket 的區別Web
- Postgresql與MySQL的區別MySql
- chown與chmod的區別
- LESS與SASS的區別
- free 與 CFRelease 的區別
- gulp與webpack的區別Web
- @Autowired 與@Resource的區別
- let與var的區別
- post與get的區別
- HashSet與HashMap的區別HashMap
- maven與ant的區別Maven
- __new()__ 與 __init()__的區別
- TCP與UDP的區別TCPUDP
- Mysql與mongodb的區別MySqlMongoDB
- typedef與define的區別
- Eureka與Zookeeper的區別
- buffer與cache的區別
- async與defer的區別