@rex0220/kintone-sql-tools 3.78.0 → 3.79.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-cli/ksql.js +114 -44
- package/dist-engine/index.cjs +14 -14
- package/dist-engine/index.mjs +14 -14
- package/dist-engine/ksql-engine.umd.js +14 -14
- package/dist-engine/meta/bundle-baseline.json +7 -7
- package/dist-engine/meta/cjs.json +3 -3
- package/dist-engine/meta/esm.json +3 -3
- package/dist-engine/meta/umd.json +3 -3
- package/dist-flow/index.cjs +16 -16
- package/dist-flow/index.mjs +16 -16
- package/dist-flow/meta/cjs.json +3 -3
- package/dist-flow/meta/esm.json +3 -3
- package/dist-mcp/ksql-mcp.js +100 -44
- package/dist-mcpb/ksql-mcp.mcpb +0 -0
- package/package.json +1 -1
package/dist-mcp/ksql-mcp.js
CHANGED
|
@@ -38,7 +38,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
38
38
|
var define_KSQL_DOCS_default;
|
|
39
39
|
var init_define_KSQL_DOCS = __esm({
|
|
40
40
|
"<define:__KSQL_DOCS__>"() {
|
|
41
|
-
define_KSQL_DOCS_default = { languageReference: { title: "kSQL \u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9", index: "# kSQL \u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 index\n\nSyntax and dialect reference for kSQL. Read only the section needed for the current task.\n\nSource: `docs/ksql_language_reference.md`\n\n## Sections\n\n- [1. \u57FA\u672C\u30EB\u30FC\u30EB](ksql://language-reference/01-basic-rules)\n- [2. SELECT](ksql://language-reference/02-select)\n- [3. \u7B97\u8853\u5F0F](ksql://language-reference/03-arithmetic-expressions)\n- [4. CASE WHEN](ksql://language-reference/04-case-when)\n- [5. \u6587\u5B57\u5217\u30FB\u6570\u5024\u95A2\u6570](ksql://language-reference/05-string-number-functions)\n- [6. WHERE \u53E5](ksql://language-reference/06-where)\n- [7. JOIN](ksql://language-reference/07-join)\n- [8. GROUP BY / \u96C6\u8A08\u95A2\u6570](ksql://language-reference/08-group-by-aggregates)\n- [9. HAVING](ksql://language-reference/09-having)\n- [10. ORDER BY](ksql://language-reference/10-order-by)\n- [10.1 \u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570](ksql://language-reference/10-1-window-functions)\n- [11. LIMIT / OFFSET](ksql://language-reference/11-limit-offset)\n- [12. UNION / UNION ALL](ksql://language-reference/12-union)\n- [13. WITH \u53E5\uFF08CTE\uFF09](ksql://language-reference/13-with-cte)\n- [14. SHOW APPS / DESCRIBE](ksql://language-reference/14-show-apps-describe)\n- [15. INSERT](ksql://language-reference/15-insert)\n- [16. UPDATE](ksql://language-reference/16-update)\n- [17. UPSERT](ksql://language-reference/17-upsert)\n- [18. DELETE](ksql://language-reference/18-delete)\n- [19. \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB](ksql://language-reference/19-subtable-virtual-table)\n- [20. REORDER](ksql://language-reference/20-reorder)\n- [21. \u30B5\u30D6\u30AF\u30A8\u30EA](ksql://language-reference/21-subqueries)\n- [22. \u5236\u9650\u4E8B\u9805](ksql://language-reference/22-limitations)\n- [23. UI \u6A5F\u80FD](ksql://language-reference/23-ui-features)\n- [24. EXPLAIN](ksql://language-reference/24-explain)\n- [25. \u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB](ksql://language-reference/25-batch-temp-tables)\n- [26. ASSERT](ksql://language-reference/26-assert)\n- [27. Flow dialect 1](ksql://language-reference/27-flow-dialect-1)\n\nIndex URI: ksql://language-reference", sections: { "01-basic-rules": { heading: "1. \u57FA\u672C\u30EB\u30FC\u30EB", text: '## 1. \u57FA\u672C\u30EB\u30FC\u30EB\n\n### \u30C6\u30FC\u30D6\u30EB\u540D\n\nkintone \u306E\u30A2\u30D7\u30EA ID \u3092 `APP` + \u6570\u5B57\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\n\n```sql\nAPP100 -- \u30A2\u30D7\u30EA ID 100\nAPP42 -- \u30A2\u30D7\u30EA ID 42\nAPP100$\u660E\u7D30 -- \u30A2\u30D7\u30EA ID 100 \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u300C\u660E\u7D30\u300D\n```\n\n\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u306F\u533A\u5225\u3057\u307E\u305B\u3093\uFF08`app100` \u3082\u6709\u52B9\uFF09\u3002\n\n### CLI \u62E1\u5F35: `APP@profile`\n\nCLI \u3067\u306F\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\u306E\u672B\u5C3E\u306B `@profile` \u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\n```sql\nAPP100@dev -- APP100 \u3092 dev \u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3067\u5B9F\u884C\nAPP80$\u660E\u7D30@guest -- \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\u3067\u3082\u6307\u5B9A\u53EF\u80FD\n```\n\n\u30EB\u30FC\u30EB:\n\n- `@profile` \u306A\u3057\u306E `APPxxx` \u306F\u65E2\u5B9A profile\uFF08`--profile` / config\uFF09\u3092\u4F7F\u7528\n- profile \u540D\u306E\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u306F\u533A\u5225\u3057\u307E\u305B\u3093\uFF08`APP100@Dev` \u3082\u6709\u52B9\uFF09\n- \u540C\u4E00 SQL \u5185\u3067\u540C\u4E00 APP \u306B\u7570\u306A\u308B profile \u3092\u6DF7\u5728\u53EF\u80FD\uFF08\u5225\u74B0\u5883\u306E\u5225\u30A2\u30D7\u30EA\u3068\u3057\u3066\u6271\u3046\uFF09\n- \u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u30FB\u30B3\u30E1\u30F3\u30C8\u4E2D\u306E `APP100@dev` \u306F `@profile` \u69CB\u6587\u3068\u3057\u3066\u89E3\u91C8\u3057\u307E\u305B\u3093\n- \u30D7\u30E9\u30B0\u30A4\u30F3\u5074\u3067\u306F `@profile` \u975E\u5BFE\u5FDC\u3067\u3059\uFF08`APP100@dev` \u3092\u542B\u3080 SQL \u306F\u30A8\u30E9\u30FC\uFF09\n\n### CLI / MCP / browser engine-library \u62E1\u5F35: \u8AD6\u7406\u30A2\u30D7\u30EA\u53C2\u7167 `LAPP_<NAME>`\n\n\u540C\u3058\u7528\u9014\u30FB\u540C\u3058\u30D5\u30A3\u30FC\u30EB\u30C9\u69CB\u6210\u306E\u30A2\u30D7\u30EA\u3067\u7269\u7406 ID \u3060\u3051\u304C\u74B0\u5883\u3054\u3068\u306B\u7570\u306A\u308B\u5834\u5408\u3001\u8AD6\u7406\u540D\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT * FROM LAPP_ORDERS\nSELECT * FROM LAPP_\u6CE8\u6587\nSELECT * FROM LAPP_ORDERS@prod\nSELECT * FROM LAPP_ORDERS$\u660E\u7D30@prod\n```\n\nCLI / MCP \u306E `LAPP_ORDERS` \u306F\u5B9F\u52B9 profile \u306E `logicalApps.ORDERS` \u306B\u8A2D\u5B9A\u3055\u308C\u305F\u7269\u7406\u30A2\u30D7\u30EA ID\u3078\u3001\u5B9F\u884C\u524D\u306B\u89E3\u6C7A\u3055\u308C\u307E\u3059\u3002browser engine-library \u3067\u306F `runQuery` / `runBatch` / `explainQuery` \u306E `logicalApps` \u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u540C\u3058\u5BFE\u5FDC\u3092\u6E21\u3057\u307E\u3059\u3002`APP100` \u306F\u5F93\u6765\u3069\u304A\u308A\u5E38\u306B\u7269\u7406 ID 100 \u3067\u3042\u308A\u3001\u6697\u9ED9\u306B\u8AD6\u7406\u89E3\u6C7A\u3055\u308C\u307E\u305B\u3093\u3002\n\n```json\n{\n "profiles": {\n "dev": { "logicalApps": { "ORDERS": 100 } },\n "prod": { "logicalApps": { "ORDERS": 1200 } }\n }\n}\n```\n\n\u69CB\u6587\u3068\u5236\u7D04:\n\n- \u8AD6\u7406\u540D\u306E\u958B\u59CB\u6587\u5B57\u306F ASCII \u82F1\u5B57\u307E\u305F\u306F\u65E5\u672C\u8A9E 4 \u7BC4\u56F2\uFF08U+3040\u2013U+30FF\u3001U+3400\u2013U+9FFF\u3001U+F900\u2013U+FAFF\u3001U+FF01\u2013U+FF60\uFF09\u3002\u7D99\u7D9A\u6587\u5B57\u306B\u306F ASCII \u6570\u5B57\u3068 `_` \u3082\u4F7F\u7528\u53EF\u80FD\n- \u8AD6\u7406\u540D\u306F\u6700\u5927 64 UTF-16 \u30B3\u30FC\u30C9\u30E6\u30CB\u30C3\u30C8\u3002SQL \u3068\u8A2D\u5B9A\u30AD\u30FC\u306E\u4E21\u5074\u3092 NFC \u6B63\u898F\u5316\u3057\u3066\u304B\u3089 `toUpperCase()` \u3067 canonical \u5316\u3059\u308B\uFF08ASCII \u3068\u5168\u89D2\u82F1\u5B57\u306F\u5927\u5C0F\u540C\u4E00\u3001\u304B\u306A\u30FB\u6F22\u5B57\u306F\u6587\u5B57\u3069\u304A\u308A\u533A\u5225\uFF09\n- \u534A\u89D2 `$` \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u533A\u5207\u308A\u3001\u534A\u89D2 `@` \u306F profile \u533A\u5207\u308A\u3067\u3042\u308A\u3001\u8AD6\u7406\u540D\u306B\u306F\u542B\u3081\u306A\u3044\u3002\u5168\u89D2 `\uFF04` / `\uFF20`\u3001\u4E2D\u9ED2 `\u30FB`\u3001\u9577\u97F3 `\u30FC` \u306F\u8AD6\u7406\u540D\u306E\u6587\u5B57\u3068\u3057\u3066\u6271\u3046\n- canonical \u5316\u5F8C\u306B\u540C\u540D\u3068\u306A\u308B\u8907\u6570\u30AD\u30FC\u306F\u30A8\u30E9\u30FC\n- config \u306E\u30AD\u30FC\u306F\u88F8\u306E\u8AD6\u7406\u540D\uFF08`ORDERS`\uFF09\u3002`APP100`\u3001`100`\u3001`LAPP_ORDERS` \u306F\u7981\u6B62\n- \u672A\u5B9A\u7FA9\u8AD6\u7406\u540D\u3001\u672A\u77E5 profile\u3001`allowPhysicalAppRefs: false` \u306E profile \u306B\u5BFE\u3059\u308B\u7269\u7406\u53C2\u7167\u306F API \u547C\u3073\u51FA\u3057\u524D\u306B\u30A8\u30E9\u30FC\n- validation \u306F `source`\u3001`logicalName`\u3001\u5185\u90E8 `mappedAppId`\u3001\u6700\u7D42 `appId`\u3001`profile` \u3092\u8FD4\u3059\n- EXPLAIN \u3068\u5229\u7528\u8005\u5411\u3051\u8A3A\u65AD\u306F\u8AD6\u7406\u540D\u30FB\u6700\u7D42\u7269\u7406 ID\u30FBprofile \u3092\u8868\u793A\u3057\u3001\u5185\u90E8 mapped ID \u306F\u8868\u793A\u3057\u306A\u3044\n- CLI \u306E `DELETE FROM LAPP_ORDERS@prod ...` \u306F\u660E\u793A profile \u5236\u7D04\u306B\u3088\u308A\u62D2\u5426\u3002MCP\u3067\u306F\u8A31\u53EF\n- browser engine-library \u306F `@profile` \u3092\u30B5\u30DD\u30FC\u30C8\u305B\u305A\u3001`LAPP_X@p` / `APP100@p` \u3092 API \u547C\u3073\u51FA\u3057\u524D\u306B\u660E\u793A\u30A8\u30E9\u30FC\u306B\u3059\u308B\n\n> **\u79FB\u884C\u4E0A\u306E\u6CE8\u610F\uFF08\u7834\u58CA\u7684\u5909\u66F4\uFF09**: `LAPP_` \u306E\u76F4\u5F8C\u304C\u65E5\u672C\u8A9E\u3067\u59CB\u307E\u308B\u672A\u5F15\u7528\u306E\u8B58\u5225\u5B50\u306F\u3001\n> \u8AD6\u7406\u30A2\u30D7\u30EA\u53C2\u7167\u3068\u3057\u3066\u4E88\u7D04\u3055\u308C\u307E\u3059\u3002\u5F93\u6765\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u306A\u3069\u306B `LAPP_\u6848\u4EF6` \u3092\u4F7F\u3063\u3066\u3044\u305F\u5834\u5408\u306F\u3001\n> \u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067 `` `LAPP_\u6848\u4EF6` `` \u3068\u56F2\u3093\u3067\u8B58\u5225\u5B50\u3068\u3057\u3066\u9000\u907F\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u672A\u5B9A\u7FA9\u306E\u307E\u307E\n> \u5225\u306E\u610F\u5473\u3078\u5909\u308F\u308B\u3053\u3068\u306F\u306A\u304F\u3001API \u547C\u3073\u51FA\u3057\u524D\u306B\u30A8\u30E9\u30FC\u3068\u306A\u308A\u307E\u3059\u3002\n\n### \u30D5\u30A3\u30FC\u30EB\u30C9\u540D\uFF08\u8B58\u5225\u5B50\uFF09\n\n- \u65E5\u672C\u8A9E\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u3092\u30AF\u30A9\u30FC\u30C8\u306A\u3057\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\n- \u30B9\u30DA\u30FC\u30B9\u30FB\u7279\u6B8A\u6587\u5B57\u3092\u542B\u3080\u540D\u524D\u306F\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\n- \u30AD\u30FC\u30EF\u30FC\u30C9\uFF08`SELECT`\u3001`FROM` \u7B49\uFF09\u3068\u540C\u540D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3082\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\n\n```sql\nSELECT \u91D1\u984D, \u62C5\u5F53\u8005\u540D FROM APP100\nSELECT `\u53D7\u6CE8 \u91D1\u984D`, `order` FROM APP100\n```\n\n### \u4E88\u7D04\u8A9E\n\nSQL \u69CB\u6587\u30AD\u30FC\u30EF\u30FC\u30C9\u306F\u672A\u5F15\u7528\u306E\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002JOIN \u95A2\u9023\u306E\u4E88\u7D04\u8A9E\u306F\n`INNER`\u3001`LEFT`\u3001`RIGHT`\u3001`CROSS`\u3001`JOIN`\u3001`ON` \u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u3084\u5225\u540D\u306F\n\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002\n\n```sql\nSELECT `CROSS` FROM APP100\nSELECT x.`CROSS` FROM APP100 AS x\n```\n\n### \u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\n\n\u30B7\u30F3\u30B0\u30EB\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002 \n\u6587\u5B57\u5217\u4E2D\u306E\u30B7\u30F3\u30B0\u30EB\u30AF\u30A9\u30FC\u30C8\u306F `\'\'`\uFF082\u3064\u9023\u7D9A\uFF09\u3067\u30A8\u30B9\u30B1\u30FC\u30D7\u3057\u307E\u3059\u3002\n\n```sql\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = \'\u5B8C\u4E86\'\nWHERE \u5099\u8003 = \'it\'\'s done\' -- it\'s done\n```\n\n### \u6570\u5024\u30EA\u30C6\u30E9\u30EB\n\n\u6574\u6570\u30FB\u5C0F\u6570\u3092\u305D\u306E\u307E\u307E\u8A18\u8FF0\u3057\u307E\u3059\u3002\n\n```sql\nWHERE \u91D1\u984D > 10000\nWHERE \u9032\u6357\u7387 >= 0.5\n```\n\n### \u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\n\n\u30AD\u30FC\u30EF\u30FC\u30C9\uFF08`SELECT`\u3001`WHERE` \u7B49\uFF09\u306F\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u305B\u3093\u3002 \n\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u306F kintone \u306E\u5B9A\u7FA9\u306B\u5F93\u3044\u307E\u3059\uFF08\u901A\u5E38\u306F\u533A\u5225\u3042\u308A\uFF09\u3002\nSELECT \u5217\u5225\u540D\u306E\u82F1\u5B57\uFF08\u5168\u89D2\u3092\u542B\u3080\uFF09\u306F\u7D50\u679C\u5217\u540D\u3067\u5C0F\u6587\u5B57\u3078\u6B63\u898F\u5316\u3055\u308C\u307E\u3059\u3002\n\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u3093\u3067\u3082\u7D50\u679C\u5217\u540D\u306E\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u306F\u4FDD\u6301\u3055\u308C\u307E\u305B\u3093\u3002\n\n\u6B63\u898F\u5316\u3055\u308C\u305F\u5225\u540D\u3092\u6B21\u306E\u6BB5\uFF08CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\uFF09\u3084\u540C\u3058\u6587\u306E `ORDER BY` / `HAVING` \u304B\u3089\u53C2\u7167\u3059\u308B\u3068\u304D\u306F\u3001\u5143\u306E\u8868\u8A18\u3067\u3082\u5C0F\u6587\u5B57\u3067\u3082\u89E3\u6C7A\u3055\u308C\u307E\u3059\uFF08v3.78.0 \u4EE5\u964D\u3002\u305D\u308C\u4EE5\u524D\u306F\u5C0F\u6587\u5B57\u3067\u66F8\u304F\u5FC5\u8981\u304C\u3042\u308A\u307E\u3057\u305F\uFF09\u3002\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u306F kintone \u306E\u5B9A\u7FA9\u3069\u304A\u308A\u533A\u5225\u3057\u307E\u3059\u3002\u7269\u7406\u30A2\u30D7\u30EA\u3068 CTE \u3092\u7D50\u5408\u3057\u305F\u6587\u3067\u672A\u4FEE\u98FE\u306E\u540D\u524D\u304C\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u5B8C\u5168\u4E00\u81F4\u3059\u308B\u3068\u304D\u306F\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u512A\u5148\u3055\u308C\u308B\u306E\u3067\u3001CTE \u5074\u306E\u5217\u3092\u6307\u3059\u306A\u3089 `t.Amount` \u306E\u3088\u3046\u306B\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u540C\u540D\u306E\u5225\u540D\u3092\u4ED8\u3051\u308B\u3068\u5217\u540D\u304C\u5C0F\u6587\u5B57\u5316\u3055\u308C\u308B\u306E\u3067\u3001\u5143\u306E\u8868\u8A18\u3092\u51FA\u529B\u540D\u306B\u6B8B\u3057\u305F\u3044\u306A\u3089\u5225\u540D\u3092\u4ED8\u3051\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002\u8A73\u3057\u3044\u512A\u5148\u9806\u4F4D\u306F [GROUP BY \u306E\u540D\u524D\u306E\u89E3\u6C7A\u9806](#group-by-\u306B\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u6307\u5B9A\u3059\u308B) \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n```sql\nWITH t AS (SELECT \u58F2\u4E0A AS Amount FROM APP100)\nSELECT Amount FROM t ORDER BY Amount;\n-- \u53C2\u7167\u306F Amount / amount \u306E\u3069\u3061\u3089\u3067\u3082\u3088\u304F\u3001\u7D50\u679C\u5217\u540D\u306F amount\n```\n\n### \u30BB\u30DF\u30B3\u30ED\u30F3\n\n\u6587\u672B\u306E\u30BB\u30DF\u30B3\u30ED\u30F3\uFF08`;`\uFF09\u306F\u4EFB\u610F\u3067\u3059\u3002\n\n---', uri: "ksql://language-reference/01-basic-rules" }, "02-select": { heading: "2. SELECT", text: "## 2. SELECT\n\n### \u57FA\u672C\u69CB\u6587\n\n```sql\nSELECT [DISTINCT] \u30AB\u30E9\u30E0\u30EA\u30B9\u30C8\n[FROM \u30C6\u30FC\u30D6\u30EB\u540D [AS \u30A8\u30A4\u30EA\u30A2\u30B9]]\n[JOIN\u53E5]\n[WHERE \u6761\u4EF6]\n[GROUP BY \u30D5\u30A3\u30FC\u30EB\u30C9\u30EA\u30B9\u30C8]\n[HAVING \u6761\u4EF6]\n[ORDER BY \u30AD\u30FC\u30EA\u30B9\u30C8 | KORDER BY \u30AD\u30FC\u30EA\u30B9\u30C8]\n[LIMIT \u4EF6\u6570 [OFFSET \u30B9\u30AD\u30C3\u30D7\u6570]]\n```\n\n`ORDER BY` \u3068 `KORDER BY` \u306F\u6392\u4ED6\u3067\u3059\u3002`KORDER BY` \u306F\u6BD4\u8F03\u610F\u5473\u3092 kintone REST API \u306E\u578B\u5225\u9806\u5E8F\u3078\u5207\u308A\u66FF\u3048\u308B\u5225\u69CB\u6587\u3067\u3001`LIMIT` \u304C\u5FC5\u9808\u306A\u3069\u56FA\u6709\u306E\u6761\u4EF6\u304C\u3042\u308A\u307E\u3059\u3002\u8A73\u7D30\u306F \xA710\u300CORDER BY\u300D\u5185\u306E\u300CKORDER BY\uFF08kintone\u56FA\u6709\u9806\u3001v3.0.0\uFF09\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n`FROM` \u306F\u7701\u7565\u53EF\u80FD\u3067\u3059\uFF08\u5F0F\u5C02\u7528 SELECT\uFF09\u3002\n\n```sql\nSELECT 'xxx' AS a\nSELECT 'ABC' as a;\n```\n\n\u5236\u7D04:\n\n- `FROM` \u7701\u7565\u6642\u306F\u5F0F\u5217\u306E\u307F\u5BFE\u5FDC\uFF08\u4F8B: \u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u3001\u6570\u5024\u6F14\u7B97\u3001\u95A2\u6570\uFF09\n- `SELECT *` / \u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\uFF08\u4F8B: `SELECT \u9867\u5BA2\u540D`\uFF09\u306F\u975E\u5BFE\u5FDC\n\n### \u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u53D6\u5F97\n\n```sql\nSELECT * FROM APP100\n```\n\n### \u7279\u5B9A\u30D5\u30A3\u30FC\u30EB\u30C9\u6307\u5B9A\n\n```sql\nSELECT \u6C0F\u540D, \u91D1\u984D, \u30B9\u30C6\u30FC\u30BF\u30B9 FROM APP100\n```\n\n### \u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u5217\n\n```sql\nSELECT \u9867\u5BA2\u540D, 'XXX' AS a FROM APP60\n```\n\n\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u5217\u306F `AS` \u3067\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u4ED8\u3051\u3066\u5229\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT 'XXX' AS a\n```\n\n### AS \u30A8\u30A4\u30EA\u30A2\u30B9\n\n```sql\nSELECT \u6C0F\u540D AS name, \u91D1\u984D AS amount FROM APP100\n```\n\n### DISTINCT\uFF08\u91CD\u8907\u9664\u53BB\uFF09\n\n```sql\nSELECT DISTINCT \u90FD\u9053\u5E9C\u770C FROM APP100\nSELECT DISTINCT \u30B9\u30C6\u30FC\u30BF\u30B9, \u62C5\u5F53\u8005 FROM APP100\n```\n\n### JOIN \u3067\u306E\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\n\nJOIN \u3092\u4F7F\u3046\u5834\u5408\u3001`\u30A8\u30A4\u30EA\u30A2\u30B9.\u30D5\u30A3\u30FC\u30EB\u30C9\u540D` \u306E\u5F62\u5F0F\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\n\n```sql\nSELECT a.\u6C0F\u540D, b.\u91D1\u984D\nFROM APP100 AS a\nINNER JOIN APP200 AS b ON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n```\n\n`FROM/JOIN` \u306E\u30C6\u30FC\u30D6\u30EB alias \u306F `AS` \u7701\u7565\u5F62\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT a.\u6C0F\u540D, b.\u91D1\u984D\nFROM APP100 a\nINNER JOIN APP200 b ON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n```\n\n---", uri: "ksql://language-reference/02-select" }, "03-arithmetic-expressions": { heading: "3. \u7B97\u8853\u5F0F", text: "## 3. \u7B97\u8853\u5F0F\n\nSELECT \u5217\u30FBWHERE \u53E5\u30FBORDER BY\u30FBUPDATE SET \u3067\u56DB\u5247\u6F14\u7B97\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n| \u6F14\u7B97\u5B50 | \u610F\u5473 |\n|--------|------|\n| `+` | \u52A0\u7B97 |\n| `-` | \u6E1B\u7B97 |\n| `*` | \u4E57\u7B97 |\n| `/` | \u9664\u7B97\uFF08\u30BC\u30ED\u9664\u7B97\u306F NaN\uFF09 |\n| `%` | \u5270\u4F59\u30FB\u4F59\u308A\uFF08\u30BC\u30ED\u9664\u7B97\u306F NaN\uFF09 |\n\n```sql\n-- SELECT \u5217\u3067\u7B97\u8853\u5F0F\nSELECT \u5358\u4FA1 * \u6570\u91CF AS \u5C0F\u8A08 FROM APP100\nSELECT \u91D1\u984D * 1.1 AS \u7A0E\u8FBC\u91D1\u984D FROM APP100\nSELECT (\u58F2\u4E0A - \u539F\u4FA1) / \u58F2\u4E0A AS \u7C97\u5229\u7387 FROM APP100\nSELECT \u6570\u91CF % 3 AS \u4F59\u308A FROM APP100\n\n-- \u5148\u884C\u3057\u3066\u5B9A\u7FA9\u3057\u305F\u6570\u5024\u30D0\u30C3\u30C1\u5909\u6570\u3082\u76F4\u63A5\u4F7F\u7528\u53EF\u80FD\nSET @total = (SELECT SUM(\u58F2\u4E0A) FROM APP100);\nSELECT (\u58F2\u4E0A * 100) / @total AS \u69CB\u6210\u6BD4 FROM APP100\n\n-- \u95A2\u6570\u306E\u7D50\u679C\u3082\u88AB\u6F14\u7B97\u5B50\u3068\u3057\u3066\u4F7F\u7528\u53EF\u80FD\nSELECT ROUND(\u5408\u8A08\u8CBB\u7528) / 2 AS \u534A\u984D FROM APP100\nSELECT LENGTH(\u9867\u5BA2\u540D) * 100 AS \u30B9\u30B3\u30A2 FROM APP100\n\n-- WHERE \u53E5\u306E\u5DE6\u8FBA\u30FB\u53F3\u8FBA\u306B\u7B97\u8853\u5F0F\uFF08FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\uFF09\nWHERE \u91D1\u984D * 1.1 > 10000\nWHERE (\u5358\u4FA1 + \u9001\u6599) * \u6570\u91CF < 5000\nWHERE \u7A0E\u8FBC\u91D1\u984D = \u91D1\u984D * 1.1\n```\n\n\u6F14\u7B97\u5B50\u306E\u512A\u5148\u9806\u4F4D\u306F\u901A\u5E38\u306E\u7B97\u8853\u898F\u5247\uFF08`*` `/` > `+` `-`\uFF09\u306B\u5F93\u3044\u3001\u30AB\u30C3\u30B3\u3067\u660E\u793A\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\n\u7B97\u8853\u5F0F\u306E\u5909\u6570\u306F\u6570\u5024\u3067\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002\u6587\u5B57\u5217\u5909\u6570\u3092\u76F4\u63A5\u7B97\u8853\u307E\u305F\u306F `ROUND(\u7B97\u8853\u5F0F, ...)` \u306E\u7B97\u8853\u90E8\u5206\u306B\u4F7F\u3046\u3068\u3001`ArgumentError: variable @\u540D\u524D is not numeric and cannot be used in arithmetic.` \u3067\u505C\u6B62\u3057\u307E\u3059\u3002\u672A\u5B9A\u7FA9\u5909\u6570\u3068\u914D\u5217\u5909\u6570\u306F \xA725 \u306E\u65E2\u5B58\u30A8\u30E9\u30FC\u898F\u5247\u306B\u5F93\u3044\u307E\u3059\u3002\n\n> **WHERE \u7B97\u8853\u5F0F\u306F FULL_SCAN \u30E2\u30FC\u30C9:** kintone API \u306B\u5909\u63DB\u3067\u304D\u306A\u3044\u305F\u3081\u5168\u4EF6\u53D6\u5F97\u5F8C JS \u3067\u8A55\u4FA1\u3057\u307E\u3059\u3002\n\n### \u7B97\u8853\u306E\u7CBE\u5EA6\u3068\u7A7A\u30BB\u30EB\uFF08\u91CD\u8981\u306A\u5236\u7D04\uFF09\n\n\u7B97\u8853\u5F0F\u306F **IEEE 754 \u500D\u7CBE\u5EA6\u6D6E\u52D5\u5C0F\u6570\u70B9\uFF08JavaScript \u306E number\uFF09** \u3067\u8A55\u4FA1\u3057\u3001\u7D50\u679C\u306E\u4E38\u3081\u30FB\u91CF\u5B50\u5316\u306F\u884C\u3044\u307E\u305B\u3093\u3002`SUM` / `AVG` \u3068\u7D71\u8A08\u96C6\u7D04\uFF08\u5206\u6563\u30FB\u6A19\u6E96\u504F\u5DEE\u30FB\u4E2D\u592E\u5024\uFF09\u3082 binary64 \u3067\u8A08\u7B97\u3057\u307E\u3059\u3002\u7D71\u8A08\u96C6\u7D04\u306F\u53B3\u5BC6 10 \u9032\u6F14\u7B97\u306E\u5BFE\u8C61\u5916\u3067\u3059\u3002\u6B21\u306E\u5236\u7D04\u304C\u3042\u308A\u307E\u3059\u3002\n\n**1. \u5C0F\u6570\u306E\u8868\u73FE\u8AA4\u5DEE**\uFF08\u6841\u6570\u306B\u3088\u3089\u305A\u3001\u5024\u306B\u4F9D\u5B58\u3057\u3066\u767A\u751F\u3057\u307E\u3059\uFF09\n\n```sql\nSELECT \u91D1\u984D * 1.1 FROM APP100 -- \u91D1\u984D=3000 \u2192 3300.0000000000005\n -- \u91D1\u984D=1000 \u2192 1100\uFF08\u3053\u306E\u5024\u3067\u306F\u305F\u307E\u305F\u307E\u8AA4\u5DEE\u306A\u3057\uFF09\nSELECT 0.1 + 0.2 -- 0.30000000000000004\n```\n\n\u3053\u306E\u305F\u3081 `WHERE \u91D1\u984D * 1.1 = 3300` \u306E\u3088\u3046\u306A**\u7B97\u8853\u7D50\u679C\u306E\u7B49\u5024\u6BD4\u8F03\u306F\u5931\u6557\u3059\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059**\u3002\u7B49\u5024\u3067\u6BD4\u8F03\u3059\u308B\u5834\u5408\u306F `ROUND(\u91D1\u984D * 1.1, 2)` \u306E\u3088\u3046\u306B\u4E38\u3081\u3066\u304F\u3060\u3055\u3044\u3002\n\n**2. \u7B97\u8853\u306E\u6709\u52B9\u6841\u306F 15\u301C17 \u6841**\uFF08\u6574\u6570\u306F 9,007,199,254,740,992 = 2^53 \u307E\u3067\u6B63\u78BA\uFF09\n\n```sql\nSELECT 9007199254740993 + 1 -- \u2192 9007199254740992\uFF08+1 \u304C\u7D50\u679C\u306B\u53CD\u6620\u3055\u308C\u306A\u3044\uFF09\n```\n\n\u5358\u7D14\u306A\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u306F\u5143\u306E10\u9032\u5B57\u53E5\u3092\u4FDD\u6301\u3059\u308B\u305F\u3081\u3001\u6BD4\u8F03\u30FBREST query\u30FB\u5358\u7D14DML\u3067\u306F\u4E38\u307E\u308A\u307E\u305B\u3093\u3002`1e3` / `1.2E-3` \u306E\u6307\u6570\u8868\u8A18\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u4E00\u65B9\u3001\u7B97\u8853\u3078\u5165\u308B\u3068JavaScript number\u306B\u306A\u308A\u3001\u5B89\u5168\u6574\u6570\u57DF\u3092\u8D85\u3048\u308B\u6574\u6570\u3067\u306F1\u306E\u4F4D\u306E\u5909\u5316\u304C\u6D88\u3048\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n\n**3. kintone \u306E\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u306F\u7D50\u679C\u304C\u7570\u306A\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059**\n\nkintone \u306E\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u30B5\u30FC\u30D0\u30FC\u5074\u306E 10 \u9032\u6F14\u7B97\uFF0B\u30A2\u30D7\u30EA\u306E `numberPrecision` \u8A2D\u5B9A\uFF08\u6841\u6570\u30FB\u4E38\u3081\u30E2\u30FC\u30C9\uFF09\u3067\u4E38\u3081\u305F\u5024\u3092\u8FD4\u3057\u307E\u3059\u3002\u540C\u3058\u5F0F\u3067\u3082 kSQL \u306E\u7B97\u8853\u306F\u751F\u306E\u6D6E\u52D5\u5C0F\u6570\u70B9\u5024\u3092\u8FD4\u3059\u305F\u3081\u3001\u7D50\u679C\u304C\u4E00\u81F4\u3057\u306A\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\uFF08\u5B9F\u6E2C: \u5B9A\u7FA9\u304C\u540C\u3058 `\u91D1\u984D * 1.1` \u3067\u3001\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9= `3300`\u30FBkSQL= `3300.0000000000005`\uFF09\u3002**\u7CBE\u5EA6\u304C\u91CD\u8981\u306A\u8A08\u7B97\u306F kintone \u306E\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u5074\u306B\u5BC4\u305B\u3001kSQL \u3067\u306F\u305D\u306E\u5024\u3092\u53C2\u7167\u3059\u308B**\u306E\u304C\u5B89\u5168\u3067\u3059\u3002\n\n**4. \u7A7A\u30BB\u30EB\u306F 0 \u3068\u3057\u3066\u8A08\u7B97\u3055\u308C\u307E\u3059**\n\n```sql\nSELECT \u91D1\u984D + 1 FROM APP100 -- \u91D1\u984D\u304C\u7A7A\u30BB\u30EB \u2192 1\uFF08\u91D1\u984D=0 \u306E\u884C\u3068\u533A\u5225\u3067\u304D\u306A\u3044\uFF09\n```\n\nkintone \u306E\u672A\u8A2D\u5B9A\u5024\u306F\u7A7A\u6587\u5B57\u3067\u3001\u7B97\u8853\u5F0F\u3067\u306F 0 \u306B\u5909\u63DB\u3055\u308C\u307E\u3059\u3002\u7A7A\u30BB\u30EB\u3092\u8A08\u7B97\u5BFE\u8C61\u304B\u3089\u9664\u304D\u305F\u3044\u5834\u5408\u306F `WHERE \u91D1\u984D != ''` \u3067\u9664\u5916\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6BD4\u8F03\u30FBORDER BY \u3067\u306F v3.0.0 \u4EE5\u964D\u3001\u7A7A\u30BB\u30EB\u306F 0 \u3067\u306F\u306A\u304F\u6700\u5C0F\u5024\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059 \u2014 \xA76\u300C\u578B\u4ED8\u304D\u6BD4\u8F03\u300D\u53C2\u7167\uFF09\u3002\n\n> **\u306A\u304A\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u5024\u305D\u306E\u3082\u306E\u306F\u7121\u50B7\u3067\u3059\u3002** kSQL \u306F\u53D6\u5F97\u3057\u305F\u6570\u5024\u3092\u6587\u5B57\u5217\u306E\u307E\u307E\u4FDD\u6301\u3057\u3001\u7B97\u8853\u5F0F\u3092\u901A\u3055\u306A\u3044\u9650\u308A\u6700\u592730\u6841\u3092\u6709\u965010\u9032\u3068\u3057\u3066\u53B3\u5BC6\u6BD4\u8F03\u3057\u307E\u3059\u3002`1.10 = 1.1`\u3001`-0 = 0`\u3001`1e21 = 1000000000000000000000`\u3067\u3059\u3002JS\u7B97\u8853\u30FBSUM/AVG\u30FB\u6570\u5024\u95A2\u6570\u304C\u8FD4\u3059\u5024\u306F\u3001\u65E2\u306Bbinary64\u3078\u4E38\u3081\u3089\u308C\u305F `String(number)` \u306E10\u9032\u5024\u3068\u3057\u3066\u6BD4\u8F03\u3057\u307E\u3059\u3002\n\n---", uri: "ksql://language-reference/03-arithmetic-expressions" }, "04-case-when": { heading: "4. CASE WHEN", text: "## 4. CASE WHEN\n\n\u6761\u4EF6\u5206\u5C90\u3057\u305F\u5024\u3092\u8FD4\u3057\u307E\u3059\u3002SELECT \u5217\u30FBWHERE \u53E5\u30FBUPDATE SET\u3001\u304A\u3088\u3073 v3.16.0 \u4EE5\u964D\u306F\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nCASE\n WHEN \u6761\u4EF61 THEN \u50241\n WHEN \u6761\u4EF62 THEN \u50242\n ...\n [ELSE \u30C7\u30D5\u30A9\u30EB\u30C8\u5024]\nEND [AS \u30A8\u30A4\u30EA\u30A2\u30B9]\n```\n\n### SELECT \u5217\u3067\u306E\u4F7F\u7528\n\n```sql\nSELECT\n \u6C0F\u540D,\n CASE\n WHEN \u91D1\u984D >= 100000 THEN '\u5927\u53E3'\n WHEN \u91D1\u984D >= 10000 THEN '\u4E2D\u53E3'\n ELSE '\u5C0F\u53E3'\n END AS \u9867\u5BA2\u533A\u5206\nFROM APP100\n```\n\n```sql\n-- THEN \u306B\u7B97\u8853\u5F0F\u30FB\u95A2\u6570\nSELECT\n CASE\n WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5272\u5F15' THEN ROUND(\u91D1\u984D * 0.9)\n ELSE \u91D1\u984D\n END AS \u8ACB\u6C42\u91D1\u984D\nFROM APP100\n```\n\n### WHERE \u53E5\u3067\u306E\u4F7F\u7528\n\nWHERE \u53E5\u306E\u5DE6\u8FBA\u30FB\u53F3\u8FBA\u306B CASE WHEN \u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF08FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\uFF09\u3002\n\n```sql\n-- \u5DE6\u8FBA: \u533A\u5206\u306B\u5FDC\u3058\u3066\u6BD4\u8F03\u5024\u3092\u5207\u308A\u66FF\u3048\nWHERE CASE\n WHEN \u533A\u5206 = '\u7279\u5225' THEN \u91D1\u984D\n ELSE 0\n END > 1000\n\n-- \u53F3\u8FBA: \u533A\u5206\u3054\u3068\u306B\u95BE\u5024\u3092\u5909\u3048\u308B\nWHERE \u30B9\u30B3\u30A2 > CASE\n WHEN \u30E9\u30F3\u30AF = 'A' THEN 80\n ELSE 50\n END\n```\n\n### UPDATE SET \u3067\u306E\u4F7F\u7528\n\n```sql\nUPDATE APP100\nSET \u9867\u5BA2\u30E9\u30F3\u30AF = CASE\n WHEN \u91D1\u984D >= 100000 THEN 'S'\n WHEN \u91D1\u984D >= 10000 THEN 'A'\n ELSE 'B'\n END\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5BFE\u8C61'\n```\n\nTHEN / ELSE \u306B\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u306B\u5FDC\u3058\u3066\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u30FB\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u7B49\u306B\u66F8\u304D\u8FBC\u3081\u307E\u3059\u3002\n\n```sql\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E: \u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u5FDC\u3058\u3066\u62C5\u5F53\u8005\u3092\u5207\u308A\u66FF\u3048\nUPDATE APP89\nSET \u62C5\u5F53\u8005 = CASE\n WHEN \u512A\u5148\u5EA6 = '\u9AD8' THEN ['user1', 'user2']\n ELSE 'user3'\n END\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u672A\u7740\u624B'\n\n-- \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9: IF() \u77ED\u7E2E\u8A18\u6CD5\nUPDATE APP89\nSET \u30BF\u30B0 = IF(\u9867\u5BA2\u30E9\u30F3\u30AF = 'A', ['\u91CD\u8981', 'VIP'], '\u901A\u5E38')\nWHERE \u62C5\u5F53\u8005 = 'user1'\n```\n\n### \u5171\u901A\u30EB\u30FC\u30EB\n\n- THEN / ELSE \u306E\u5024\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u30FB\u6570\u5024\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FB\u7B97\u8853\u5F0F\u30FB\u95A2\u6570\u547C\u3073\u51FA\u3057\u30FB**\u914D\u5217\u30EA\u30C6\u30E9\u30EB `[...]`** \u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\n- ELSE \u3092\u7701\u7565\u3059\u308B\u3068\u3001\u3069\u306E\u6761\u4EF6\u306B\u3082\u5408\u81F4\u3057\u306A\u3044\u5834\u5408\u306F NULL \u76F8\u5F53\u306B\u306A\u308A\u307E\u3059\u3002\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u3067\u306F\u5019\u88DC\u304B\u3089\u9664\u5916\u3055\u308C\u3001\u305D\u308C\u4EE5\u5916\u306E\u8868\u793A\u30FB\u66F4\u65B0\u3067\u306F\u7A7A\u6587\u5B57\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\n- IF(\u6761\u4EF6, then\u5024, else\u5024) \u306F CASE WHEN \u306E\u77ED\u7E2E\u8A18\u6CD5\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u3059\n- \u914D\u5217\u30EA\u30C6\u30E9\u30EB\u3092 THEN/ELSE \u3067\u8FD4\u3059\u5834\u5408\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u306B\u5FDC\u3058\u3066\u81EA\u52D5\u5909\u63DB\u3055\u308C\u307E\u3059\uFF08INSERT VALUES / UPDATE SET\uFF09\n- \u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u3067\u4F7F\u3046 `CASE` \u306E\u7D50\u679C\u306F\u30B9\u30AB\u30E9\u30FC\u5024\u306B\u9650\u308A\u307E\u3059\u3002\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u30FB\u30B5\u30D6\u30AF\u30A8\u30EA\u30FB\u96C6\u8A08\u95A2\u6570\u306F THEN / ELSE \u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\n\n### WHEN \u6761\u4EF6\u306E\u8A55\u4FA1\n\n`WHEN` \u306E\u6761\u4EF6\u306B\u306F `WHERE` \u3068\u540C\u3058\u8FF0\u8A9E\u3092\u66F8\u3051\u307E\u3059\uFF08\u6BD4\u8F03 `= != < >`\u30FB`IN`\uFF0F`NOT IN`\u30FB`LIKE`\u30FB`BETWEEN`\u30FB`AND`\uFF0F`OR`\uFF0F`NOT` \u7B49\uFF09\u3002**`WHERE` \u3068\u540C\u3058\u8FF0\u8A9E\u69CB\u6587\u3067\u3001kSQL \u306E\u540C\u3058\u4E8C\u5024\u8A55\u4FA1\u898F\u5247\u306B\u3088\u308A\u884C\u3054\u3068\u306B\u8A55\u4FA1**\u3055\u308C\u3001`IN` \u306E\u4E00\u81F4\u898F\u5247\u3082 \xA76 \u3068\u540C\u4E00\u3067\u3059\uFF08\u8907\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u300C\u3044\u305A\u308C\u304B\u3092\u542B\u3080\u300D\u5224\u5B9A\u306A\u3069\uFF09\u3002\n\n```sql\nSELECT $id,\n CASE WHEN \u533A\u5206 IN ('A', 'B') THEN '\u5BFE\u8C61' ELSE '\u5BFE\u8C61\u5916' END AS \u5224\u5B9A,\n CASE WHEN \u30BF\u30B0 IN ('\u91CD\u8981') THEN 1 ELSE 0 END AS \u91CD\u8981\u30D5\u30E9\u30B0 -- \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\uFF1D\u300C\u542B\u3080\u300D\u5224\u5B9A\nFROM APP100\n```\n\n- CASE / IF \u306F**\u5E38\u306B JavaScript \u3067\u8A55\u4FA1**\u3055\u308C\uFF08kintone \u3078\u306F\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\uFF09\u3001\u6761\u4EF6\u306F FULL_SCAN \u3068\u540C\u3058\u898F\u5247\u3067\u5224\u5B9A\u3057\u307E\u3059\u3002\n- \u3057\u305F\u304C\u3063\u3066\u3001\u9078\u629E\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u306B**\u5B9A\u7FA9\u306B\u7121\u3044\u9078\u629E\u80A2\u5024**\u3092 `WHEN \u2026 IN (\u2026)` \u3078\u6E21\u3057\u3066\u3082\u3001`WHERE` \u304C REST \u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u3066 `GAIA_IQ10` \u306B\u306A\u308A\u5F97\u308B\u306E\u3068\u9055\u3044\u3001CASE \u306E\u6761\u4EF6\u306F\u5E38\u306B\u30ED\u30FC\u30AB\u30EB\u8A55\u4FA1\u306A\u306E\u3067**\u30A8\u30E9\u30FC\u306B\u306A\u3089\u305A\u5358\u306B\u4E0D\u4E00\u81F4**\u306B\u306A\u308A\u307E\u3059\uFF08\xA76 \u306E\u300C\u5B9A\u7FA9\u306B\u7121\u3044\u9078\u629E\u80A2\u5024\u300D\u306E\u6CE8\u610F\u3092\u53C2\u7167\uFF09\u3002\n\n---", uri: "ksql://language-reference/04-case-when" }, "05-string-number-functions": { heading: "5. \u6587\u5B57\u5217\u30FB\u6570\u5024\u95A2\u6570", text: "## 5. \u6587\u5B57\u5217\u30FB\u6570\u5024\u95A2\u6570\n\n\u95A2\u6570\u306F SELECT \u5217\u30FBWHERE \u5DE6\u8FBA\u30FBORDER BY\u30FBCASE WHEN \u306E THEN/ELSE \u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002 \n\u95A2\u6570\u306E\u7D50\u679C\u306F\u7B97\u8853\u5F0F\u306E\u88AB\u6F14\u7B97\u5B50\u3068\u3057\u3066\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n### \u6587\u5B57\u5217\u95A2\u6570\n\n| \u95A2\u6570 | \u69CB\u6587 | \u8AAC\u660E |\n|------|------|------|\n| `UPPER` | `UPPER(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5927\u6587\u5B57\u5909\u63DB |\n| `LOWER` | `LOWER(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5C0F\u6587\u5B57\u5909\u63DB |\n| `TRIM` | `TRIM(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u524D\u5F8C\u306E\u7A7A\u767D\u3092\u9664\u53BB |\n| `LTRIM` | `LTRIM(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5DE6\u5074\u306E\u7A7A\u767D\u3092\u9664\u53BB |\n| `RTRIM` | `RTRIM(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u53F3\u5074\u306E\u7A7A\u767D\u3092\u9664\u53BB |\n| `LENGTH` | `LENGTH(\u30D5\u30A3\u30FC\u30EB\u30C9)` | UTF-16 \u30B3\u30FC\u30C9\u30E6\u30CB\u30C3\u30C8\u6570\uFF08kintone \u306E\u6587\u5B57\u6570\uFF09\u3092\u8FD4\u3059 |\n| `LENGTH_CHAR` | `LENGTH_CHAR(\u30D5\u30A3\u30FC\u30EB\u30C9)` | Unicode \u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u6570\u3092\u8FD4\u3059 |\n| `SUBSTRING` | `SUBSTRING(\u30D5\u30A3\u30FC\u30EB\u30C9, \u958B\u59CB [, \u9577\u3055])` | \u90E8\u5206\u6587\u5B57\u5217\uFF081-indexed\u3001`SUBSTR` \u3082\u53EF\uFF09 |\n| `LEFT` | `LEFT(\u5024, \u6587\u5B57\u6570)` | \u5148\u982D\u304B\u3089\u6307\u5B9A\u6587\u5B57\u6570\u3092\u8FD4\u3059 |\n| `RIGHT` | `RIGHT(\u5024, \u6587\u5B57\u6570)` | \u672B\u5C3E\u304B\u3089\u6307\u5B9A\u6587\u5B57\u6570\u3092\u8FD4\u3059 |\n| `INSTR` | `INSTR(\u5024, \u691C\u7D22\u6587\u5B57\u5217)` | \u691C\u7D22\u4F4D\u7F6E\u3092 1-indexed \u3067\u8FD4\u3059\uFF08\u898B\u3064\u304B\u3089\u306A\u3051\u308C\u3070 `0`\uFF09 |\n| `CONCAT` | `CONCAT(\u50241, \u50242, ...)` | \u6587\u5B57\u5217\u306E\u9023\u7D50\uFF08\u53EF\u5909\u9577\u5F15\u6570\uFF09 |\n| `REPLACE` | `REPLACE(\u30D5\u30A3\u30FC\u30EB\u30C9, \u691C\u7D22, \u7F6E\u63DB)` | \u6587\u5B57\u5217\u7F6E\u63DB |\n| `REGEXP_LIKE` | `REGEXP_LIKE(\u5024, \u30D1\u30BF\u30FC\u30F3 [, \u30D5\u30E9\u30B0])` | \u4E00\u81F4\u3059\u308C\u3070\u6587\u5B57\u5217 `'1'`\u3001\u975E\u4E00\u81F4\u306A\u3089\u6587\u5B57\u5217 `'0'` |\n| `REGEXP_REPLACE` | `REGEXP_REPLACE(\u5024, \u30D1\u30BF\u30FC\u30F3, \u7F6E\u63DB [, \u30D5\u30E9\u30B0 [, occurrence]])` | \u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B\u7B87\u6240\u306E\u5168\u90E8\u307E\u305F\u306F N \u756A\u76EE\u3092\u7F6E\u63DB |\n| `REGEXP_SUBSTR` | `REGEXP_SUBSTR(\u5024, \u30D1\u30BF\u30FC\u30F3 [, \u30D5\u30E9\u30B0])` | \u6700\u521D\u306E\u4E00\u81F4\u6587\u5B57\u5217\uFF08\u975E\u4E00\u81F4\u306F\u7A7A\u6587\u5B57\uFF09 |\n| `TRANSLATE` | `TRANSLATE(\u5024, \u5909\u63DB\u5143, \u5909\u63DB\u5148)` | \u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u5358\u4F4D\u306E 1 \u6587\u5B57\u5BFE 1 \u6587\u5B57\u5199\u50CF |\n| `COALESCE` | `COALESCE(\u50241, \u50242, ...)` | \u6700\u521D\u306E\u975E\u7A7A\u5024\u3092\u8FD4\u3059\u3002\u5F15\u6570\u304C\u3059\u3079\u3066\u6570\u5024\u306A\u3089\u7D50\u679C\u3082\u6570\u5024\u3068\u3057\u3066\u4E26\u3079\u66FF\u3048\u30FB\u6BD4\u8F03\u3055\u308C\u308B |\n| `ISNULL` | `ISNULL(\u5024, \u4EE3\u66FF\u5024)` | \u5024\u304C\u7A7A\u306A\u3089\u4EE3\u66FF\u5024\u3001\u305D\u308C\u4EE5\u5916\u306F\u5024\uFF08`COALESCE` \u306E 2 \u5F15\u6570\u7248\uFF09\u3002\u5F15\u6570\u304C\u3059\u3079\u3066\u6570\u5024\u306A\u3089\u7D50\u679C\u3082\u6570\u5024\u3068\u3057\u3066\u4E26\u3079\u66FF\u3048\u30FB\u6BD4\u8F03\u3055\u308C\u308B |\n| `NULLIF` | `NULLIF(\u50241, \u50242)` | \u50241 \u3068 \u50242 \u304C\u7B49\u3057\u3051\u308C\u3070\u7A7A\u6587\u5B57\u3001\u305D\u308C\u4EE5\u5916\u306F\u50241\u3002\u5F15\u6570\u304C\u3059\u3079\u3066\u6570\u5024\u306A\u3089\u7D50\u679C\u3082\u6570\u5024\u3068\u3057\u3066\u4E26\u3079\u66FF\u3048\u30FB\u6BD4\u8F03\u3055\u308C\u308B |\n| `GREATEST` | `GREATEST(\u50241, \u50242, ...)` | \u884C\u5185\u306E\u6700\u5927\u5024\uFF082 \u5F15\u6570\u4EE5\u4E0A\uFF09 |\n| `LEAST` | `LEAST(\u50241, \u50242, ...)` | \u884C\u5185\u306E\u6700\u5C0F\u5024\uFF082 \u5F15\u6570\u4EE5\u4E0A\uFF09 |\n| `LPAD` | `LPAD(\u5024, \u9577\u3055 [, \u57CB\u3081\u6587\u5B57\u5217])` | \u5DE6\u5074\u3092\u57CB\u3081\u308B\uFF08\u65E2\u5B9A\u306F\u534A\u89D2\u30B9\u30DA\u30FC\u30B9\uFF09 |\n| `RPAD` | `RPAD(\u5024, \u9577\u3055 [, \u57CB\u3081\u6587\u5B57\u5217])` | \u53F3\u5074\u3092\u57CB\u3081\u308B\uFF08\u65E2\u5B9A\u306F\u534A\u89D2\u30B9\u30DA\u30FC\u30B9\uFF09 |\n\n```sql\nSELECT UPPER(\u30B9\u30C6\u30FC\u30BF\u30B9) AS \u30B9\u30C6\u30FC\u30BF\u30B9 FROM APP100\nSELECT CONCAT(\u59D3, '\u3000', \u540D) AS \u6C0F\u540D FROM APP100\nSELECT '\u6C0F\u540D: ' || \u59D3 || '\u3000' || \u540D AS \u8868\u793A FROM APP100 -- || \u306F CONCAT \u3068\u540C\u7FA9\uFF08v3.4.0\uFF09\nSELECT SUBSTRING(\u90F5\u4FBF\u756A\u53F7, 1, 3) AS \u5E02\u5916\u5C40\u756A FROM APP100\nSELECT LEFT(\u9867\u5BA2\u30B3\u30FC\u30C9, 2) AS \u5206\u985E, RIGHT(\u9867\u5BA2\u30B3\u30FC\u30C9, 4) AS \u9023\u756A FROM APP100\nSELECT LPAD(\u9867\u5BA2No, 5, '0') AS \u9867\u5BA2\u30B3\u30FC\u30C9 FROM APP100\nSELECT GREATEST(\u898B\u7A4D\u984D, \u53D7\u6CE8\u984D, \u8ACB\u6C42\u984D) AS \u6700\u5927\u984D FROM APP100\nSELECT REPLACE(\u96FB\u8A71\u756A\u53F7, '-', '') AS \u96FB\u8A71\u756A\u53F7 FROM APP100\nSELECT REGEXP_LIKE(\u90F5\u4FBF\u756A\u53F7, '^[0-9]{3}-[0-9]{4}$') AS \u66F8\u5F0FOK FROM APP100\nSELECT REGEXP_REPLACE(\u96FB\u8A71\u756A\u53F7, '[^0-9]', '') AS \u6570\u5B57\u306E\u307F FROM APP100\nSELECT REGEXP_SUBSTR(\u30E1\u30E2, '[A-Z]{2}-[0-9]{6}') AS \u53D7\u4ED8\u756A\u53F7 FROM APP100\nSELECT LENGTH(\u4F1A\u793E\u540D) AS kintone\u6587\u5B57\u6570, LENGTH_CHAR(\u4F1A\u793E\u540D) AS \u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u6570 FROM APP100\nSELECT TRANSLATE(\u4F1A\u793E\u540D, '\u555E\u7130\u9DD7', '\u5516\u7114\u9D0E') AS \u4F1A\u793E\u540D FROM APP100\nSELECT COALESCE(\u30E1\u30E2, '\uFF08\u306A\u3057\uFF09') AS \u30E1\u30E2 FROM APP100\nSELECT ISNULL(\u5EFA\u7269\u540D, '\uFF08\u306A\u3057\uFF09') AS \u5EFA\u7269\u540D FROM APP100\nSELECT NULLIF(\u696D\u7A2E, '\u305D\u306E\u4ED6') AS \u696D\u7A2E FROM APP100 -- '\u305D\u306E\u4ED6' \u3092\u7A7A\u306B\u3059\u308B\n```\n\n> `SUBSTRING` \u306E\u958B\u59CB\u4F4D\u7F6E\u306F 1 \u4EE5\u4E0A\u3067\u3059\u3002`0` \u4EE5\u4E0B\u306F `1` \u3068\u540C\u3058\u304F\u5148\u982D\u304B\u3089\u6271\u3044\u307E\u3059\u3002MySQL \u306E\u3088\u3046\u306A\u300C\u8CA0\u6570\uFF1D\u672B\u5C3E\u304B\u3089\u300D\u306E\u5207\u308A\u51FA\u3057\u306B\u306F\u5BFE\u5FDC\u3057\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u672B\u5C3E\u304B\u3089\u53D6\u5F97\u3059\u308B\u5834\u5408\u306F `RIGHT` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n`SUBSTRING` / `LEFT` / `RIGHT` / `LPAD` / `RPAD` \u306E\u9577\u3055\u5F15\u6570\u306F\u30B3\u30FC\u30C9\u30E6\u30CB\u30C3\u30C8\u4E88\u7B97\u3067\u3059\u3002\u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u3092\u5272\u308B\u5883\u754C\u3067\u306F\u5B89\u5168\u306A\u5074\u3078\u7E2E\u3081\u307E\u3059\u3002\u7D50\u679C\u306F\u5FC5\u305A\u6307\u5B9A\u4E88\u7B97\u4EE5\u4E0B\u306B\u306A\u308A\u307E\u3059\u3002`LPAD` / `RPAD` \u3067\u306F\u3001\u6307\u5B9A\u4E88\u7B97\u306E\u6B8B\u308A\u306B\u57CB\u3081\u6587\u5B57\u5217\u3092\u5B89\u5168\u306B\u53CE\u3081\u3089\u308C\u306A\u3044\u5834\u5408\u3001\u7D50\u679C\u304C\u6307\u5B9A\u9577\u3088\u308A\u77ED\u304F\u306A\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n\n`LENGTH` \u306F kintone \u3068\u540C\u3058 UTF-16 \u30B3\u30FC\u30C9\u30E6\u30CB\u30C3\u30C8\u6570\u3001`LENGTH_CHAR` \u306F Unicode \u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u6570\u3092\u8FD4\u3057\u307E\u3059\u3002\u305F\u3068\u3048\u3070 `LENGTH('\u{20B9F}') = 2`\u3001`LENGTH_CHAR('\u{20B9F}') = 1` \u3067\u3059\u3002`LENGTH(x) - LENGTH_CHAR(x)` \u306F\u3001\u5165\u529B\u306B\u542B\u307E\u308C\u308B\u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u6570\u306B\u306A\u308A\u307E\u3059\u3002`LENGTH_CHAR` \u306F\u66F8\u8A18\u7D20\u6570\u3067\u306F\u306A\u3044\u305F\u3081\u3001IVS\u30FB\u7D50\u5408\u6587\u5B57\u30FBZWJ \u7D75\u6587\u5B57\u3092\u4EBA\u304C\u898B\u308B 1 \u6587\u5B57\u3068\u3057\u3066\u307E\u3068\u3081\u307E\u305B\u3093\u3002\n\n`TRANSLATE` \u306F `\u5909\u63DB\u5143` \u3068 `\u5909\u63DB\u5148` \u3092\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u5358\u4F4D\u3067\u4F4D\u7F6E\u5BFE\u5FDC\u3055\u305B\u308B\u30011 \u6587\u5B57\u304B\u3089 1 \u6587\u5B57\u3078\u306E\u5199\u50CF\u5C02\u7528\u95A2\u6570\u3067\u3059\u3002\u4E21\u8005\u306E\u6587\u5B57\u6570\u304C\u7570\u306A\u308B\u5834\u5408\u306F `ArgumentError` \u306B\u306A\u308A\u3001`\u5909\u63DB\u5143` \u306B\u540C\u3058\u6587\u5B57\u304C\u8907\u6570\u3042\u308B\u5834\u5408\u306F\u6700\u521D\u306E\u5BFE\u5FDC\u304C\u512A\u5148\u3055\u308C\u307E\u3059\u3002\u5BFE\u5FDC\u3057\u306A\u3044\u5165\u529B\u6587\u5B57\u306F\u305D\u306E\u307E\u307E\u8FD4\u3057\u307E\u3059\u3002`\uFF8E\uFF9E`\uFF082 \u6587\u5B57\uFF09\u304B\u3089 `\u30DC`\uFF081 \u6587\u5B57\uFF09\u306E\u3088\u3046\u306A\u534A\u89D2\u30AB\u30CA\u304B\u3089\u5168\u89D2\u30AB\u30CA\u3078\u306E\u5909\u63DB\u306F 2 \u5BFE 1 \u3092\u542B\u3080\u305F\u3081\u3001`TRANSLATE` \u3060\u3051\u3067\u306F\u3067\u304D\u307E\u305B\u3093\u3002\n\n\u6B63\u898F\u8868\u73FE3\u95A2\u6570\u306F ECMAScript\uFF08JavaScript\uFF09\u65B9\u8A00\u3092\u4F7F\u3044\u3001POSIX ERE \u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u30D5\u30E9\u30B0\u306F `i` / `m` / `s` \u306E\u307F\u6307\u5B9A\u3067\u304D\u3001Unicode \u30E2\u30FC\u30C9 `u` \u306F\u5E38\u306B\u6709\u52B9\u3067\u3059\u3002`g` / `y` / `d` / `u` / `v` \u305D\u306E\u4ED6\u306E\u30D5\u30E9\u30B0\u306F `ArgumentError` \u306B\u306A\u308A\u307E\u3059\u3002`REGEXP_REPLACE` \u306E `occurrence` \u306F\u7701\u7565\u307E\u305F\u306F `0` \u3067\u5168\u4E00\u81F4\u3001\u975E\u8CA0\u6574\u6570 `N`\uFF081 \u4EE5\u4E0A\uFF09\u3067 N \u756A\u76EE\u306E\u4E00\u81F4\u3060\u3051\u3092\u7F6E\u63DB\u3057\u3001\u4E00\u81F4\u6570\u3092\u8D85\u3048\u308B\u5834\u5408\u306F\u5165\u529B\u3092\u5909\u66F4\u3057\u307E\u305B\u3093\u3002kSQL \u3067\u306F\u7B2C4\u5F15\u6570\u304C\u30D5\u30E9\u30B0\u3001\u7B2C5\u5F15\u6570\u304C `occurrence` \u3067\u3042\u308A\u3001MySQL\uFF0FOracle \u3068\u306F\u5F15\u6570\u4F4D\u7F6E\u304C\u7570\u306A\u308A\u307E\u3059\u3002\u7F6E\u63DB\u6587\u5B57\u5217\u306E `$1`\u301C`$99`\u30FB`$<name>`\u30FB`$&`\u30FB`$$` \u306F ECMAScript \u306E\u898F\u5247\u3067\u89E3\u91C8\u3057\u307E\u3059\u3002\u524D\u5F8C\u6587\u5B57\u5217\u3092\u633F\u5165\u3059\u308B `` $` `` \u3068 `$'` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002`REGEXP_SUBSTR` \u306F\u975E\u4E00\u81F4\u3068\u7A7A\u6587\u5B57\u4E00\u81F4\u306E\u3069\u3061\u3089\u3082\u7A7A\u6587\u5B57\u3092\u8FD4\u3059\u305F\u3081\u3001\u533A\u5225\u304C\u5FC5\u8981\u306A\u5834\u5408\u306F `REGEXP_LIKE` \u3092\u4F75\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30D1\u30BF\u30FC\u30F3\u3001\u30D5\u30E9\u30B0\u3001`occurrence` \u306B\u306F\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u306A\u304F\u5F0F\u3084\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u6307\u5B9A\u3067\u304D\u3001\u884C\u3054\u3068\u306B\u5B9F\u884C\u6642\u8A55\u4FA1\u3055\u308C\u307E\u3059\u3002\n\n> **\u6B63\u898F\u8868\u73FE\u306E\u5229\u7528\u306F\u30E6\u30FC\u30B6\u30FC\u8CAC\u4EFB\u3067\u3059\u3002** \u30D1\u30BF\u30FC\u30F3\u306B\u3088\u3063\u3066\u306F ReDoS\uFF08\u7834\u6EC5\u7684\u30D0\u30C3\u30AF\u30C8\u30E9\u30C3\u30AF\uFF09\u3067\u5B9F\u884C\u304C\u66B4\u8D70\u3057\u3001kSQL \u304B\u3089\u306F\u4E2D\u65AD\u3067\u304D\u307E\u305B\u3093\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u306F\u30BF\u30D6\u3092\u5F37\u5236\u7D42\u4E86\uFF08\u540C\u3058\u30BF\u30D6\u306E\u672A\u4FDD\u5B58\u30EC\u30B3\u30FC\u30C9\u7DE8\u96C6\u3068\u672A\u4FDD\u5B58 SQL \u3082\u5931\u308F\u308C\u307E\u3059\uFF09\u3001CLI \u3067\u306F Ctrl+C\u3001MCP \u3067\u306F\u30D7\u30ED\u30BB\u30B9\u3092\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044\u3002MCP \u3067\u306F\u540C\u4E00\u30D7\u30ED\u30BB\u30B9\u306E\u4ED6\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u3082\u505C\u6B62\u3057\u307E\u3059\u3002\n>\n> \u7D50\u679C\u3084\u69CB\u6587\u306E\u53D7\u7406\u53EF\u5426\u306F\u5B9F\u884C\u74B0\u5883\uFF08\u30D6\u30E9\u30A6\u30B6\uFF0FNode\uFF09\u3068\u305D\u306E\u7248\u306B\u4F9D\u5B58\u3057\u5F97\u307E\u3059\u3002\u7279\u306B `\\p{}`\u3001`u+i` \u306E case folding \u306F Unicode \u7248\u5DEE\u3001\u65B0\u3057\u3044\u6B63\u898F\u8868\u73FE\u69CB\u6587\u306F Node \u7248\u5DEE\u306E\u5F71\u97FF\u3092\u53D7\u3051\u3001\u540C\u3058 SQL \u3067\u3082\u30D7\u30E9\u30B0\u30A4\u30F3\u30FBCLI\u30FBMCP \u3067\u7D50\u679C\u304C\u5909\u308F\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\n\n`GREATEST` / `LEAST` \u306F\u3001\u5217\u65B9\u5411\u306E\u96C6\u7D04\u95A2\u6570 `MAX` / `MIN` \u3068\u306F\u7570\u306A\u308A\u3001\u540C\u3058\u884C\u306E\u5F15\u6570\u540C\u58EB\u3092\u6BD4\u8F03\u3057\u307E\u3059\u3002\u7A7A\u6587\u5B57\u306F\u5E38\u306B\u6700\u5C0F\u3067\u3059\u3002\u7A7A\u6587\u5B57\u3092\u9664\u3044\u305F\u96C6\u5408\u304C\u3059\u3079\u3066\u6570\u5024\u306A\u3089\u6570\u5024\u6BD4\u8F03\u3057\u30011 \u3064\u3067\u3082\u975E\u6570\u5024\u306A\u3089\u96C6\u5408\u5168\u4F53\u3092\u6587\u5B57\u5217\u6BD4\u8F03\u3057\u307E\u3059\u3002\u6570\u5024\u304C\u540C\u5024\u306A\u3089\u5143\u306E\u6587\u5B57\u5217\u8868\u8A18\u3092\u4E8C\u6B21\u30AD\u30FC\u306B\u3059\u308B\u305F\u3081\u3001\u5F15\u6570\u9806\u306B\u3088\u3063\u3066\u7D50\u679C\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n\n`LEFT` / `RIGHT` / `INSTR` / `GREATEST` / `LEAST` / `LPAD` / `RPAD` \u306F\u5F15\u6570\u306E\u500B\u6570\u3092\u691C\u8A3C\u3057\u3001\u4E0D\u6B63\u306A\u5834\u5408\u306F `ArgumentError` \u306B\u306A\u308A\u307E\u3059\u3002`LPAD` / `RPAD` \u3067\u57CB\u3081\u6587\u5B57\u5217\u304C\u7A7A\u306E\u5834\u5408\u306F\u3001\u5165\u529B\u5024\u3092\u305D\u306E\u307E\u307E\u8FD4\u3057\u307E\u3059\u3002\n\n- `LENGTH_CHAR` / `TRANSLATE` / `REGEXP_LIKE` / `REGEXP_REPLACE` / `REGEXP_SUBSTR` / `INSTR` / `GREATEST` / `LEAST` / `LPAD` / `RPAD` \u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F `` `REGEXP_LIKE` `` \u306E\u3088\u3046\u306B\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002`LEFT` / `RIGHT` \u306F `LEFT JOIN` / `RIGHT JOIN` \u306E\u4E88\u7D04\u8A9E\u3092\u517C\u306D\u3066\u304A\u308A\u3001\u76F4\u5F8C\u306B `(` \u304C\u3042\u308B\u5834\u5408\u306E\u307F\u95A2\u6570\u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002\n\n> **`ISNULL` \u306F 2 \u5F15\u6570\uFF08SQL Server \u7CFB\uFF09\u3067\u3059\u3002** MySQL \u306E 1 \u5F15\u6570 `ISNULL(\u5F0F)`\uFF08\u771F\u507D\u3092\u8FD4\u3059\uFF09\u3068\u306F**\u5225\u7269**\u3067\u3059\u3002\u7A7A\u5224\u5B9A\u306B\u306F `IS NULL` / `IS NOT NULL`\uFF08\u2192 [\xA76](#6-where-\u53E5)\uFF09\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002\n\n> **`NULLIF` \u306B\u3088\u308B\u30BC\u30ED\u9664\u7B97\u30AC\u30FC\u30C9\u306F\u52B9\u304D\u307E\u305B\u3093\u3002** kintone \u306B\u306F NULL \u304C\u306A\u304F kSQL \u3067\u306F**\u7A7A\u6587\u5B57\u304C NULL \u76F8\u5F53**\u306E\u305F\u3081\u3001`NULLIF(x, 0)` \u306E\u7D50\u679C\uFF08\u7A7A\u6587\u5B57\uFF09\u3092\u9664\u6570\u306B\u3059\u308B\u3068 `Number('') = 0` \u3068\u306A\u308A\u3001\u7D50\u5C40\u30BC\u30ED\u9664\u7B97\u3067 `NaN` \u306B\u306A\u308A\u307E\u3059\u3002\n>\n> ```sql\n> -- \u2717 RDB \u306E\u5B9A\u756A\u3060\u304C kSQL \u3067\u306F NaN\uFF08\u30AC\u30FC\u30C9\u306B\u306A\u3089\u306A\u3044\uFF09\n> SELECT 1000 / NULLIF(\u91D1\u984D, 0) AS \u5358\u4FA1 FROM APP100 -- \u91D1\u984D=0 \u306E\u884C\u3082\u3001\u91D1\u984D\u304C\u7A7A\u30BB\u30EB\u306E\u884C\u3082 NaN\n>\n> -- \u25CB NULL \u7F6E\u63DB\u3068\u3057\u3066\u306F\u6B63\u3057\u304F\u6A5F\u80FD\u3059\u308B\n> SELECT ISNULL(NULLIF(\u91D1\u984D, 0), '\u672A\u8A2D\u5B9A') AS \u91D1\u984D FROM APP100 -- \u91D1\u984D=0 \u306E\u884C\u306F\u300C\u672A\u8A2D\u5B9A\u300D\n>\n> -- \u2717 \u30BC\u30ED\u3060\u3051\u30AC\u30FC\u30C9\u3059\u308B\u3068\u7A7A\u30BB\u30EB\u304C\u3059\u308A\u629C\u3051\u308B\n> SELECT CASE WHEN \u91D1\u984D = 0 THEN '' ELSE 1000 / \u91D1\u984D END AS \u5358\u4FA1 FROM APP100 -- \u91D1\u984D\u304C\u7A7A\u30BB\u30EB\u306E\u884C\u306F NaN\n>\n> -- \u25CB \u7A7A\u30BB\u30EB\u3068\u30BC\u30ED\u306E\u4E21\u65B9\u3092\u30AC\u30FC\u30C9\u3059\u308B\n> SELECT CASE WHEN \u91D1\u984D = '' OR \u91D1\u984D = 0 THEN '' ELSE 1000 / \u91D1\u984D END AS \u5358\u4FA1 FROM APP100\n> ```\n>\n> **`= 0` \u3060\u3051\u3067\u306F\u7A7A\u30BB\u30EB\u3092\u6355\u307E\u3048\u3089\u308C\u307E\u305B\u3093\u3002** \u7A7A\u6587\u5B57\u306F**\u7B97\u8853\u3067\u306F 0 \u306B\u306A\u308A\u307E\u3059\u304C\u3001\u6BD4\u8F03\u3067\u306F 0 \u3068\u7B49\u3057\u304F\u306A\u3044**\u305F\u3081\u3001`CASE WHEN \u91D1\u984D = 0` \u306F\u7A7A\u30BB\u30EB\u306E\u884C\u3092 `ELSE` \u3078\u843D\u3068\u3057\u3001\u305D\u3053\u3067 `Number('') = 0` \u306B\u3088\u308B\u30BC\u30ED\u9664\u7B97\u304C\u8D77\u304D\u307E\u3059\u3002\n\n> **\u3069\u306E\u9664\u6570\u306B\u30AC\u30FC\u30C9\u304C\u8981\u308B\u304B\u306F\u3001\u5024\u306E\u4F5C\u308A\u65B9\u3067\u6C7A\u307E\u308A\u307E\u3059**\uFF08\u5B9F\u6E2C\u30FBv3.54.1\uFF09\u3002\n>\n> | \u9664\u6570\u306E\u4F5C\u308A\u65B9 | \u5024\u304C\u7121\u3044\u3068\u304D | `= 0` \u3060\u3051 | \u5FC5\u8981\u306A\u30AC\u30FC\u30C9 |\n> |---|---|---|---|\n> | **`SUM` / `COUNT` / `AVG` \u3092\u901A\u3057\u305F\u5024** | `0` | \u6355\u307E\u3048\u308B | `= 0` \u3067\u8DB3\u308A\u308B |\n> | **`MIN` / `MAX` \u3092\u901A\u3057\u305F\u5024** | \u7A7A\u6587\u5B57 | **\u3059\u308A\u629C\u3051\u3066 `NaN`** | `= '' OR = 0` |\n> | **\u7D20\u306E\u5217\u3068\u3057\u3066\u6E21\u3063\u3066\u304D\u305F\u5024** | \u7A7A\u6587\u5B57 | **\u3059\u308A\u629C\u3051\u3066 `NaN`** | `= '' OR = 0` |\n>\n> **\u300C\u96C6\u8A08\u3092\u901A\u3057\u305F\u304B\u3089\u5B89\u5168\u300D\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002** `SUM` / `COUNT` / `AVG` \u306F\u5BFE\u8C61\u884C\u304C 1 \u884C\u3082\u7121\u304F\u3066\u3082 `0` \u3092\u8FD4\u3057\u307E\u3059\u304C\uFF08MySQL \u306F `NULL` \u3092\u8FD4\u3059\u305F\u3081\u3001\u3053\u3053\u306F\u65B9\u8A00\u5DEE\u3067\u3059\uFF09\u3001**`MIN` / `MAX` \u306F\u7A7A\u6587\u5B57\u3092\u8FD4\u3057\u307E\u3059**\uFF08v3.54.0 \u3067 `0` \u304B\u3089\u5909\u66F4\u3002\u2192 [\u96C6\u8A08\u95A2\u6570](#\u96C6\u8A08\u95A2\u6570)\uFF09\u3002\n>\n> **\u7A7A\u6587\u5B57\u306F\u300C\u5024\u304C\u7121\u304B\u3063\u305F\u300D\u3053\u3068\u304B\u3089\u751F\u307E\u308C\u307E\u3059**\u2014\u2014`LEFT JOIN` \u3067\u4E00\u81F4\u3057\u306A\u304B\u3063\u305F\u884C\u3001`LAG` / `LEAD` \u3067\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u306E\u7AEF\u3001`NULLIF` \u306E\u7D50\u679C\u3001\u305D\u3057\u3066**\u5BFE\u8C61\u304C 0 \u4EF6\u306E `MIN` / `MAX`**\u3002**\u9664\u6570\u304C\u3053\u308C\u3089\u306E\u3044\u305A\u308C\u304B\u306A\u3089 `= '' OR = 0` \u304C\u8981\u308A\u307E\u3059\u3002**\n>\n> **\u8E0F\u307F\u3084\u3059\u3044\u306E\u306F\u300C\u7387\u300D\u3067\u306F\u306A\u304F\u300C\u301C\u3042\u305F\u308A\u300D\u306E\u6307\u6A19\u3067\u3059\u3002** **\u5728\u5EAB\u65E5\u6570**\uFF08\u5728\u5EAB \xF7 \u51FA\u5EAB\u30DA\u30FC\u30B9\uFF09\u30FB**\u5358\u4FA1**\uFF08\u91D1\u984D \xF7 \u6570\u91CF\uFF09\u30FB**1 \u4EF6\u3042\u305F\u308A**\u30FB**\u56DE\u8EE2\u7387**\u2014\u2014\u3044\u305A\u308C\u3082**\u5206\u6BCD\u304C\u300C\u52D5\u304D\u306E\u7121\u3044\u5BFE\u8C61\u300D\u3067\u7A7A\u306B\u306A\u308A\u307E\u3059**\u3002\u524D\u6708\u6BD4\u306E\u3088\u3046\u306A\u300C\u7387\u300D\u3088\u308A\u3001**\u5BFE\u8C61\u305D\u306E\u3082\u306E\u304C\u6B62\u307E\u3063\u3066\u3044\u308B\u5834\u5408\u306B\u5206\u6BCD\u304C\u6D88\u3048\u308B**\u5F62\u306E\u307B\u3046\u304C\u8E0F\u307F\u3084\u3059\u304F\u3001**\u30A8\u30E9\u30FC\u306F\u51FA\u305A `NaN` \u304C\u8868\u306B\u8F09\u308A\u307E\u3059**\u3002\n>\n> ```sql\n> -- \u96C6\u8A08\u3092\u901A\u3057\u3066\u3044\u308B\u306E\u3067 = 0 \u3067\u8DB3\u308A\u308B\n> SELECT SUM(\u58F2\u4E0A) / COUNT(*) AS \u5E73\u5747 FROM APP100\n>\n> -- LEFT JOIN \u3067\u4E00\u81F4\u3057\u306A\u3044\u884C\u306E \u51FA\u5EAB\u6570 \u306F\u7A7A\u6587\u5B57\u3002= '' \u304C\u8981\u308B\n> SELECT CASE WHEN s.\u51FA\u5EAB\u6570 = '' OR s.\u51FA\u5EAB\u6570 = 0 THEN '' ELSE 1000 / s.\u51FA\u5EAB\u6570 END\n> FROM APP200 m LEFT JOIN #\u96C6\u8A08 s ON m.\u88FD\u54C1\u540D = s.\u88FD\u54C1\u540D\n> ```\n\n### \u6570\u5024\u95A2\u6570\n\n| \u95A2\u6570 | \u69CB\u6587 | \u8AAC\u660E |\n|------|------|------|\n| `ROUND` | `ROUND(\u30D5\u30A3\u30FC\u30EB\u30C9 [, \u6841])` | \u56DB\u6368\u4E94\u5165 |\n| `FLOOR` | `FLOOR(\u30D5\u30A3\u30FC\u30EB\u30C9 [, \u6841])` | \u5207\u308A\u6368\u3066 |\n| `CEIL` | `CEIL(\u30D5\u30A3\u30FC\u30EB\u30C9 [, \u6841])` | \u5207\u308A\u4E0A\u3052\uFF08`CEILING` \u3082\u53EF\uFF09 |\n| `TRUNCATE` | `TRUNCATE(\u30D5\u30A3\u30FC\u30EB\u30C9 [, \u6841])` | 0 \u65B9\u5411\u3078\u5207\u308A\u6368\u3066\uFF08`TRUNC` \u3082\u53EF\uFF09 |\n\n\u6841\u6570\u306E\u6307\u5B9A:\n- \u6B63\u306E\u6574\u6570: \u5C0F\u6570\u70B9\u4EE5\u4E0B n \u6841\u3067\u4E38\u3081\u308B\n- `0`\uFF08\u7701\u7565\u6642\uFF09: \u6574\u6570\u306B\u4E38\u3081\u308B\n- \u8CA0\u306E\u6574\u6570: 10^n \u306E\u5358\u4F4D\u3067\u4E38\u3081\u308B\n\n```sql\nSELECT ROUND(\u91D1\u984D, 2) AS \u91D1\u984D FROM APP100 -- \u4F8B: 1234.567 \u2192 1234.57\nSELECT ROUND(\u91D1\u984D) AS \u91D1\u984D FROM APP100 -- \u4F8B: 1234.5 \u2192 1235\nSELECT ROUND(\u91D1\u984D, -3) AS \u5343\u5358\u4F4D FROM APP100 -- \u4F8B: 1234567 \u2192 1235000\nSELECT FLOOR(\u91D1\u984D, -2) AS \u767E\u672A\u6E80\u5207\u6368 FROM APP100\nSELECT TRUNCATE(\u91D1\u984D, 2) AS \u5C0F\u65702\u6841\u5207\u6368 FROM APP100\n```\n\n`FLOOR` \u304C\u5E38\u306B\u5C0F\u3055\u3044\u65B9\u3078\u4E38\u3081\u308B\u306E\u306B\u5BFE\u3057\u3001`TRUNCATE` \u306F 0 \u65B9\u5411\u3078\u4E38\u3081\u307E\u3059\u3002\u8CA0\u6570\u3067\u5DEE\u304C\u51FA\u307E\u3059\uFF08`FLOOR(-1.5)` = `-2`\u3001`TRUNCATE(-1.5)` = `-1`\uFF09\u3002\n\n- `TRUNCATE` / `TRUNC` \u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F `` `TRUNCATE` `` \u3068\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002\n\n### \u6570\u5B66\u95A2\u6570\n\n| \u95A2\u6570 | \u69CB\u6587 | \u8AAC\u660E |\n|------|------|------|\n| `ABS` | `ABS(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u7D76\u5BFE\u5024 |\n| `MOD` | `MOD(\u30D5\u30A3\u30FC\u30EB\u30C9, \u9664\u6570)` | \u5270\u4F59\uFF08`%` \u6F14\u7B97\u5B50\u3068\u540C\u7B49\uFF09 |\n| `POWER` | `POWER(\u30D5\u30A3\u30FC\u30EB\u30C9, \u6307\u6570)` | \u7D2F\u4E57\uFF08`POW` \u3082\u53EF\uFF09 |\n| `SQRT` | `SQRT(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5E73\u65B9\u6839 |\n\n```sql\nSELECT ABS(\u5DEE\u984D) AS \u5DEE\u984D\u7D76\u5BFE\u5024 FROM APP100\nSELECT MOD(\u6570\u91CF, 3) AS \u4F59\u308A FROM APP100 -- \u6570\u91CF % 3 \u3068\u540C\u7B49\nSELECT POWER(\u8FBA\u9577, 2) AS \u9762\u7A4D FROM APP100\nSELECT ROUND(SQRT(\u9762\u7A4D), 2) AS \u8FBA\u9577 FROM APP100\n```\n\n### FORMAT \u95A2\u6570\n\n| \u95A2\u6570 | \u69CB\u6587 | \u8AAC\u660E |\n|------|------|------|\n| `FORMAT` | `FORMAT(\u30D5\u30A3\u30FC\u30EB\u30C9, \u30D1\u30BF\u30FC\u30F3)` | \u66F8\u5F0F\u6574\u5F62 |\n\n\u30D1\u30BF\u30FC\u30F3\u306B\u306F Excel \u98A8\u306E\u66F8\u5F0F\u6587\u5B57\u5217\u307E\u305F\u306F\u6574\u6570\uFF08MySQL \u30B9\u30BF\u30A4\u30EB\uFF09\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n\n| \u30D1\u30BF\u30FC\u30F3 | \u5165\u529B | \u51FA\u529B |\n|---------|------|------|\n| `'#,##0'` | 1234567 | `1,234,567` |\n| `'#,##0.00'` | 1234.5 | `1,234.50` |\n| `'0.00'` | 1234.5 | `1234.50` |\n| `'0.00%'` | 0.156 | `15.60%` |\n| `'#,##0.##'` | 1234.5 | `1,234.5` |\n| `2`\uFF08\u6574\u6570\uFF09 | 1234.5 | `1,234.50` |\n\n```sql\nSELECT FORMAT(\u91D1\u984D, '#,##0') AS \u91D1\u984D\u8868\u793A FROM APP100\nSELECT FORMAT(\u9054\u6210\u7387, '0.00%') AS \u9054\u6210\u7387\u8868\u793A FROM APP100\n```\n\n### \u578B\u5909\u63DB\u95A2\u6570\n\n| \u95A2\u6570 | \u69CB\u6587 | \u8AAC\u660E |\n|------|------|------|\n| `CAST` | `CAST(\u30D5\u30A3\u30FC\u30EB\u30C9 AS \u578B)` | \u578B\u5909\u63DB |\n| `CONVERT` | `CONVERT(\u30D5\u30A3\u30FC\u30EB\u30C9, \u578B)` | \u578B\u5909\u63DB\uFF08`CAST` \u306E\u5225\u8A18\u6CD5\uFF09 |\n\n> \u95A2\u6570\u30A8\u30A4\u30EA\u30A2\u30B9\u306E canonical \u5BFE\u5FDC\u306F `SUBSTR` \u2192 `SUBSTRING`\u3001`CONVERT` \u2192 `CAST`\u3001`CEILING` \u2192 `CEIL`\u3001`TRUNC` \u2192 `TRUNCATE`\u3001`POW` \u2192 `POWER` \u3067\u3059\u3002\n\n\u578B\u540D: `TEXT` / `VARCHAR` / `CHAR` \u2192 \u6587\u5B57\u5217\u3001`NUMBER` / `INT` / `INTEGER` / `DECIMAL` / `FLOAT` \u2192 \u6570\u5024\n\n```sql\nSELECT CAST(\u91D1\u984D AS TEXT) AS \u91D1\u984D\u6587\u5B57\u5217 FROM APP100\nSELECT CAST(\u30B3\u30FC\u30C9 AS NUMBER) AS \u30B3\u30FC\u30C9\u6570\u5024 FROM APP100\n```\n\n### \u65E5\u4ED8\u30FB\u65E5\u6642\u95A2\u6570\n\n> **`WEEK()` \u306F ISO-8601 \u56FA\u5B9A\u3067\u3059\u3002MySQL `WEEK()` \u306E\u65E2\u5B9A mode 0 \u3068\u306F\u4E92\u63DB\u6027\u304C\u306A\u304F\u3001mode \u5F15\u6570\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002** \u9031\u306F\u6708\u66DC\u59CB\u307E\u308A\u3067\u3001\u305D\u306E\u5E74\u306E\u6728\u66DC\u65E5\u3092\u542B\u3080\u9031\u304C W01 \u3067\u3059\u3002\n\n| \u95A2\u6570 | \u69CB\u6587 | \u8AAC\u660E |\n|------|------|------|\n| `YEAR` | `YEAR(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5E74\u3092\u8FD4\u3059 |\n| `MONTH` | `MONTH(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u6708\u3092\u8FD4\u3059\uFF081\u301C12\uFF09 |\n| `DAY` | `DAY(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u65E5\u3092\u8FD4\u3059\uFF081\u301C31\uFF09 |\n| `DAYOFWEEK` | `DAYOFWEEK(\u65E5\u4ED8)` | \u66DC\u65E5\u756A\u53F7\u3092\u8FD4\u3059\uFF081=\u65E5\u66DC\u301C7=\u571F\u66DC\uFF09 |\n| `QUARTER` | `QUARTER(\u65E5\u4ED8)` | \u56DB\u534A\u671F\u3092\u8FD4\u3059\uFF081\u301C3\u6708=1\u300110\u301C12\u6708=4\uFF09 |\n| `WEEK` | `WEEK(\u65E5\u4ED8)` | ISO-8601 \u9031\u756A\u53F7\u3092\u30BC\u30ED\u57CB\u3081\u306A\u3057\u3067\u8FD4\u3059\uFF081\u301C53\uFF09 |\n| `DATE_FORMAT` | `DATE_FORMAT(\u30D5\u30A3\u30FC\u30EB\u30C9, \u30D5\u30A9\u30FC\u30DE\u30C3\u30C8)` | \u65E5\u4ED8\u3092\u66F8\u5F0F\u5316 |\n| `DATEDIFF` | `DATEDIFF(\u65E5\u4ED81, \u65E5\u4ED82)` | \u65E5\u6570\u5DEE\uFF08\u65E5\u4ED81 \u2212 \u65E5\u4ED82\uFF09 |\n| `DATE_ADD` | `DATE_ADD(\u65E5\u4ED8, \u52A0\u7B97\u5024, \u5358\u4F4D)` | \u65E5\u4ED8\u52A0\u7B97\uFF08\u5358\u4F4D\u306F `'YEAR'` / `'MONTH'` / `'DAY'`\uFF09 |\n| `LAST_DAY` | `LAST_DAY(\u65E5\u4ED8)` | \u6708\u672B\u65E5\u3092 `YYYY-MM-DD` \u3067\u8FD4\u3059 |\n| `CURRENT_DATE()` | `CURRENT_DATE()` | \u4ECA\u65E5\u306E\u65E5\u4ED8\uFF08`YYYY-MM-DD`\uFF09\u3092 JS \u3067\u53D6\u5F97 |\n| `CURRENT_TIMESTAMP()` | `CURRENT_TIMESTAMP()` | \u73FE\u5728\u65E5\u6642\uFF08ISO 8601\uFF09\u3092 JS \u3067\u53D6\u5F97 |\n\n```sql\nSELECT YEAR(\u4F5C\u6210\u65E5\u6642) AS \u5E74, MONTH(\u4F5C\u6210\u65E5\u6642) AS \u6708 FROM APP100\nSELECT DAYOFWEEK(\u53D7\u6CE8\u65E5) AS \u66DC\u65E5\u756A\u53F7, QUARTER(\u53D7\u6CE8\u65E5) AS \u56DB\u534A\u671F FROM APP100\nSELECT DATE_FORMAT(\u53D7\u6CE8\u65E5, '%G-%v') AS ISO\u9031, COUNT(*) FROM APP100 GROUP BY DATE_FORMAT(\u53D7\u6CE8\u65E5, '%G-%v')\nSELECT DATEDIFF(TODAY(), \u671F\u9650\u65E5) AS \u6B8B\u65E5\u6570 FROM APP100\nSELECT DATE_FORMAT(\u4F5C\u6210\u65E5\u6642, '%Y-%m') AS \u5E74\u6708 FROM APP100\nSELECT DATE_ADD(\u671F\u9650\u65E5, -1, 'MONTH') AS \u524D\u6708, LAST_DAY(\u671F\u9650\u65E5) AS \u6708\u672B\u65E5 FROM APP100\n\n-- SELECT \u5217\u3067\u73FE\u5728\u65E5\u6642\u3092\u4ED8\u52A0\uFF08\u5E38\u306B JS \u8A55\u4FA1\uFF09\nSELECT \u9867\u5BA2\u540D, \u91D1\u984D, CURRENT_TIMESTAMP() AS \u53D6\u5F97\u65E5\u6642 FROM APP100\nSELECT *, CURRENT_DATE() AS \u4ECA\u65E5 FROM APP100\n\n-- WHERE \u3067\u3082\u4F7F\u7528\u53EF\u80FD\uFF08FULL_SCAN\uFF09\nSELECT * FROM APP100 WHERE \u4F5C\u6210\u65E5 = CURRENT_DATE()\n```\n\n`DATE_FORMAT` \u306F\u6B21\u306E\u6307\u5B9A\u5B50\u306B\u5BFE\u5FDC\u3057\u307E\u3059\u3002ISO \u9031\u30E9\u30D9\u30EB\u306B\u306F\u3001\u66A6\u5E74 `%Y` \u3067\u306F\u306A\u304F ISO week-year `%G` \u3092\u4F7F\u3046 **`%G-%v`** \u3092\u63A8\u5968\u3057\u307E\u3059\uFF08\u5E74\u3092\u307E\u305F\u3050\u9031\u3067 `%Y-%v` \u306F\u8AA4\u3063\u305F\u7D44\u307F\u5408\u308F\u305B\u306B\u306A\u308A\u307E\u3059\uFF09\u3002\n\n| \u6307\u5B9A\u5B50 | \u5024 |\n|---|---|\n| `%Y` | 4\u6841\u5E74 |\n| `%y` | 2\u6841\u5E74 |\n| `%m` | 2\u6841\u6708\uFF08`01`\u301C`12`\uFF09 |\n| `%c` | \u6708\uFF08`1`\u301C`12`\uFF09 |\n| `%d` | 2\u6841\u65E5\uFF08`01`\u301C`31`\uFF09 |\n| `%e` | \u65E5\uFF08`1`\u301C`31`\uFF09 |\n| `%H` | 2\u6841\u6642\uFF08`00`\u301C`23`\uFF09 |\n| `%i` | 2\u6841\u5206\uFF08`00`\u301C`59`\uFF09 |\n| `%s` | 2\u6841\u79D2\uFF08`00`\u301C`59`\uFF09 |\n| `%w` | \u66DC\u65E5\u756A\u53F7\uFF080=\u65E5\u66DC\u301C6=\u571F\u66DC\uFF09 |\n| `%a` | **kSQL \u5B9A\u7FA9**\u306E\u65E5\u672C\u8A9E\u77ED\u7E2E\u66DC\u65E5\uFF08`\u65E5`\u301C`\u571F`\u3002MySQL \u306E\u82F1\u8A9E\u77ED\u7E2E\u540D\u3068\u306F\u975E\u4E92\u63DB\uFF09 |\n| `%v` | ISO \u9031\u756A\u53F7\uFF08`01`\u301C`53`\uFF09 |\n| `%G` | ISO week-year\uFF084\u6841\uFF09 |\n\n\u65B0\u3057\u3044\u65E5\u4ED8\u8EF8\u95A2\u6570\u3068 `%w` / `%a` / `%v` / `%G` \u306F\u3001\u5148\u982D10\u6587\u5B57\u304C `YYYY-MM-DD` \u3067\u66A6\u4E0A\u5B9F\u5728\u3059\u308B\u65E5\u4ED8\u306E\u5834\u5408\u3060\u3051\u5024\u3092\u8FD4\u3057\u307E\u3059\u3002\u4E0D\u6B63\u65E5\u4ED8\u3067\u306F\u95A2\u6570\u306F\u7A7A\u6587\u5B57\u306B\u306A\u308A\u3001`DATE_FORMAT` \u306F\u65B0\u3057\u3044\u6307\u5B9A\u5B50\u3060\u3051\u3092\u7A7A\u6587\u5B57\u3078\u7F6E\u63DB\u3057\u307E\u3059\u3002\u305F\u3068\u3048\u3070 `DATE_FORMAT('2026-02-31', '%Y|%w|%G-%v')` \u306F `2026||-` \u3067\u3059\u3002\u65E2\u5B589\u6307\u5B9A\u5B50\u306F\u5F93\u6765\u3069\u304A\u308A\u6587\u5B57\u5217\u90E8\u5206\u3092\u6574\u5F62\u3057\u307E\u3059\u3002\u672A\u5BFE\u5FDC\u6307\u5B9A\u5B50\u3001\u5358\u72EC `%`\u3001`%%Y` \u306F\u5F93\u6765\u3069\u304A\u308A\u7D20\u901A\u3057\u3067\u3059\u3002\n\n`DATE_ADD` \u306E\u5358\u4F4D\u306F\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u305B\u3093\u3002`YEAR` / `MONTH` / `DAY` \u4EE5\u5916\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u30EA\u30C6\u30E9\u30EB\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306E\u3069\u3061\u3089\u3067\u3082\u5B9F\u884C\u6642\u306B `ArgumentError` \u306B\u306A\u308A\u307E\u3059\u3002`YEAR` / `MONTH` \u306E\u52A0\u6E1B\u7B97\u3067\u5143\u306E\u65E5\u304C\u5BFE\u8C61\u6708\u306B\u5B58\u5728\u3057\u306A\u3044\u5834\u5408\u306F\u3001\u5BFE\u8C61\u6708\u306E\u672B\u65E5\u3078\u4E38\u3081\u307E\u3059\uFF08\u4F8B: `DATE_ADD('2026-01-31', 1, 'MONTH')` \u306F `2026-02-28`\uFF09\u3002\u3053\u306E\u4E38\u3081\u304C\u8D77\u304D\u308B\u3068\u3001\u9006\u5411\u304D\u306B\u540C\u3058\u6708\u6570\u3092\u52A0\u7B97\u3057\u3066\u3082\u5143\u306E\u65E5\u306B\u306F\u623B\u308A\u307E\u305B\u3093\uFF08`2026-01-31` \u2192 `2026-02-28` \u2192 `2026-01-28`\uFF09\u3002`DAY` \u52A0\u7B97\u3067\u306F\u3053\u306E\u4E38\u3081\u306F\u884C\u3044\u307E\u305B\u3093\u3002`DATE_SUB` \u306F\u3042\u308A\u307E\u305B\u3093\u3002\u6E1B\u7B97\u306F\u52A0\u7B97\u5024\u306B\u8CA0\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08`DATE_ADD(\u671F\u9650\u65E5, -1, 'MONTH')`\uFF09\u3002\n\n- `DAYOFWEEK` / `QUARTER` / `WEEK` / `LAST_DAY` \u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F `` `WEEK` `` \u306E\u3088\u3046\u306B\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002`WEEKLY` \u306E\u3088\u3046\u306A\u9577\u3044\u8B58\u5225\u5B50\u306F\u5F71\u97FF\u3092\u53D7\u3051\u307E\u305B\u3093\u3002\n\n> **`CURRENT_DATE()` / `CURRENT_TIMESTAMP()` \u306F\u30AD\u30FC\u30EF\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002** \n> `()` \u304C\u3042\u308C\u3070\u95A2\u6570\u3001\u306A\u3051\u308C\u3070\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002kSQL \u306E\u30B9\u30AB\u30E9\u30FC\u95A2\u6570\u3067\u3042\u308A\u3001\n> kintone REST query \u3078\u306E\u62BC\u3057\u4E0B\u3052\u7D4C\u8DEF\u306F\u3042\u308A\u307E\u305B\u3093\u3002SELECT \u5217\u3067\u3082 `WHERE` \u3067\u3082\u3001\u5E38\u306B\n> **\u5B9F\u884C\u74B0\u5883\u306E\u30ED\u30FC\u30AB\u30EB\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3**\u3067 client \u8A55\u4FA1\u3055\u308C\u307E\u3059\u3002\u672C\u30EA\u30EA\u30FC\u30B9\u306E\n> kintone query function \u306E fail-closed \u5BFE\u8C61\u5916\u3067\u3059\u3002\n\n#### kintone \u30AF\u30A8\u30EA\u95A2\u6570\uFF08server-only\uFF09\n\n`TODAY()` / `NOW()` / `LOGINUSER()` / `PRIMARY_ORGANIZATION()` \u3068\u6B21\u306E\u76F8\u5BFE\u65E5\u4ED812\u95A2\u6570\u306F\u3001`WHERE` \u3067 kintone REST query\n\u3078\u305D\u306E\u307E\u307E\u6E21\u3059 **server-only** \u95A2\u6570\u3067\u3059\u3002Node / CLI / MCP / \u30D7\u30E9\u30B0\u30A4\u30F3\u3067 client \u8A55\u4FA1\u305B\u305A\u3001\nkintone \u30B5\u30FC\u30D0\u30FC\u304C\u5024\u30FB\u671F\u9593\u3068\u6BD4\u8F03\u7D50\u679C\u3092\u6C7A\u5B9A\u3057\u307E\u3059\u3002\n\n| \u95A2\u6570 | \u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u578B | \u6F14\u7B97\u5B50\u30FB\u5F62 |\n|---|---|---|\n| `TODAY()` | `DATE` / `DATETIME` / `CREATED_TIME` / `UPDATED_TIME` | \u6BD4\u8F03\u53F3\u8FBA\u306E `=` / `!=` / `<` / `<=` / `>` / `>=`\u3001`BETWEEN` \u5883\u754C |\n| `NOW()` | `DATETIME` / `CREATED_TIME` / `UPDATED_TIME` | \u6BD4\u8F03\u53F3\u8FBA\u306E `=` / `!=` / `<` / `<=` / `>` / `>=`\u3001`BETWEEN` \u5883\u754C\u3002**`DATE` \u306B\u306F\u4F7F\u7528\u4E0D\u53EF** |\n| `LOGINUSER()` | `CREATOR` / `MODIFIER` / `USER_SELECT` | singleton \u306E `in (LOGINUSER())` / `not in (LOGINUSER())` \u306E\u307F |\n| `PRIMARY_ORGANIZATION()` | `ORGANIZATION_SELECT` | singleton \u306E `in (PRIMARY_ORGANIZATION())` / `not in (PRIMARY_ORGANIZATION())` \u306E\u307F |\n\n```sql\nSELECT * FROM APP100 WHERE \u65E5\u4ED8 = TODAY()\nSELECT * FROM APP100 WHERE \u4F5C\u6210\u65E5\u6642 <= NOW()\nSELECT * FROM APP100 WHERE \u4F5C\u6210\u8005 in (LOGINUSER())\nSELECT * FROM APP100 WHERE \u62C5\u5F53\u8005 not in (LOGINUSER())\nSELECT * FROM APP100 WHERE \u62C5\u5F53\u7D44\u7E54 in (PRIMARY_ORGANIZATION())\n```\n\n`LOGINUSER()` \u306F `\u4F5C\u6210\u8005` / `\u66F4\u65B0\u8005` / \u30E6\u30FC\u30B6\u30FC\u9078\u629E\u3060\u3051\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n**\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u306B\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093**\uFF08kintone \u516C\u5F0F\u306E\u578B\u5225\u8868\u3067\u5229\u7528\u53EF\u80FD\u306A\u95A2\u6570\u306F\u300C\u306A\u3057\u300D\uFF09\u3002\n`PRIMARY_ORGANIZATION()` \u306F\u7D44\u7E54\u9078\u629E\u3060\u3051\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n**\u512A\u5148\u7D44\u7E54\u304C\u672A\u8A2D\u5B9A\u306E\u30E6\u30FC\u30B6\u30FC\u3067\u306F\u3001kintone \u304C\u3053\u306E\u6761\u4EF6\u3092\u7121\u8996\u3057\u3001\n\u4ED6\u306E\u6761\u4EF6\u3092\u6E80\u305F\u3059\u5168\u30EC\u30B3\u30FC\u30C9\u3092\u8FD4\u3057\u307E\u3059**\uFF08kintone \u516C\u5F0F\u306E\u8A18\u8FF0\u30022026-07-31 \u306B\u5B9F\u6A5F\u3067\u518D\u73FE\u3092\u78BA\u8A8D\uFF09\u3002\n\n**\u30A8\u30F3\u30B8\u30F3\u304B\u3089\u306F\u3001\u6761\u4EF6\u304C\u7121\u8996\u3055\u308C\u305F\u304B\u3069\u3046\u304B\u3092\u5224\u5225\u3067\u304D\u307E\u305B\u3093\u3002**\u305D\u306E\u305F\u3081\u6271\u3044\u304C\u5206\u304B\u308C\u307E\u3059\u3002\n\n| | |\n|---|---|\n| **DML**\uFF08`UPDATE` / `DELETE` / `UPSERT` \u3068 `INSERT` / `UPSERT ... SELECT` \u306E source\uFF09 | **\u5E38\u306B\u62D2\u5426**\u3057\u307E\u3059\u3002\u6761\u4EF6\u304C\u6D88\u3048\u308B\u3068\u5BFE\u8C61\u304C\u30A2\u30D7\u30EA\u5168\u4EF6\u306B\u306A\u308B\u305F\u3081\u3067\u3059 |\n| **`SELECT`** | **\u305D\u306E\u307E\u307E\u8FD4\u3057\u307E\u3059**\uFF08kintone \u306E\u4E00\u89A7\u306E\u7D5E\u308A\u8FBC\u307F\u3068\u540C\u3058\u6319\u52D5\uFF09 |\n\n> **`SELECT` \u3067\u4F7F\u3046\u5834\u5408\u306F\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002**\n> **\u512A\u5148\u7D44\u7E54\u304C\u672A\u8A2D\u5B9A\u306E\u5229\u7528\u8005\u306B\u306F\u3001\u7D5E\u308A\u8FBC\u307F\u304C\u52B9\u304B\u306A\u3044\u307E\u307E\u5168\u4EF6\u304C\u8FD4\u308A\u307E\u3059\u3002**\n> **\u753B\u9762\u304B\u3089\u306F\u533A\u5225\u304C\u3064\u304B\u305A\u3001\u8B66\u544A\u3082\u51FA\u307E\u305B\u3093**\uFF08\u51FA\u305B\u307E\u305B\u3093\uFF09\u3002\n> \u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u3088\u3046\u306B\u7D50\u679C\u3060\u3051\u3092\u898B\u305B\u308B\u7528\u9014\u3067\u306F\u3001**\u5229\u7528\u8005\u5074\u3067\u306E\u6848\u5185\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044\u3002**\n\n**\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\uFF0812\u95A2\u6570\uFF09**\n\n| \u5206\u985E | \u95A2\u6570\u3068\u5F15\u6570 |\n|---|---|\n| \u524D\u65E5\u30FB\u7FCC\u65E5 | `YESTERDAY()` / `TOMORROW()` |\n| \u76F8\u5BFE\u671F\u9593 | `FROM_TODAY(n, unit)`\u3002`n` \u306F `-9,007,199,254,740,991`\u301C`9,007,199,254,740,991` \u306E10\u9032\u5B89\u5168\u6574\u6570\u3001`unit` \u306F `DAYS` / `WEEKS` / `MONTHS` / `YEARS` |\n| \u9031 | `THIS_WEEK([weekday])` / `LAST_WEEK([weekday])` / `NEXT_WEEK([weekday])`\u3002\u66DC\u65E5\u306F `SUNDAY`\u301C`SATURDAY`\u3001\u7701\u7565\u6642\u306F\u9031\u5168\u4F53 |\n| \u6708 | `THIS_MONTH([day])` / `LAST_MONTH([day])` / `NEXT_MONTH([day])`\u3002`day` \u306F `1`\u301C`31` / `LAST`\u3001\u7701\u7565\u6642\u306F\u6708\u5168\u4F53 |\n| \u5E74 | `THIS_YEAR()` / `LAST_YEAR()` / `NEXT_YEAR()` |\n\n```sql\nSELECT * FROM APP100 WHERE \u4F5C\u6210\u65E5\u6642 < FROM_TODAY(5, DAYS)\nSELECT * FROM APP100 WHERE \u66F4\u65B0\u65E5\u6642 = THIS_WEEK(MONDAY)\nSELECT * FROM APP100 WHERE \u65E5\u4ED8 = LAST_MONTH(LAST)\nSELECT * FROM APP100\nWHERE \u65E5\u4ED8 BETWEEN FROM_TODAY(-7, DAYS) AND TODAY()\n```\n\n- \u5BFE\u8C61\u306F\u5358\u4E00\u306E\u7269\u7406\u30A2\u30D7\u30EA\u306B\u7531\u6765\u3059\u308B `DATE` / `DATETIME` / `CREATED_TIME` / `UPDATED_TIME` \u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3067\u3059\u3002\u6BD4\u8F03\u306F6\u7A2E\u306E `=` / `!=` / `<` / `<=` / `>` / `>=` \u3092\u4F7F\u7528\u3067\u304D\u3001`<>` \u306F `!=` \u3078\u6B63\u898F\u5316\u3055\u308C\u307E\u3059\u3002`BETWEEN` \u306F\u4E21\u5883\u754C\u3092 `>=` / `<=` \u3078\u5C55\u958B\u3057\u3001\u4E21\u65B9\u3092 exact pushdown \u3067\u304D\u308B\u5834\u5408\u3060\u3051\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n- kintone \u30AF\u30A8\u30EA\u95A2\u6570\u3092\u542B\u3080\u6761\u4EF6\u306F\u3001\u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u524D\u306B REST query \u3078\u306E\u62BC\u3057\u4E0B\u3052\u8A08\u753B\u304C\u78BA\u5B9A\u3067\u304D\u308B\u5834\u5408\u3060\u3051\u5B9F\u884C\u3067\u304D\u307E\u3059\u3002\u95A2\u6570\u305D\u306E\u3082\u306E\u3092 client \u8A55\u4FA1\u3059\u308B **client fallback \u306F\u306A\u304F**\u3001client \u8A55\u4FA1\u56DE\u6570\u306F\u5E38\u306B 0 \u3067\u3059\u3002`ksql_validate` \u306F\u69CB\u6587\u3068\u5F15\u6570\u5F62\u3092\u691C\u67FB\u3057\u307E\u3059\u304C\u3001\u578B\u3068\u7269\u7406\u8A08\u753B\u306E\u53EF\u5426\u306F metadata \u3092\u4F7F\u3046 `ksql_query` / `ksql_explain` / \u5B9F\u884C\u6642\u306B\u78BA\u5B9A\u3057\u307E\u3059\u3002\n- **\u6027\u80FD**: kintone \u30AF\u30A8\u30EA\u95A2\u6570\u306F**\u62BC\u3057\u4E0B\u3052\u3067\u304D\u306A\u3051\u308C\u3070\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093**\uFF08client fallback \u306A\u3057\uFF09\u3002\n \u3057\u305F\u304C\u3063\u3066**\u5B9F\u884C\u3067\u304D\u305F\u6642\u70B9\u3067\u3001\u5019\u88DC\u306E\u7D5E\u308A\u8FBC\u307F\u306F kintone \u30B5\u30FC\u30D0\u30FC\u5074\u3067\u7D42\u308F\u3063\u3066\u3044\u307E\u3059**\u3002\n `LIKE` \u306E\u3088\u3046\u306B\u9ED9\u3063\u3066 FULL_SCAN\uFF08\u5168\u4EF6\u53D6\u5F97\uFF09\u306B\u306A\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n \u540C\u3058\u30A2\u30D7\u30EA\u30FB\u540C\u3058 `maxRecords` \u3067\u3082\u7D50\u679C\u304C\u5206\u304B\u308C\u307E\u3059\u3002\n\n ```\n APP4148\uFF08215 \u4EF6\uFF09\u30FBmaxRecords=5\n\n SELECT COUNT(*) FROM APP4148 WHERE \u4F5C\u6210\u8005 in (LOGINUSER())\n \u2192 \u6210\u529F\u3002kintone \u5074\u3067\u7D5E\u308A\u8FBC\u3080\u305F\u3081\u3001215 \u4EF6\u306E\u30A2\u30D7\u30EA\u3067\u3082\u4E0A\u9650\u306B\u639B\u304B\u3089\u306A\u3044\n\n SELECT COUNT(*) FROM APP4148 WHERE \u4F1A\u793E\u540D LIKE '%\u682A\u5F0F\u4F1A\u793E%'\n \u2192 \u4E0A\u9650\u30A8\u30E9\u30FC\u3002FULL_SCAN \u3067\u5168\u4EF6\u53D6\u5F97\u3057\u3088\u3046\u3068\u3059\u308B\n\n SELECT COUNT(*) FROM APP4148 WHERE \u4F1A\u793E\u540D LIKE '%\u682A\u5F0F\u4F1A\u793E%' OR \u4F5C\u6210\u8005 in (LOGINUSER())\n \u2192 \u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u524D\u306B\u62D2\u5426\uFF08WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN\uFF09\n ```\n\n \u305F\u3060\u3057**\u5F622\uFF08prefilter \uFF0B\u6B8B\u4F59\uFF09\u3067\u306F\u3001\u53D6\u5F97\u4EF6\u6570\u304C\u6E1B\u308B\u306E\u306F\u95A2\u6570\u6761\u4EF6\u306E\u5206\u3060\u3051**\u3067\u3059\u3002\n \u6B8B\u4F59\u306F client \u8A55\u4FA1\u306A\u306E\u3067\u3001\u95A2\u6570\u6761\u4EF6\u3092\u6E80\u305F\u3059\u96C6\u5408\u306F\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\u3002\n `EXPLAIN` \u306E `where capability`\uFF08`EXACT_PUSHDOWN` \u304B\uFF09\u3001\n `kintone query`\uFF08\u5B9F\u969B\u306B\u9001\u308B query \u6587\u5B57\u5217\uFF09\u3001\n `kintone function client evaluations`\uFF08\u5E38\u306B 0\uFF09\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002\n- **kintone \u30AF\u30A8\u30EA\u95A2\u6570\u3092\u4F7F\u3048\u308B SELECT \u306E\u5F62\u306F\u6B21\u306E4\u3064\u3067\u3059**\u30023\u30FB4\u304C INNER JOIN \u306E\n **\u7B2C5\u8A31\u53EF\u5F62**\u3067\u3059\u3002\u3044\u305A\u308C\u3082\u95A2\u6570 occurrence \u3092 kintone server \u3078 exact \u306B\u9069\u7528\u3057\u3001\n client \u5074\u3067\u95A2\u6570\u3092\u8A55\u4FA1\u3057\u307E\u305B\u3093\u3002\n\n 1. **\u305D\u306E SELECT \u306E `WHERE` \u5168\u4F53\u3092 exact pushdown \u3067\u304D\u308B\u5F62**\uFF08v3.24.0 \u3067 `GROUP BY` \u7B49\u3001B75 \u3067 CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u306B\u62E1\u5927\uFF09\u3002\u8907\u6570\u6761\u4EF6\u30FB`OR`\u30FB`BETWEEN` \u3092\u542B\u3093\u3067\u3044\u3066\u3082\u3001`WHERE` \u5168\u4F53\u304C kintone \u30AF\u30A8\u30EA\u3078\u5B8C\u5168\u306B\u5909\u63DB\u3067\u304D\u308B\u306A\u3089\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u306B\u52A0\u3048\u3001**\u5B9F\u4F53\u5316 CTE \u306E\u672C\u4F53\u3001`WITH` \u306E\u6700\u7D42 SELECT\u3001`CREATE TEMP TABLE ... AS SELECT` / `CREATE TEMP TABLE ... AS WITH ...` \u306E source\u3001\u5358\u4E00 CTE \u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u5C55\u958B**\u3067\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002`GROUP BY` / `SELECT DISTINCT` / \u96C6\u8A08\u95A2\u6570 / \u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570 / \u901A\u5E38\u306E `ORDER BY` \u3092\u542B\u3093\u3067\u3044\u3066\u3082\u69CB\u3044\u307E\u305B\u3093\u3002\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E `KORDER BY` \u3082\u3053\u306E whole-WHERE exact \u306E\u5F62\u3060\u3051\u306F native / Cursor \u3068\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF08`WHERE` \u5168\u4F53\u3092\u30B5\u30FC\u30D0\u30FC\u3078\u6E21\u3057\u3001\u53D6\u5F97\u5F8C\u306E client \u5074 WHERE \u8A55\u4FA1\u306F\u884C\u3044\u307E\u305B\u3093\uFF09\u3002\n\n ```sql\n SELECT * FROM APP100 WHERE \u65E5\u4ED8 = THIS_MONTH()\n SELECT * FROM APP100 WHERE \u65E5\u4ED8 = THIS_MONTH() OR \u65E5\u4ED8 = LAST_MONTH() -- OR \u3082\u53EF\uFF08\u4E21\u8FBA\u3068\u3082\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u305F\u3081\uFF09\n SELECT \u533A\u5206, COUNT(*) AS \u4EF6\u6570 FROM APP100\n WHERE \u65E5\u4ED8 = THIS_MONTH() GROUP BY \u533A\u5206 -- \u96C6\u8A08\u30AF\u30A8\u30EA\u3067\u3082\u53EF\uFF08v3.24.0\uFF09\n SELECT * FROM APP100 WHERE \u65E5\u4ED8 = THIS_MONTH() ORDER BY \u65E5\u4ED8 -- \u901A\u5E38\u306E ORDER BY \u3082\u53EF\uFF08v3.24.0\uFF09\n SELECT \u65E5\u4ED8 FROM APP100 WHERE \u65E5\u4ED8 = TODAY()\n KORDER BY \u65E5\u4ED8 LIMIT 5 -- KORDER \u3082 whole-WHERE exact \u306A\u3089\u53EF\n WITH \u6708\u5225 AS (\n SELECT \u533A\u5206, COUNT(*) AS \u4EF6\u6570 FROM APP100\n WHERE \u65E5\u4ED8 = THIS_MONTH() GROUP BY \u533A\u5206\n )\n SELECT * FROM \u6708\u5225 -- \u5B9F\u4F53\u5316 CTE \u672C\u4F53\u3067\u3082\u53EF\n CREATE TEMP TABLE #\u4ECA\u6708 AS\n SELECT * FROM APP100 WHERE \u65E5\u4ED8 = THIS_MONTH() -- \u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u3067\u3082\u53EF\n ```\n\n 2. **prefilter \uFF0B\u6B8B\u4F59\uFF08v3.21.0\uFF09**: \u5358\u4E00\u306E\u7269\u7406\u30A2\u30D7\u30EA\u3092\u8AAD\u3080 SELECT \u3067\u3001kintone \u30AF\u30A8\u30EA\u95A2\u6570\u306E exact leaf \u304C\u300C\u95A2\u6570\u3092\u542B\u307E\u306A\u3044\u6B8B\u4F59\u300D\uFF08\u4F8B `LENGTH(\u90FD\u9053\u5E9C\u770C) > 1`\u30FB`LIKE`\uFF09\u3068 `AND` \u3067\u7D50\u3070\u308C\u3066\u3044\u308B\u5834\u5408\u3002\u95A2\u6570 leaf \u3060\u3051\u3092 kintone REST query \u306E prefilter \u3068\u3057\u3066\u62BC\u3057\u4E0B\u3052\u3001\u53D6\u5F97\u5F8C\u306F\u6B8B\u4F59\u3060\u3051\u3092 client \u8A55\u4FA1\u3057\u307E\u3059\u3002\u95A2\u6570\u306E\u5024\u30FB\u6BD4\u8F03\u306F\u4F9D\u7136\u3059\u3079\u3066 kintone \u30B5\u30FC\u30D0\u30FC\u304C\u6C7A\u5B9A\u3057\u307E\u3059\u3002`BETWEEN` \u5C55\u958B\u306E\u5404\u5883\u754C\u3084\u8907\u6570\u306E\u95A2\u6570 leaf\u3001`KLIKE`\u30FB\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u5B89\u5168\u30EA\u30FC\u30D5\u3068\u306E\u4F75\u7528\u3082\u540C\u3058\u898F\u5247\u3067 prefilter \u306B\u8F09\u308A\u307E\u3059\u3002\u3053\u306E\u5F62\u306F `GROUP BY` \u306A\u3069\u3067 FULL_SCAN \u306B\u306A\u3063\u3066\u3044\u3066\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n ```sql\n SELECT \u65E5\u4ED8, \u4EF6\u540D FROM APP100\n WHERE \u65E5\u4ED8 = TODAY() AND LENGTH(\u4EF6\u540D) > 1 -- \u65E5\u4ED8\u3060\u3051 server prefilter\u3001LENGTH \u3060\u3051 client\n ```\n\n 3. **\u7B2C5-W\uFF08INNER JOIN\u30FBsingle-alias whole-WHERE exact\uFF09**: \u5168 source \u304C alias \u4ED8\u304D\u306E\n \u7269\u7406 APP \u3067\u3001`WHERE` \u5168\u4F53\u304C\u5358\u4E00 alias \u306B\u5C5E\u3057\u3001kintone query \u3078 exact \u306B\u5909\u63DB\u3067\u304D\u308B\u5834\u5408\u3002\n \u540C\u3058 alias \u5185\u306E `OR` / `NOT` \u3068\u3001whole-WHERE exact \u306A `KLIKE` \u5171\u5B58\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n `WHERE` \u5168\u4F53\u3092\u5BFE\u8C61 APP \u306B\u4E00\u5EA6\u3060\u3051\u9001\u308A\u3001client residual \u306F\u3042\u308A\u307E\u305B\u3093\u3002\n\n ```sql\n SELECT a.$id, a.\u65E5\u4ED8\n FROM APP100 a INNER JOIN APP200 b ON a.$id = b.$id\n WHERE a.\u65E5\u4ED8 = THIS_MONTH() OR a.\u65E5\u4ED8 = LAST_MONTH()\n ```\n\n 4. **\u7B2C5-L\uFF08INNER JOIN\u30FBAND-spine exact leaf\uFF09**: `WHERE` \u306E AND \u30B9\u30D1\u30A4\u30F3\u306B\u3042\u308B\n exact \u306A\u95A2\u6570 leaf \u3092 alias \u3054\u3068\u306B\u63A1\u7528\u3057\u3001\u305D\u308C\u305E\u308C\u306E APP \u3078\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002\n \u8907\u6570 alias \u306B\u95A2\u6570\u304C\u5206\u6563\u3057\u3066\u3044\u3066\u3082\u4F7F\u7528\u3067\u304D\u3001\u95A2\u6570\u3092\u542B\u307E\u306A\u3044\u6B8B\u4F59\u3060\u3051\u3092 client \u8A55\u4FA1\u3057\u307E\u3059\u3002\n `LOGINUSER()` \u306F `\u4F5C\u6210\u8005` / `\u66F4\u65B0\u8005` / \u30E6\u30FC\u30B6\u30FC\u9078\u629E\u3001`PRIMARY_ORGANIZATION()` \u306F\n \u7D44\u7E54\u9078\u629E\u306E singleton `in` / `not in` \u306B\u9650\u308A\u307E\u3059\u3002\n\n ```sql\n SELECT a.$id, a.\u65E5\u4ED8, b.\u4F5C\u6210\u8005\n FROM APP100 a INNER JOIN APP200 b ON a.$id = b.$id\n WHERE a.\u65E5\u4ED8 = THIS_MONTH()\n AND b.\u4F5C\u6210\u8005 in (LOGINUSER())\n AND LENGTH(a.\u4EF6\u540D) > 1\n ```\n\n- \u6B21\u306E\u8A08\u753B\u306F\u3001\u95A2\u6570\u3092\u5B89\u5168\u306B exact \u62BC\u3057\u4E0B\u3052\u3057\u3064\u3064\u6B8B\u4F59\u3060\u3051\u3092 client \u8A55\u4FA1\u3059\u308B\u4FDD\u8A3C\u304C\u306A\u3044\u305F\u3081\u3001\u30EC\u30B3\u30FC\u30C9\u30FBCursor\u30FBmutation API \u306E\u524D\u306B fail-closed \u3057\u307E\u3059\uFF08legacy 4 \u95A2\u6570\u306F reason `WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN`\u3001\u76F8\u5BFE\u65E5\u4ED812\u95A2\u6570\u306F `WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN`\uFF09\u3002\n\n - \u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u304C `OR` \u306E\u679D\u307E\u305F\u306F `NOT` \u306E\u914D\u4E0B\u306B\u3042\u308A\u3001**`WHERE` \u5168\u4F53\u3068\u3057\u3066\u306F exact pushdown \u3067\u304D\u306A\u3044**\u5834\u5408\uFF08`OR` \u306E\u4ED6\u65B9\u306B `LENGTH()` \u306A\u3069\u306E\u62BC\u3057\u4E0B\u3052\u4E0D\u80FD\u306A\u8FF0\u8A9E\u304C\u3042\u308B\u3068\u304D\u7B49\uFF09\u3002`OR` \u3092\u542B\u3080\u3053\u3068\u81EA\u4F53\u306F\u62D2\u5426\u7406\u7531\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002**\u56DE\u907F\u7B56**: \u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u8FF0\u8A9E\u3078\u7F6E\u63DB\u3059\u308B\uFF08\u4F8B `\u90FD\u9053\u5E9C\u770C != ''`\uFF09\u304B\u3001\u4E0A\u8A182\u306E\u5F62\uFF08\u76F8\u5BFE\u65E5\u4ED8 leaf \u3068\u6B8B\u4F59\u3092 `AND` \u3067\u7D50\u3076\uFF09\u306B\u3057\u307E\u3059\u3002\n - `LEFT` / `RIGHT JOIN`\u3001cross-alias `OR`\u3001cross-table \u8FF0\u8A9E\u306B\u95A2\u6570\u3092\u542B\u3080\u5F62\u3001\n whole-WHERE exact \u3067\u306A\u3044 `KLIKE` \u3092\u542B\u3080 `OR`\u3002\u4E00\u90E8\u306E KLIKE \u6DF7\u5728\u5F62\u306F\u3001\u95A2\u6570\u5074\u304C\n exact \u3067\u306A\u3044\u3053\u3068\u3092\u793A\u3059 `WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN`\n \uFF08legacy 4\u95A2\u6570\u3067\u306F `WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN`\uFF09\u3067\u62D2\u5426\u3057\u307E\u3059\u3002\n - \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FB\u5165\u308C\u5B50 SELECT\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u7B49\uFF09\u30FB\u6D3E\u751F\u8868\u30FBCTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\n JOIN \u5165\u529B\u306B\u3059\u308B\u5F62\u3001`VALIDATE`\u3002`GROUP_SELECT in (LOGINUSER())` \u306F kintone \u516C\u5F0F\u306B\n \u5BFE\u5FDC\u3059\u308B\u30AF\u30A8\u30EA\u95A2\u6570\u304C\u306A\u3044\u305F\u3081 `WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED` \u3067\u3059\u3002\n **\u5B9F\u4F53\u5316 CTE \u672C\u4F53\u30FB`WITH` \u306E\u6700\u7D42\u30AF\u30A8\u30EA\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u304C `UNION` \u306E\u5834\u5408**\n \u3082\u62D2\u5426\u3057\u307E\u3059\uFF08\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E `UNION` \u306F\u679D\u3054\u3068\u306B\u5224\u5B9A\u3059\u308B\u305F\u3081\u3001\u5404\u679D\u304C\u6761\u4EF6\u3092\u6E80\u305F\u305B\u3070\n \u4F7F\u7528\u3067\u304D\u307E\u3059\uFF09\u3002**`KORDER BY` \u3068 DML\uFF08`UPDATE` / `DELETE` \u306E\u5BFE\u8C61\u9078\u629E\u3001\n `INSERT` / `UPSERT ... SELECT` \u306E source\uFF09\u306F\u4E0A\u8A181\u306E whole-WHERE exact \u306E\u307F\u53EF**\u3067\u3001\n \u4E0A\u8A182\u306E prefilter\uFF0B\u6B8B\u4F59\u3084 FULL_SCAN_EXACT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u305F\u3060\u3057\n **`PRIMARY_ORGANIZATION()` \u3092\u542B\u3080 DML \u306F whole-WHERE exact \u3067\u3082\u5E38\u306B\u62D2\u5426\u3057\u307E\u3059**\u3002\n- \u62D2\u5426\u5F62\u306E `EXPLAIN` \u306F throw \u305B\u305A\u3001`plan status: rejected`\u3001\u5BFE\u8C61 alias / field\u3001\n reason\u3001`client evaluation: forbidden`\u3001\u5B9F\u884C API \u306A\u3057\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n- **CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306B\u6B8B\u308B\u975E\u5BFE\u79F0**: \u62BC\u3057\u4E0B\u3052\u4E0D\u80FD\u306A\u8FF0\u8A9E\u304C `AND` \u3067\u6DF7\u3056\u308B\u5F62\uFF08\u4F8B `WHERE \u65E5\u4ED8 = THIS_MONTH() AND LENGTH(\u4EF6\u540D) > 1`\uFF09\u306F\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u5358\u4E00\u7269\u7406\u30A2\u30D7\u30EA SELECT \u3067\u306F\u4E0A\u8A182\u306E prefilter\uFF0B\u6B8B\u4F59\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u3059\u304C\u3001**CTE \u672C\u4F53\u30FB`WITH` \u306E\u6700\u7D42 SELECT\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093**\u3002\u3053\u308C\u3089\u306E\u5B9F\u4F53\u5316\u7D4C\u8DEF\u3067\u306F\u3001\u305D\u306E SELECT \u306E `WHERE` \u5168\u4F53\u304C exact \u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u8A72\u5F53\u3059\u308B\u5834\u5408\u306F CTE \u3084\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u5207\u308A\u51FA\u3055\u305A\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u3068\u3057\u3066\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\n- \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5B9F\u4F53\u5316\u884C\u6570\u306B\u306F\u901A\u5E38\u306E `maxRecords` \u3068\u306F\u5225\u306B\u5C02\u7528\u306E `tempTableMaxRows`\uFF08\u65E2\u5B9A 10,000\uFF09\u304C\u9069\u7528\u3055\u308C\u307E\u3059\u3002\u8D85\u904E\u6642\u306F `onLimit` \u306E\u8A2D\u5B9A\u306B\u304B\u304B\u308F\u3089\u305A\u5E38\u306B\u30A8\u30E9\u30FC\u3067\u3001\u65E5\u4ED8\u30EA\u30C6\u30E9\u30EB\u3068\u76F8\u5BFE\u65E5\u4ED8\u3067\u6271\u3044\u306F\u540C\u4E00\u3067\u3059\u3002\n- legacy 4 \u95A2\u6570\u306E\u8A3A\u65AD reason code \u306F `WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED`\u3001`WHERE_KINTONE_FUNCTION_OPERATOR_UNSUPPORTED`\u3001`WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED`\u3001`WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN` \u3067\u3059\u3002\u76F8\u5BFE\u65E5\u4ED812\u95A2\u6570\u306F `WHERE_RELATIVE_DATE_ARGUMENT_INVALID`\u3001`WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED`\u3001`WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED`\u3001`WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED`\u3001`WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN` \u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\n- \u95A2\u6570\u540D\u3001`DAYS` / `WEEKS` / `MONTHS` / `YEARS`\u3001\u66DC\u65E5\u3001`LAST` \u306F hard keyword \u3067\u306F\u306A\u304F\u3001\u8A72\u5F53\u3059\u308B WHERE \u5024\u30FB\u5F15\u6570\u4F4D\u7F6E\u3060\u3051\u3067\u89E3\u91C8\u3059\u308B soft keyword \u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u901A\u5E38\u3069\u304A\u308A\u4F7F\u3048\u307E\u3059\u3002\u95A2\u6570\u547C\u3073\u51FA\u3057\u3068\u306E\u66D6\u6627\u3055\u3092\u907F\u3051\u308B\u5834\u5408\u306F `` `FROM_TODAY` ``\u3001`` `LAST` `` \u306E\u3088\u3046\u306B\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u9000\u907F\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u5F15\u7528\u3057\u305F\u5358\u4F4D\u30FB\u66DC\u65E5\u30FB`LAST` \u306F\u95A2\u6570\u5F15\u6570\u3068\u3057\u3066\u306F\u53D7\u7406\u3057\u307E\u305B\u3093\u3002\n\n### \u95A2\u6570\u306E\u30CD\u30B9\u30C8\n\n\u95A2\u6570\u306E\u5F15\u6570\u306B\u5225\u306E\u95A2\u6570\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT UPPER(TRIM(\u6C0F\u540D)) AS \u6C0F\u540D FROM APP100\nSELECT ROUND(\u91D1\u984D * 1.1, 0) AS \u7A0E\u8FBC\u91D1\u984D FROM APP100\n```\n\n---", uri: "ksql://language-reference/05-string-number-functions" }, "06-where": { heading: "6. WHERE \u53E5", text: "## 6. WHERE \u53E5\n\n> **\u30E6\u30FC\u30B6\u30FC\u7CFB\u30FB\u8907\u6570\u9078\u629E\u7CFB\u306B\u306F `in` / `not in` \u3092\u4F7F\u3044\u307E\u3059\u3002** \u578B\u306B\u5408\u308F\u306A\u3044\u6F14\u7B97\u5B50\n> \uFF08`WHERE \u4F5C\u6210\u8005 = 'taro'` \u306A\u3069\uFF09\u306F `WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE` \u3067\n> \u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u524D\u306B\u62D2\u5426\u3057\u307E\u3059\uFF080 \u4EF6\u3092\u9759\u304B\u306B\u8FD4\u3059\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n>\n> **`TODAY()` / `NOW()` / `LOGINUSER()` \u306F kintone REST query \u3078\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u5F62\u3060\u3051**\n> \u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u62BC\u3057\u4E0B\u3052\u4E0D\u80FD\u306A\u4F4D\u7F6E\u306B\u66F8\u304F\u3068\n> `WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN` \u3067\u62D2\u5426\u3057\u307E\u3059\uFF08`WHERE \u65E5\u4ED8 = NOW()`\n> \u306E\u3088\u3046\u306A\u578B\u4E0D\u4E00\u81F4\u3001`WHERE $id >= TODAY()` \u3082\u540C\u69D8\uFF09\u3002\u4F7F\u7528\u3067\u304D\u308B 4 \u3064\u306E\u5F62\u306F\n> [\xA75 kintone \u30AF\u30A8\u30EA\u95A2\u6570](#kintone-\u30AF\u30A8\u30EA\u95A2\u6570server-only)\u306B\u3042\u308A\u307E\u3059\u3002\n>\n> \u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u95A2\u6570 leaf \u3068\u6B8B\u4F59\u3092 `AND` \u3067\u7D50\u3076\u5F62\uFF08`WHERE \u65E5\u4ED8 = TODAY() AND LENGTH(\u4EF6\u540D) > 1`\uFF09\n> \u3067\u306F\u3001**\u95A2\u6570\u6761\u4EF6\u3060\u3051\u3092 server prefilter \u3078\u62BC\u3057\u4E0B\u3052\u3001\u6B8B\u4F59\u3060\u3051\u3092 client \u3067\u8A55\u4FA1**\u3057\u307E\u3059\u3002\n> `KORDER BY` \u3068 DML \u306F whole-WHERE exact \u306E\u5F62\u3060\u3051\u3067\u3001\u3053\u306E prefilter\uFF0B\u6B8B\u4F59\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002\n\n### \u6BD4\u8F03\u6F14\u7B97\u5B50\n\n| \u6F14\u7B97\u5B50 | \u610F\u5473 |\n|--------|------|\n| `=` | \u7B49\u3057\u3044 |\n| `!=` \u307E\u305F\u306F `<>` | \u7B49\u3057\u304F\u306A\u3044 |\n| `>` | \u3088\u308A\u5927\u304D\u3044 |\n| `<` | \u3088\u308A\u5C0F\u3055\u3044 |\n| `>=` | \u4EE5\u4E0A |\n| `<=` | \u4EE5\u4E0B |\n| `KLIKE` | kintone \u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u542B\u3080 |\n| `NOT KLIKE` | kintone \u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u542B\u307E\u306A\u3044 |\n\n```sql\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86'\nWHERE \u91D1\u984D >= 100000\nWHERE \u62C5\u5F53\u8005 != '\u5C71\u7530'\n```\n\n> \u53F3\u8FBA\u306E\u5024\u306B\u306F\u30D0\u30C3\u30C1\u5909\u6570 `@\u540D\u524D` \u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u2192 [\xA725 \u30D0\u30C3\u30C1\u5909\u6570](#25-\u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB)\uFF09\u3002\n\n> **\u65E5\u6642\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u5883\u754C:** `DATETIME` / \u4F5C\u6210\u65E5\u6642 / \u66F4\u65B0\u65E5\u6642\u3067\u306F\u3001\u65E5\u4ED8\u3060\u3051\u306E `'2026-07-14'` \u306F\n> **\u305D\u306E\u65E5\u306E 0:00 \u306E\u4E00\u70B9**\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002`<=` \u306B\u6307\u5B9A\u3057\u3066\u3082\u540C\u65E5\u306E 0:00 \u3088\u308A\u5F8C\u306E\u30EC\u30B3\u30FC\u30C9\u306F\n> \u542B\u307E\u308C\u305A\u3001`>= '2026-07-14' AND <= '2026-07-14'` \u306F 0 \u4EF6\u306B\u306A\u308A\u307E\u3059\u3002\n>\n> **\u4E0A\u7AEF\u3092\u300C\u7FCC\u65E5\u300D\u306B\u3057\u3066 `<` \u3067\u9589\u3058\u308B\u534A\u958B\u533A\u9593\u3067\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002**\n>\n> ```sql\n> WHERE \u4F5C\u6210\u65E5\u6642 >= '2026-07-14' AND \u4F5C\u6210\u65E5\u6642 < '2026-07-15' -- 7/14 \u306E\u5168\u4F53\n> ```\n>\n> \u3053\u306E\u5F62\u306F kintone \u304C\u4E21\u7AEF\u3092\u540C\u3058\u898F\u5247\u3067\u89E3\u6C7A\u3059\u308B\u305F\u3081\u3001**kintone \u5074\u306E\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u8A2D\u5B9A\u3092\n> \u610F\u8B58\u305B\u305A\u306B\u6B63\u3057\u3044 1 \u65E5**\u306B\u306A\u308A\u307E\u3059\u3002`2026-07-14T23:59:59Z` \u306E\u3088\u3046\u306A RFC3339 \u6587\u5B57\u5217\u3082\n> \u6307\u5B9A\u3067\u304D\u307E\u3059\u304C\u3001\u672B\u5C3E\u306E\u30AA\u30D5\u30BB\u30C3\u30C8\uFF08`Z` \u306A\u3069\uFF09\u3068 kintone \u5074\u306E\u89E3\u6C7A\u304C\u98DF\u3044\u9055\u3046\u3068\u5883\u754C\u304C\n> \u305A\u308C\u308B\u305F\u3081\u3001\u65E5\u4ED8\u5358\u4F4D\u3067\u533A\u5207\u308B\u5834\u5408\u306F\u534A\u958B\u533A\u9593\u3092\u63A8\u5968\u3057\u307E\u3059\u3002\n\n### \u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\n\n`YESTERDAY()`\u3001`FROM_TODAY(...)`\u3001\u9031\u30FB\u6708\u30FB\u5E74\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u306F\u30014\u3064\u306E\u65E5\u4ED8\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u306B\u5BFE\u3059\u308B\u6BD4\u8F03\u53F3\u8FBA\u3068 `BETWEEN` \u5883\u754C\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u3053\u308C\u3089\u306F server-only \u3067\u3001\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u305D\u306E\u3082\u306E\u3092 client \u8A55\u4FA1\u3078\u5207\u308A\u66FF\u3048\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u5358\u4E00 APP \u3067\u306F\u3001**\u305D\u306E SELECT \u306E `WHERE` \u5168\u4F53\u3092 exact pushdown \u3067\u304D\u308B\u5F62**\uFF08`OR` \u3092\u542B\u3093\u3067\u3044\u3066\u3082\u5168\u4F53\u304C\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u3089\u53EF\u3002`GROUP BY` / `SELECT DISTINCT` / \u96C6\u8A08 / \u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570 / \u901A\u5E38\u306E `ORDER BY`\u3001\u5B9F\u4F53\u5316 CTE \u672C\u4F53\u3001`WITH` \u306E\u6700\u7D42 SELECT\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source\u3001\u5358\u4E00 CTE \u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u5C55\u958B\u3067\u3082\u53EF\uFF09\u3068\u3001**\u76F8\u5BFE\u65E5\u4ED8 leaf \u304C\u300C\u76F8\u5BFE\u65E5\u4ED8\u3092\u542B\u307E\u306A\u3044\u6B8B\u4F59\u300D\u3068 AND \u3067\u7D50\u3070\u308C\u305F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u5358\u4E00\u7269\u7406\u30A2\u30D7\u30EA SELECT**\uFF08\u76F8\u5BFE\u65E5\u4ED8 leaf \u3060\u3051\u3092 prefilter \u306B\u8F09\u305B\u6B8B\u4F59\u3092 client \u8A55\u4FA1\u30FBv3.21.0\uFF09\u3067\u4F7F\u3048\u307E\u3059\u3002INNER JOIN \u3067\u306F\u3001\u5168 source \u304C alias \u4ED8\u304D\u7269\u7406 APP \u306E\u3068\u304D\u3001**\u5358\u4E00 alias \u306E whole-WHERE exact\uFF08\u7B2C5-W\uFF09**\u307E\u305F\u306F**AND \u30B9\u30D1\u30A4\u30F3\u4E0A\u306E exact \u95A2\u6570 leaf \u3092 alias \u3054\u3068\u306B\u63A1\u7528\u3059\u308B\u5F62\uFF08\u7B2C5-L\uFF09**\u3067\u4F7F\u3048\u307E\u3059\u3002\u8907\u6570 alias \u3078\u5206\u6563\u3057\u305F\u95A2\u6570 leaf \u3082\u5404 APP \u3078\u62BC\u3057\u4E0B\u3052\u3001\u95A2\u6570\u3092\u542B\u307E\u306A\u3044\u6B8B\u4F59\u3060\u3051\u3092 client \u8A55\u4FA1\u3057\u307E\u3059\u3002`LEFT` / `RIGHT JOIN`\u3001cross-alias `OR`\u3001\u95A2\u6570\u3092\u542B\u3080 cross-table \u8FF0\u8A9E\u3001whole-WHERE exact \u3067\u306A\u3044 KLIKE-containing `OR`\u3001JOIN \u5165\u529B\u304C\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FB\u5165\u308C\u5B50 SELECT\u30FB\u6D3E\u751F\u8868\u30FBCTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5F62\u306F fail-closed \u3067\u3059\u3002\u5358\u4E00 APP \u306E prefilter\uFF0B\u6B8B\u4F59\u306F CTE \u672C\u4F53\u30FB`WITH` \u306E\u6700\u7D42 SELECT\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002`VALIDATE`\u3001\u304A\u3088\u3073**\u5B9F\u4F53\u5316 CTE \u672C\u4F53 / `WITH` \u6700\u7D42\u30AF\u30A8\u30EA / \u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u304C `UNION` \u306E\u5834\u5408**\u3082 fail-closed \u3067\u3059\uFF08\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E `UNION` \u306F\u679D\u3054\u3068\u306B\u5224\u5B9A\u3057\u307E\u3059\uFF09\u3002**`KORDER BY` \u3068 DML\uFF08`UPDATE` / `DELETE` \u306E\u5BFE\u8C61\u9078\u629E\u3001`INSERT` / `UPSERT ... SELECT` \u306E source\uFF09\u306F whole-WHERE exact \u306E\u5F62\u3060\u3051\u304C\u4F7F\u3048\u3001prefilter\uFF0Bclient \u6B8B\u4F59\u3084 FULL_SCAN_EXACT \u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002** \u95A2\u6570\u4E00\u89A7\u3001\u5F15\u6570\u3001\u578B\u30FB\u6F14\u7B97\u5B50\u3001reason code\u3001\u6B8B\u308B\u975E\u5BFE\u79F0\u3001soft keyword \u3068\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u9000\u907F\u306F [\xA75\u300Ckintone \u30AF\u30A8\u30EA\u95A2\u6570\u300D](#kintone-\u30AF\u30A8\u30EA\u95A2\u6570server-only) \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### \u578B\u4ED8\u304D\u6BD4\u8F03\uFF08v3.0.0\uFF09\n\n\u6BD4\u8F03\u65B9\u6CD5\u306F\u5024\u306E\u898B\u305F\u76EE\u3067\u306F\u306A\u304F\u3001\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u307E\u305F\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u4F1D\u64AD\u3057\u305F\u5217\u578B\u3067\u6C7A\u307E\u308A\u307E\u3059\u3002\n\n- \u6587\u5B57\u5217\u578B\u3068\u578B\u4E0D\u660E\u5217\u306F Unicode \u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3067\u6BD4\u8F03\u3057\u307E\u3059\u3002`'20' > '100'` \u306F\u771F\u3067\u3059\n- NUMBER \u3068\u6570\u5024\u5F62\u5F0F CALC \u306F\u6700\u592730\u6841\u306E\u6709\u965010\u9032\u3092\u6587\u5B57\u5217\u306E\u307E\u307E\u53B3\u5BC6\u6BD4\u8F03\u3057\u307E\u3059\u3002\u7A7A\u30BB\u30EB\u3001\u7121\u9650\u5927\u3001\u691C\u8A3C\u5931\u6557\u5024\u3092\u542B\u3080\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5217\u306B\u3082\u6C7A\u5B9A\u7684\u306A\u56FA\u5B9A\u9806\u304C\u3042\u308A\u307E\u3059\u3002\u7A7A\u767D\u306E\u307F\u306F\u6570\u50240\u3067\u306F\u306A\u304F\u300C\u305D\u306E\u4ED6\u975E\u6570\u5024\u300D\u3067\u3059\n- DATE / TIME / DATETIME \u306Fkintone\u306E\u6B63\u898F\u5316\u6E08\u307F\u8868\u73FE\u3092\u6587\u5B57\u5217\u3068\u3057\u3066\u6BD4\u8F03\u3057\u307E\u3059\n- DROP_DOWN / RADIO_BUTTON / STATUS\u7B49\u306F\u3001\u53D6\u5F97\u3067\u304D\u305F\u5B9A\u7FA9\u9806\u3092\u4F7F\u7528\u3057\u307E\u3059\n- \u6587\u5B57\u5217\uFF081\u884C\uFF09\u7B49\u3067kintone REST\u304C\u53D7\u7406\u3057\u306A\u3044`<` / `>`\u306F\u3001SELECT\u3067\u306F\u81EA\u52D5\u7684\u306B\u30ED\u30FC\u30AB\u30EB\u8A55\u4FA1\u3078\u5207\u308A\u66FF\u3048\u307E\u3059\u3002DML\u306F\u5BFE\u8C61\u96C6\u5408\u3092\u6697\u9ED9\u306B\u5E83\u3052\u305A\u3001\u5B9F\u884C\u524D\u306B\u30A8\u30E9\u30FC\u306B\u3057\u307E\u3059\n\nv2\u307E\u3067\u306F\u6570\u5B57\u3060\u3051\u306E\u6587\u5B57\u5217\u3092\u5024\u30D9\u30FC\u30B9\u3067\u6570\u5024\u6BD4\u8F03\u3059\u308B\u7D4C\u8DEF\u304C\u3042\u308A\u307E\u3057\u305F\u3002v3\u3067\u306F\u3053\u306E\u30DA\u30A2\u5358\u4F4D\u306E\u81EA\u52D5\u5207\u66FF\u3092\u5EC3\u6B62\u3057\u305F\u305F\u3081\u3001WHERE\u306E\u7D50\u679C\u884C\u3001\u96C6\u8A08\u5024\u3001DML\u5019\u88DC\u304C\u5909\u308F\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u8A73\u7D30\u306F[v3.0.0 \u79FB\u884C\u30AC\u30A4\u30C9](ksql_v3_migration_guide.md)\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### WHERE \u306E REST \u62BC\u3057\u4E0B\u3052\n\n\u524D\u63D0\u3068\u3057\u3066\u3001**kintone \u306F SQL \u3092\u5B9F\u884C\u3057\u307E\u305B\u3093**\u3002kSQL \u30A8\u30F3\u30B8\u30F3\u306F records API \u3067\u30EC\u30B3\u30FC\u30C9\u3092\n\u53D6\u5F97\u3057\u3001`WHERE`\u30FB`JOIN`\u30FB\u96C6\u8A08\u30FB\u95A2\u6570\u306A\u3069\u306E SQL \u8A55\u4FA1\u306F\u3059\u3079\u3066\u30A8\u30F3\u30B8\u30F3\u5185\uFF08JavaScript\uFF09\u3067\n\u884C\u3044\u307E\u3059\u3002\u4F55\u3082\u3057\u306A\u3051\u308C\u3070\u3001\u6761\u4EF6\u304C\u3069\u308C\u3060\u3051\u7D5E\u308A\u8FBC\u3093\u3067\u3044\u3066\u3082**\u30A2\u30D7\u30EA\u306E\u5168\u30EC\u30B3\u30FC\u30C9\u3092\u8EE2\u9001\u3057\u3066\u304B\u3089**\n\u6368\u3066\u308B\u3053\u3068\u306B\u306A\u308A\u307E\u3059\u3002\n\n\u300C\u62BC\u3057\u4E0B\u3052\uFF08pushdown\uFF09\u300D\u306F\u3001\u3053\u306E\u69CB\u56F3\u3067 **kintone \u306E\u30AF\u30A8\u30EA\u69CB\u6587\u3067\u3082\u8868\u73FE\u3067\u304D\u308B\u6761\u4EF6\u3092\nrecords API \u306E `query` \u30D1\u30E9\u30E1\u30FC\u30BF\u3078\u79FB\u3057\u3001\u8EE2\u9001\u3055\u308C\u308B\u30EC\u30B3\u30FC\u30C9\u81EA\u4F53\u3092\u6E1B\u3089\u3059\u52D5\u4F5C**\u3067\u3059\u3002\n\n```\nSELECT * FROM APP100 WHERE \u88FD\u54C1\u540D = '\u725B\u4E73' AND \u4ED5\u5165\u5148 LIKE '%\u4E73\u696D%'\n\n\u62BC\u3057\u4E0B\u3052\u306A\u3057: GET records.json?app=100 \u2192 \u5168\u4EF6\u8EE2\u9001\u3057\u3001WHERE \u5168\u4F53\u3092 JS \u3067\u8A55\u4FA1\n\u62BC\u3057\u4E0B\u3052\u3042\u308A: GET records.json?app=100&query=\u88FD\u54C1\u540D = \"\u725B\u4E73\" \u2192 \u8EE2\u9001\u3092\u6E1B\u3089\u3057\u3001\u53D6\u5F97\u5F8C\u306B WHERE \u5168\u4F53\u3092\u518D\u8A55\u4FA1\n```\n\n\u3069\u3061\u3089\u3082\u7D50\u679C\u306F\u540C\u3058\u3067\u3059\u3002\u5019\u88DC\u3092\u5E83\u3081\u306B\u53D6\u5F97\u3059\u308B `superset` \u3092\u542B\u3081\u3001\u62BC\u3057\u4E0B\u3052\u5F8C\u3082\n**\u5143\u306E `WHERE` \u5168\u4F53\u3092\u53D6\u5F97\u5F8C\u306B\u518D\u8A55\u4FA1\u3059\u308B**\u305F\u3081\u3067\u3001\u6B63\u3057\u3055\u3092\u62C5\u4FDD\u3059\u308B\u306E\u306F\u5E38\u306B\u3053\u306E\u518D\u8A55\u4FA1\u3067\u3059\u3002\n\u62BC\u3057\u4E0B\u3052\u306E\u6709\u7121\u30FB\u5E83\u3055\u304C\u5909\u3048\u308B\u306E\u306F\u3001\u8EE2\u9001\u4EF6\u6570\u30FBAPI \u547C\u3073\u51FA\u3057\u56DE\u6570\u30FB`maxRecords` \u306E\u5F53\u305F\u308A\u65B9\u3060\u3051\u3067\u3059\n\uFF08\u4F8B\u5916\u306F 1 \u3064\uFF1D\u62BC\u3057\u4E0B\u3052\u305F\u5024\u305D\u306E\u3082\u306E\u3092 kintone \u304C\u62D2\u5426\u3059\u308B\u5834\u5408\u3067\u3001\u5358\u4E00\u8868\u3068\u540C\u3058\nkintone \u30A8\u30E9\u30FC\u304C\u8868\u9762\u5316\u3057\u307E\u3059\u3002\xA7\u5185\u306E\u300C\u5B9A\u7FA9\u306B\u7121\u3044\u9078\u629E\u80A2\u5024\u300D\u7B49\u3092\u53C2\u7167\uFF09\u3002\n\n#### \u6A5F\u69CB\u306E\u5168\u4F53\u50CF\n\n\u62BC\u3057\u4E0B\u3052\u306B\u306F 3 \u3064\u306E\u6A5F\u69CB\u304C\u3042\u308A\u307E\u3059\u3002\n\n1. **\u5358\u4E00\u8868\u306E\u5B8C\u5168\u76F4\u5217\u5316**: `WHERE` \u5168\u4F53\u3092 kintone query \u3078 exact \u306B\u76F4\u5217\u5316\u3067\u304D\u308C\u3070\u3001\n \u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3092\u554F\u308F\u305A\u62BC\u3057\u4E0B\u3052\u307E\u3059\uFF08SIMPLE \u30E2\u30FC\u30C9\u306E\u57FA\u672C\u5F62\uFF09\u3002\n2. **\u5B89\u5168\u8449\u306E\u30D7\u30EC\u30D5\u30A3\u30EB\u30BF**: \u5168\u4F53\u3092\u76F4\u5217\u5316\u3067\u304D\u306A\u3044\u5F62\uFF08`LIKE`\u30FB\u95A2\u6570\u30FBJOIN \u306A\u3069\uFF09\u3067\u3082\u3001\n `WHERE` \u30EB\u30FC\u30C8\u304B\u3089 AND \u3068\u62EC\u5F27\u3060\u3051\u3092\u7D4C\u7531\u3059\u308B\u300C\u5B89\u5168\u306A\u8449\u300D\u3060\u3051\u3092\u5148\u306B\u9001\u308A\u307E\u3059\u3002\n \u5358\u4E00\u8868 FULL_SCAN \u3068\u3001JOIN \u306E\u5404\u7269\u7406 APP\uFF08field vs literal\u30FB\u6B21\u8868\u306E\u898F\u5247\uFF09\u304C\u5BFE\u8C61\u3067\u3059\u3002\n \u305F\u3068\u3048\u3070 `\u88FD\u54C1\u540D = '\u725B\u4E73' AND \u4ED5\u5165\u5148 LIKE 'zz'` \u306F\u524D\u8005\u3060\u3051\u3092 records API \u306B\u9001\u308A\u3001\n \u5143\u306E `WHERE` \u5168\u4F53\u3092\u53D6\u5F97\u5F8C\u306B\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\n3. **\u7D50\u5408\u30AD\u30FC\u306E\u62BC\u3057\u4E0B\u3052**: CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u7269\u7406 APP \u3078 INNER JOIN \u3059\u308B\u5F62\u3067\u306F\u3001\n \u7D50\u5408\u30AD\u30FC\u306E\u5B9F\u5024\u304B\u3089 `in` \u30EA\u30B9\u30C8\u3001\u307E\u305F\u306F\uFF08`in` \u3092\u53D7\u3051\u306A\u3044\u65E5\u4ED8\u7CFB\u306A\u3069\u306F\uFF09min/max \u306E\u7BC4\u56F2\u3092\n \u4F5C\u3063\u3066 JOIN \u5148\u3092\u7D5E\u308A\u8FBC\u307F\u307E\u3059\u3002\u7269\u7406 APP \u5074\u306E\u5B89\u5168\u8449\uFF08\u6A5F\u69CB 2 \u3068\u540C\u3058\u898F\u5247\uFF09\u3082\n \u3053\u306E query \u306B\u5408\u6D41\u3057\u307E\u3059\u3002\n\n\u3053\u308C\u3089\u306E\u5B89\u5168\u8449\u306E\u5224\u5B9A\uFF08\u578B\xD7\u6F14\u7B97\u5B50\xD7literal \u306E\u898F\u5247\uFF09\u306F 1 \u3064\u306E leaf policy \u3092\u5171\u6709\u3057\u307E\u3059\u3002\n\u6B21\u306E\u8868\u304C\u8AAC\u660E\u3059\u308B\u306E\u306F\u3001**1 \u3064\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092 1 \u3064\u306E\u30EA\u30C6\u30E9\u30EB\uFF08`IN` / `NOT IN` \u306F\n\u30EA\u30C6\u30E9\u30EB\u30EA\u30B9\u30C8\uFF09\u3068\u6BD4\u8F03\u3059\u308B\u5358\u4E00\u306E\u6761\u4EF6**\u306E\u5224\u5B9A\u3067\u3059\u3002server-only \u95A2\u6570\u3001`KLIKE` \u306F\u5225\u306E\u898F\u5247\u3067\u3059\u3002\n\n#### `EXPLAIN` \u306E\u8AAD\u307F\u65B9\uFF08\u62BC\u3057\u4E0B\u3052\u95A2\u9023\u306E\u884C\uFF09\n\n- **\u53D6\u5F97\u306E\u5B9F\u614B\u306E\u6B63\u306F\u3001\u5404 source \u306E `fetch:` \u884C**\u3067\u3059\uFF08`EXACT` / `PREFILTERED` / `ALL` \u306A\u3069\uFF09\u3002\n `maxRecords` \u306E\u898B\u7A4D\u3082\u308A\u306F\u3053\u306E\u884C\u3092\u6839\u62E0\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n- **`relation:` \u306F\u300C\u62BC\u3057\u4E0B\u3052\u305F\u6761\u4EF6\u304C\u5FE0\u5B9F\u306B\u8A33\u305B\u305F\u304B\u300D**\uFF08`exact`\uFF1D\u8449\u5358\u4F4D\u3067\u7B49\u4FA1\u30FB\n `superset`\uFF1D\u5E83\u3081\u306B\u53D6\u5F97\uFF09\u3067\u3042\u3063\u3066\u3001**\u300C\u62BC\u3057\u4E0B\u3052\u304B\u3089\u6F0F\u308C\u305F\u6761\u4EF6\u304C\u7121\u3044\u304B\u300D\u3067\u306F\u3042\u308A\u307E\u305B\u3093**\u3002\n `relation: exact` \u3067\u3082 `LIKE` \u306A\u3069\u306E\u6B8B\u4F59\u6761\u4EF6\u304C\u3042\u308C\u3070\u3001\u53D6\u5F97\u4EF6\u6570\u306F\u7B54\u3048\u3088\u308A\u591A\u304F\u306A\u308A\u307E\u3059\n \uFF08\u5B9F\u6E2C\u30FBv3.62.0\uFF09\u3002\n- `pushdown applied:` \u306F\u78BA\u5B9A\u3057\u305F query\u3001`pushdown candidate: \u2026\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09` \u306F\n metadata \u672A\u53D6\u5F97\u306E\u9759\u7684\u8868\u793A\u3067\u3059\uFF08CLI `--dry-run` \u306A\u3069\u30FBAPI 0 \u56DE\u306E\u9762\u3067\u51FA\u307E\u3059\uFF09\u3002\n- `join pushdown plan: not applied` \u306F\u3001CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u542B\u3080\u5834\u5408\u306B\u300C\u7269\u7406 APP \u3060\u3051\u306E\n \u76F4\u63A5 JOIN planner\u300D\u304C\u4E0D\u9069\u7528\u3067\u3042\u308B\u3053\u3068\u3092\u793A\u3059\u3060\u3051\u3067\u3001\u7D9A\u304F source \u3054\u3068\u306E\n JOIN key / WHERE prefilter \u307E\u3067\u4E0D\u9069\u7528\u3068\u3044\u3046\u610F\u5473\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF08\u5404 source \u884C\u3092\u8AAD\u307F\u307E\u3059\uFF09\u3002\n\n\u30D5\u30A9\u30FC\u30E0\u9078\u629E\u7CFB\u306E `IN` / `NOT IN` \u306F\u3001\u7A7A\u3067\u306A\u3044\u5B9F\u5728\u9078\u629E\u80A2\u3060\u3051\u306E\u30EA\u30B9\u30C8\u3092\u6307\u5B9A\u3057\u3001\u578B\u60C5\u5831\u3068\n\u9078\u629E\u80A2\u60C5\u5831\u3092\u53D6\u5F97\u3067\u304D\u305F\u5834\u5408\u306B\u62BC\u3057\u4E0B\u304C\u308A\u307E\u3059\u3002\u30E6\u30FC\u30B6\u30FC\u30FB\u7D44\u7E54\u30FB\u30B0\u30EB\u30FC\u30D7\u30FB\u4F5C\u696D\u8005\u7CFB\u306F\n`name` \u3067\u306F\u306A\u304F\u975E\u7A7A\u306E `code` \u3092\u9010\u8A9E\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\u8868\u306F\u3053\u308C\u3089\u306E\u6761\u4EF6\u3092\u6E80\u305F\u3059\u30EA\u30C6\u30E9\u30EB\u3067\u306E\u5224\u5B9A\u3067\u3059\u3002\n\n**\u25CB = \u62BC\u3057\u4E0B\u304C\u308B\uFF0F\u2715 = \u62BC\u3057\u4E0B\u304C\u3089\u306A\u3044**\uFF08\u2715 \u306E\u6761\u4EF6\u306F prefilter \u306B\u4F7F\u308F\u305A\u3001\u53D6\u5F97\u5F8C\u306B JS \u3067\u5224\u5B9A\u3057\u307E\u3059\uFF09\u3002\n\u5358\u4E00\u5024\u9078\u629E\u7CFB\uFF08`RADIO_BUTTON` / `DROP_DOWN` / `STATUS`\uFF09\u306E `=` / `!=` \u306F\u3001\u30A8\u30F3\u30B8\u30F3\u304C\n`in` / `not in` \u3078\u6B63\u898F\u5316\u3057\u305F\u3046\u3048\u3067\u62BC\u3057\u4E0B\u3052\u308B\u305F\u3081 \u25CB \u3067\u3059\uFF08\u6761\u4EF6\u306F `in` \u3068\u540C\u3058\uFF1D\u5B9F\u5728\u9078\u629E\u80A2\u30FB\u7A7A\u3067\u306A\u3044\u5024\uFF09\u3002\n\n<!-- B84_JOIN_FIELD_LITERAL_TABLE_START -->\n| \u30D5\u30A3\u30FC\u30EB\u30C9\u578B | `=` | `!=` | `<` | `>` | `<=` | `>=` | `in` | `not in` |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| `CALC` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB |\n| `CATEGORY` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 |\n| `CHECK_BOX` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `CREATED_TIME` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u2715 | \u2715 |\n| `CREATOR` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `DATE` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u2715 | \u2715 |\n| `DATETIME` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u2715 | \u2715 |\n| `DROP_DOWN` | \u25CB | \u25CB | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `FILE` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 |\n| `GROUP_SELECT` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `LINK` | \u25CB | \u25CB | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `MODIFIER` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `MULTI_LINE_TEXT` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 |\n| `MULTI_SELECT` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `NUMBER` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB |\n| `ORGANIZATION_SELECT` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `RADIO_BUTTON` | \u25CB | \u25CB | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `RECORD_NUMBER` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB |\n| `RICH_TEXT` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 |\n| `SINGLE_LINE_TEXT` | \u25CB | \u25CB | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `STATUS` | \u25CB | \u25CB | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `STATUS_ASSIGNEE` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `TIME` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u2715 | \u2715 |\n| `UPDATED_TIME` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u2715 | \u2715 |\n| `USER_SELECT` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n<!-- B84_JOIN_FIELD_LITERAL_TABLE_END -->\n\n\u65E5\u4ED8\u30FB\u6642\u523B\u7CFB\u306E\u884C\u306F\u3001\u53F3\u8FBA\u304C\u6B63\u898F\u5F62\u5F0F\u306E\u5834\u5408\u306B\u9650\u308A\u307E\u3059\u3002`DATE` \u306F\u5B9F\u5728\u3059\u308B\n`YYYY-MM-DD`\u3001`TIME` \u306F `HH:mm`\u3001`DATETIME` / `CREATED_TIME` / `UPDATED_TIME` \u306F\n`YYYY-MM-DDTHH:mm:ssZ` \u3060\u3051\u304C\u5BFE\u8C61\u3067\u3059\u3002UTC offset\u3001\u79D2\u7701\u7565\u3001\u5C0F\u6570\u79D2\u3001\u524D\u5F8C\u7A7A\u767D\u3001\u7A7A\u6587\u5B57\u306F\n\u62BC\u3057\u4E0B\u3052\u305A\u3001\u53D6\u5F97\u5F8C\u306B\u5224\u5B9A\u3057\u307E\u3059\u3002\n\n`SINGLE_LINE_TEXT` / `LINK` \u306F\u3001\u7A7A\u3067\u306A\u3044\u6587\u5B57\u5217\u306B\u3088\u308B `=` / `!=`\uFF08`<>` \u3092\u542B\u3080\uFF09\u3068\u3001\n1\u4EF6\u4EE5\u4E0A\u306E\u7A7A\u3067\u306A\u3044\u6587\u5B57\u5217\u3060\u3051\u304B\u3089\u306A\u308B `IN` / `NOT IN` \u3092 `relation: exact` \u3068\u3057\u3066\n\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3001\u5168\u89D2\u534A\u89D2\u3001Unicode\u3001\u7A7A\u767D\u306F\u6B63\u898F\u5316\u305B\u305A\u3001records API query \u306B\n\u5FC5\u8981\u306A `\"` \u3068 `\\` \u306E escape \u3060\u3051\u3092\u884C\u3044\u307E\u3059\u3002\u7BC4\u56F2\u6BD4\u8F03\u3001\u7A7A\u6587\u5B57\u3001\u7A7A\u6587\u5B57\u3092\u542B\u3080\u30EA\u30B9\u30C8\u306F\n\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\u3002`LIKE` \u306F\u5F15\u304D\u7D9A\u304D client \u8A55\u4FA1\u3067\u3001kintone \u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u306B\u306F `KLIKE` \u3092\n\u4F7F\u7528\u3057\u307E\u3059\u3002\n\n`CALC` / `RECORD_NUMBER` \u306F\u3001B151 \u306E numeric literal policy \u3092\u6E80\u305F\u3059\u6570\u5024\u3001\u307E\u305F\u306F\u7A7A\u3067\u306A\u3044\n\u6587\u5B57\u5217\u30928\u6F14\u7B97\u5B50\u3067\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002`IN` / `NOT IN` \u306F1\u4EF6\u4EE5\u4E0A\u306E\u540C\u7A2E literal \u3060\u3051\u304B\u3089\u306A\u308B\u30EA\u30B9\u30C8\u304C\n\u5BFE\u8C61\u3067\u3059\u3002\u3044\u305A\u308C\u3082 `relation: superset` \u3068\u3057\u3066\u53D6\u5F97\u5F8C\u306B\u5143\u306E `WHERE` \u3092\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\nCALC \u306E\u8868\u793A\u66F8\u5F0F\u3084 RECORD_NUMBER \u306E\u30A2\u30D7\u30EA\u30B3\u30FC\u30C9\u5F62\u5F0F\u306B\u5408\u308F\u306A\u3044\u5024\u306F\u3001\u5358\u4E00\u8868\u3068\u540C\u3058\u304F kintone\nquery error \u306B\u306A\u308A\u307E\u3059\u3002\u5168\u4EF6\u53D6\u5F97\u3078\u306E silent retry \u306F\u884C\u3044\u307E\u305B\u3093\u3002\n\n\u30E6\u30FC\u30B6\u30FC\u30FB\u7D44\u7E54\u30FB\u30B0\u30EB\u30FC\u30D7\u30FB\u4F5C\u696D\u8005\u7CFB6\u578B\u306F\u30011\u4EF6\u4EE5\u4E0A\u306E\u975E\u7A7A string literal code \u306B\u3088\u308B\n`IN` / `NOT IN` \u3092 `relation: exact` \u3067\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002\u8868\u793A\u540D `name` \u306F\u4F7F\u3044\u307E\u305B\u3093\u3002\n\u5B58\u5728\u3057\u306A\u3044 code\uFF08`GAIA_IL26` \u7B49\uFF09\u3084\u30D7\u30ED\u30BB\u30B9\u7121\u52B9\u6642\u306E\u4F5C\u696D\u8005\u306A\u3069\u3001kintone \u304C\u53D7\u7406\u3057\u306A\u3044\u6307\u5B9A\u306F\n\u5358\u4E00\u8868\u3068\u540C\u3058\u304F query error \u3068\u3057\u3066\u8868\u9762\u5316\u3057\u3001\u5168\u4EF6\u53D6\u5F97\u3078 retry \u3057\u307E\u305B\u3093\u3002\n\n`NUMBER` \u884C\u306F\u3001\u76F4\u63A5\u306E\u7269\u7406 NUMBER \u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u3001\u6B63\u898F\u5316\u5F8C\u306E\u5C0F\u6570\u90E810\u6841\u4EE5\u4E0B\u30FB\u5168\u4F5330\u6841\u4EE5\u4E0B\u306E\n\u6709\u965010\u9032 numeric literal\uFF08`IN` / `NOT IN` \u306F1\u4EF6\u4EE5\u4E0A\u306E numeric literal \u3060\u3051\u306E\u30EA\u30B9\u30C8\uFF09\u3092\n\u6BD4\u8F03\u3059\u308B\u5834\u5408\u306B\u9650\u308A\u307E\u3059\u30028\u6F14\u7B97\u5B50\u306F\u3044\u305A\u308C\u3082 `relation: exact` \u3067\u3059\u3002\u6307\u6570\u8868\u8A18\u3068\u5148\u982D\u306E `+` \u306F\nplain decimal \u306B\u6B63\u898F\u5316\u3057\u3001\u5B89\u5168\u6574\u6570\u5916\u3082\u5143\u306E10\u9032\u5B57\u53E5\u3092\u4FDD\u6301\u3057\u307E\u3059\u3002\u30A2\u30D7\u30EA\u306E `numberPrecision`\n\u306F\u4FDD\u5B58\u5024\u306E\u4E38\u3081\u8A2D\u5B9A\u3067\u3042\u308A\u3001query literal \u3092\u305D\u306E\u8A2D\u5B9A\u3078\u4E38\u3081\u307E\u305B\u3093\u3002\u6587\u5B57\u5217 literal\u3001\n\u8A31\u53EF\u7BC4\u56F2\u5916\u306E\u5024\u3001\u7B97\u8853\u5F0F\u30FB\u95A2\u6570\u30FB`CASE` \u3067\u5305\u3093\u3060\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3053\u306E NUMBER \u898F\u5247\u306E\u5BFE\u8C61\u5916\u3067\u3059\u3002\n\n`$id` \u306F\u4E0A\u8868\u306E `RECORD_NUMBER` \u3068\u306F\u5225\u3067\u3059\u3002`$id` \u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3067\u306F\u306A\u304F\u3001\u6B63\u6E96\u306A\u30EC\u30B3\u30FC\u30C9 ID\n\u3067\u3042\u308B\u3068\u8A3C\u660E\u3067\u304D\u308B\u64EC\u4F3C\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u306A\u306E\u3067\u3001\u6B63\u306E\u5B89\u5168\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u306B\u5BFE\u3059\u308B `=` / `<` / `>` /\n`<=` / `>=` \u3092 JOIN \u3067\u3082\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002JOIN \u4E2D\u306E `RECORD_NUMBER` \u306F\u540C\u3058 exact \u4FDD\u8A3C\u3092\u6301\u305F\u306A\u3044\n\u305F\u3081\u3001\u5225\u5951\u7D04\u306E `superset` \u3068\u3057\u3066\u62BC\u3057\u4E0B\u3052\u3001\u53D6\u5F97\u5F8C\u306B\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\n\n\u30D5\u30A3\u30FC\u30EB\u30C9\u3092 `DATE_FORMAT(field, ...)` \u306A\u3069\u306E\u95A2\u6570\u3067\u5305\u3080\u6761\u4EF6\u306F kintone query \u3068\u3057\u3066\u8868\u73FE\u3067\u304D\u305A\u3001\n\u62BC\u3057\u4E0B\u304C\u308A\u307E\u305B\u3093\u3002server-only \u306E kintone \u30AF\u30A8\u30EA\u95A2\u6570\u306F\n[\u5C02\u7528\u7BC0](#kintone-\u30AF\u30A8\u30EA\u95A2\u6570server-only)\u3001`KLIKE` / `NOT KLIKE` \u306F\n[\u5C02\u7528\u7BC0](#klike--not-klikekintone\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22)\u306E\u898F\u5247\u306B\u5F93\u3044\u307E\u3059\u3002\n\n\u9078\u629E\u7CFB\u306E `=` / `!=` \u306F kintone query \u304C `in` / `not in` \u3057\u304B\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093\u304C\u3001\n**\u5358\u4E00\u5024\u306E\u9078\u629E\u7CFB\uFF08`RADIO_BUTTON` / `DROP_DOWN` / `STATUS` \u306A\u3069\uFF09\u3067\u306F\u3001\u30A8\u30F3\u30B8\u30F3\u304C\u81EA\u52D5\u3067\n`IN` / `NOT IN` \u3078\u6B63\u898F\u5316\u3057\u3066\u62BC\u3057\u4E0B\u3052\u307E\u3059**\uFF08`EXPLAIN` \u306B `pushdown normalized:` \u884C\u304C\u51FA\u307E\u3059\u3002\n\u66F8\u304D\u63DB\u3048\u306F\u4E0D\u8981\u3067\u3059\uFF09\u3002**\u6B63\u898F\u5316\u306E\u5BFE\u8C61\u5916**\uFF1D\u8907\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30FB\u8907\u6570\u9078\u629E\u30FB\n\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u306A\u3069\u3002`IN` \u306B\u3059\u308B\u3068\u300C\u3044\u305A\u308C\u304B\u3092\u542B\u3080\u300D\u5224\u5B9A\u306B\u306A\u308A\u610F\u5473\u304C\u5909\u308F\u308B\u305F\u3081\uFF09\u30FB\n**\u5B9A\u7FA9\u306B\u7121\u3044\u9078\u629E\u80A2\u5024\u30FB\u7A7A\u6587\u5B57\uFF08`= ''`\uFF09**\u3002\u3053\u308C\u3089\u306F\u5F93\u6765\u3069\u304A\u308A\u62BC\u3057\u4E0B\u304C\u308A\u307E\u305B\u3093\u3002\n\u3053\u306E\u6B63\u898F\u5316\u306F WHERE \u306E AST \u3092\u5404\u30D7\u30E9\u30F3\u30CA\u30FC\u3067\u5171\u6709\u3059\u308B\u524D\u306B\u884C\u308F\u308C\u308B\u305F\u3081\u3001\n**\u5358\u4E00\u8868\u3068 JOIN \u306E field-vs-literal prefilter\uFF08\u4E0A\u8868\uFF09\u306E\u4E21\u65B9\u306E\u7D4C\u8DEF\u306B\u639B\u304B\u308A\u307E\u3059**\u3002\n\n#### \u62BC\u3057\u4E0B\u304C\u308B\u5F62\u3078\u306E\u66F8\u304D\u63DB\u3048\n\n**\u7D50\u679C\u306F\u540C\u3058\u3067\u3082\u3001\u66F8\u304D\u65B9\u3067\u53D6\u5F97\u4EF6\u6570\u304C\u5909\u308F\u308A\u307E\u3059\u3002**\u4E0B\u8868\u306F\u540C\u3058\u610F\u5473\u306E\u307E\u307E\u62BC\u3057\u4E0B\u304C\u308B\u5F62\u3078\n\u66F8\u304D\u63DB\u3048\u308B\u4F8B\u3067\u3059\uFF08`fetch:` \u306F `EXPLAIN` \u306E\u8868\u793A\u3002\u2192 [\xA724 \u51FA\u529B\u306E\u8AAD\u307F\u65B9](#\u51FA\u529B\u306E\u8AAD\u307F\u65B9)\uFF09\u3002\n\n| \u5168\u4EF6\u53D6\u5F97\u306B\u306A\u308B\u66F8\u304D\u65B9 | \u306A\u305C | \u62BC\u3057\u4E0B\u304C\u308B\u66F8\u304D\u65B9 |\n|---|---|---|\n| `\u78BA\u5EA6 = ''`\uFF08\u9078\u629E\u7CFB\u306E\u7A7A\u30BB\u30EB\u5224\u5B9A\uFF09 | \u7A7A\u6587\u5B57\u306F `IN` \u3078\u306E\u81EA\u52D5\u6B63\u898F\u5316\uFF08\u5358\u4E00\u5024\u9078\u629E\u7CFB\u306E `=` / `!=`\uFF09\u306E\u5BFE\u8C61\u5916 | **`\u78BA\u5EA6 IN ('')`** |\n| `YEAR(\u53D7\u6CE8\u4E88\u5B9A\u65E5) = 2026` | \u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u95A2\u6570\u3067\u5305\u3080\u3068\u5909\u63DB\u3067\u304D\u306A\u3044 | **`\u53D7\u6CE8\u4E88\u5B9A\u65E5 = THIS_YEAR()`** |\n| `\u53D7\u6CE8\u4E88\u5B9A\u65E5 >= CURRENT_DATE()` | kSQL \u306E\u30B9\u30AB\u30E9\u30FC\u95A2\u6570\u3067\u3001\u62BC\u3057\u4E0B\u3052\u7D4C\u8DEF\u304C\u7121\u3044 | **\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570**\uFF08`TODAY()` / `FROM_TODAY(n, unit)`\uFF09 |\n| `\u6848\u4EF6\u540D LIKE '%\u5546\u4E8B%'` | `LIKE` \u306F**\u524D\u65B9\u4E00\u81F4\u3067\u3082**\u5E38\u306B JS \u8A55\u4FA1 | **`\u6848\u4EF6\u540D KLIKE '\u5546\u4E8B'`**\uFF08\u4E00\u81F4\u898F\u5247\u306F kintone \u6E96\u62E0\u3067\u5225\u7269\uFF09\u3001\u307E\u305F\u306F\u62BC\u3057\u4E0B\u304C\u308B\u6761\u4EF6\u3092 `AND` \u3067\u8DB3\u3057\u3066 prefilter \u3092\u52B9\u304B\u305B\u308B |\n| `\u78BA\u5EA6 IS NULL` | `IS NULL` \u306F\u62BC\u3057\u4E0B\u304C\u3089\u306A\u3044 | \u9078\u629E\u7CFB\u306E\u672A\u9078\u629E\u306F **`\u78BA\u5EA6 IN ('')`** |\n\n**\u4E0A\u8868\u306F\u3044\u305A\u308C\u3082\u5B9F\u6E2C\u3067\u3059**\uFF08`EXPLAIN` \u306E `fetch:` \u304C `ALL` \u2192 `EXACT` \u3078\u5909\u308F\u308B\u3053\u3068\u3092\u78BA\u8A8D\uFF09\u3002\n\n> JOIN \u4E2D\u306E\u76F4\u63A5 NUMBER \u6BD4\u8F03\u306F\u3001\u8A31\u53EF\u7BC4\u56F2\u5185\u306E\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u3067\u3042\u308C\u3070 `>=` / `<=` \u3092\u542B\u3081\u3066\n> \u305D\u306E\u307E\u307E exact prefilter \u306B\u306A\u308A\u307E\u3059\u3002\u6574\u6570\u5883\u754C\u3078\u306E\u624B\u52D5\u66F8\u304D\u63DB\u3048\u306F\u4E0D\u8981\u3067\u3059\u3002\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\n> \u7B97\u8853\u5F0F\u3084\u95A2\u6570\u3067\u5305\u3080\u3068\u76F4\u63A5 field leaf \u3067\u306F\u306A\u304F\u306A\u308B\u305F\u3081\u62BC\u3057\u4E0B\u304C\u308A\u307E\u305B\u3093\u3002\n> JOIN \u306E\u62BC\u3057\u4E0B\u3052\u306F\u7D50\u5408\u30AD\u30FC\u306B\u3088\u308B\u7D5E\u308A\u8FBC\u307F\u304C\u4E2D\u5FC3\u3067\u3001\u5916\u90E8\u7D50\u5408\u3067\u306F\u884C\u308F\u308C\u307E\u305B\u3093\u3002\n\n> **`CURRENT_DATE()` / `CURRENT_TIMESTAMP()` \u306F\u5B9F\u884C\u74B0\u5883\u306E\u30ED\u30FC\u30AB\u30EB\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3067\u8A55\u4FA1\u3055\u308C\u307E\u3059\u3002**\n> kintone \u30C9\u30E1\u30A4\u30F3\u3068\u6642\u5DEE\u304C\u3042\u308B\u74B0\u5883\u3067\u306F\u6708\u521D\u30FB\u6708\u672B\u306E\u5883\u754C\u304C\u305A\u308C\u5F97\u308B\u305F\u3081\u3001**\u671F\u9593\u306E\u7D5E\u308A\u8FBC\u307F\u306B\u306F\n> \u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u3092\u512A\u5148**\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30B5\u30FC\u30D0\u30FC\u5074\u3067\u8A55\u4FA1\u3055\u308C\u307E\u3059\uFF09\u3002\u5217\u306E\u5024\u3068\u3057\u3066\u4ECA\u65E5\u3092\u51FA\u3059\u7528\u9014\n> \uFF08`SELECT CURRENT_DATE() AS \u4ECA\u65E5`\uFF09\u306F\u5F93\u6765\u3069\u304A\u308A\u3067\u3059\u3002\n\n### KLIKE / NOT KLIKE\uFF08kintone\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\uFF09\n\n`KLIKE` \u306FSQL `LIKE`\u3068\u306F\u5225\u306E\u6F14\u7B97\u5B50\u3067\u3059\u3002\u6761\u4EF6\u3092kintone\u306E `like` / `not like` \u3078\u5909\u63DB\u3057\u3001kintone\u5074\u3067\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u3057\u307E\u3059\u3002\n\n```sql\nSELECT \u4EF6\u540D, \u62C5\u5F53\u8005\nFROM APP100\nWHERE \u4EF6\u540D KLIKE '\u81F3\u6025'\n\nSELECT \u4EF6\u540D\nFROM APP100\nWHERE \u4EF6\u540D NOT KLIKE '\u4FDD\u7559'\n```\n\n- `LIKE` \u306FkSQL\u306E\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\uFF0F\u90E8\u5206\u4E00\u81F4\u3092JavaScript\u3067\u8A55\u4FA1\u3057\u307E\u3059\u3002`KLIKE` \u306Fkintone\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u3067\u3042\u308A\u3001\u534A\u89D2\u30FB\u5168\u89D2\u3001\u5927\u5C0F\u6587\u5B57\u3001\u5358\u8A9E\u5206\u5272\u306A\u3069\u306E\u4E00\u81F4\u898F\u5247\u306Fkintone\u306B\u6E96\u62E0\u3057\u307E\u3059\u3002**SQL\u306E\u90E8\u5206\u4E00\u81F4\u3068\u306F\u7570\u306A\u308B**\u70B9\u306B\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n - **\u4E00\u81F4\u6319\u52D5\u306F\u6587\u5B57\u7A2E\u30FB\u7528\u5B57\u7CFB\u306B\u3088\u3063\u3066\u7570\u306A\u308A\u307E\u3059**\uFF08\u8A73\u7D30\u306Fkintone\u306E\u691C\u7D22\u4ED5\u69D8\u306B\u6E96\u62E0\uFF09\u3002**\u4ECA\u56DE\u306E\u5B9F\u6A5F\u89B3\u6E2C**\u3067\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3057\u305F\u3002**\u82F1\u6570\u5B57\u4F8B\u306F\u7A7A\u767D\u533A\u5207\u308A\u306E\u8A9E\uFF08\u30C8\u30FC\u30AF\u30F3\uFF09\u5358\u4F4D**\u3067\u4E00\u81F4\u3057\u8A9E\u306E\u4E00\u90E8\u3067\u306F\u4E00\u81F4\u305B\u305A\u3001**\u65E5\u672C\u8A9E\u4F8B\u306F2\u6587\u5B57\u4EE5\u4E0A\u306E\u90E8\u5206\u4E00\u81F4\uFF08\u4E2D\u9593\u3092\u542B\u3080\uFF09**\u3067\u4E00\u81F4\u30571\u6587\u5B57\u3067\u306F\u4E00\u81F4\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002\n\n | \u691C\u7D22 | \u5BFE\u8C61\u306E\u5024 | \u4E00\u81F4\uFF08\u89B3\u6E2C\u4F8B\uFF09 |\n |---|---|---|\n | `KLIKE 'TOKYO'` | `TOKYO TO` | \u25CB\uFF08\u7A7A\u767D\u533A\u5207\u308A\u306E\u8A9E `TOKYO`\uFF09 |\n | `KLIKE 'TOK'` / `'OKYO'` | `TOKYO TO` | \xD7\uFF08\u8A9E\u306E\u4E00\u90E8\u3067\u306F\u4E00\u81F4\u3057\u306A\u3044\uFF09 |\n | `KLIKE 'A'` | `A1` | \xD7\uFF08`A1` \u30671\u8A9E\uFF09 |\n | `KLIKE 'X'` / `'Y'` / `'X-Y'` | `X-Y` | \u25CB\uFF08**\u30CF\u30A4\u30D5\u30F3\u306F\u8A9E\u3092\u5206\u5272\u3059\u308B**\uFF09 |\n | `KLIKE 'ALPHA'` / `'BETA'` | `ALPHA_BETA` | \xD7\uFF08**\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u306F\u8A9E\u3092\u5206\u5272\u3057\u306A\u3044**\u305F\u3081 `ALPHA_BETA` \u30671\u8A9E\uFF09 |\n | `KLIKE 'KSQL-FLOW-TEST-C'` | `KSQL-FLOW-TEST-C200` | \xD7\uFF08\u672B\u5C3E\u306E\u8A9E `C` \u304C `C200` \u3068\u4E00\u81F4\u3057\u306A\u3044\uFF09 |\n | `KLIKE '\u4E38\u306E'` / `'\u306E\u5185'` | `\u4E38\u306E\u5185` | \u25CB\uFF082\u6587\u5B57\u4EE5\u4E0A\u306E\u90E8\u5206\u4E00\u81F4\u30FB\u4E2D\u9593\u3092\u542B\u3080\uFF09 |\n | `KLIKE '\u5185'` | `\u4E38\u306E\u5185` | \xD7\uFF081\u6587\u5B57\u3067\u306F\u4E00\u81F4\u3057\u306A\u3044\uFF09 |\n\n > \u4E0A\u8A18\u306F\u89B3\u6E2C\u3055\u308C\u305F\u4F8B\u3067\u3042\u308A\u3001kintone\u306E\u4E00\u81F4\u898F\u5247\u3092\u7DB2\u7F85\u7684\u306B\u5B9A\u7FA9\u3059\u308B\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u534A\u89D2\u30FB\u5168\u89D2\u3001\u5927\u5C0F\u6587\u5B57\u3001\u8A18\u53F7\u306E\u6271\u3044\u7B49\u306Fkintone\u306E\u4ED5\u69D8\u306B\u5F93\u3044\u307E\u3059\u3002\uFF08\u5B9F\u6E2C\u30FBv3.72.0\uFF09\n - **\u66F8\u8FBC\u76F4\u5F8C\u306E `KLIKE` \u306F\u7D50\u679C\u304C\u5909\u308F\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002** kintone\u306E\u691C\u7D22\u7D22\u5F15\u306F\u66F8\u8FBC\u306B\u5BFE\u3057\u3066\u5373\u6642\u3067\u306F\u306A\u3044\u305F\u3081\u3001**\u540C\u3058\u30D0\u30C3\u30C1\u3067\u66F8\u3044\u305F\u884C\u3092\u76F4\u5F8C\u306B `KLIKE` \u3067\u62FE\u3046\u3068\u3001\u66F4\u65B0\u5F8C\u306E\u5024\u3067\u306F\u5F15\u3051\u305A\u3001\u66F4\u65B0\u524D\u306E\u5024\u3067\u5F15\u3051\u3066\u3057\u307E\u3046**\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u30A8\u30E9\u30FC\u306B\u306F\u306A\u3089\u305A\u4EF6\u6570\u304C\u5909\u308F\u308B\u3060\u3051\u306A\u306E\u3067\u6C17\u3065\u3051\u307E\u305B\u3093\u3002\n ```sql\n UPSERT INTO APP100 (\u30B3\u30FC\u30C9, \u533A\u5206) VALUES (...) ON DUPLICATE (\u30B3\u30FC\u30C9);\n SELECT * FROM APP100 WHERE \u533A\u5206 KLIKE '\u8981\u78BA\u8A8D'; -- \u76F4\u524D\u306B\u66F8\u3044\u305F\u884C\u304C\u5165\u3089\u306A\u3044\u3053\u3068\u304C\u3042\u308B\n ```\n **\u5BFE\u51E6\u306F\u3001\u66F8\u8FBC\u6587\u3092\u30D0\u30C3\u30C1\u306E\u6700\u5F8C\u306B\u7F6E\u304F\u3053\u3068\u3067\u3059\u3002** \u3069\u3046\u3057\u3066\u3082\u66F8\u3044\u305F\u884C\u3092\u540C\u3058\u30D0\u30C3\u30C1\u3067\u6570\u3048\u308B\uFF0F\u7D5E\u308A\u8FBC\u3080\u5FC5\u8981\u304C\u3042\u308B\u5834\u5408\u306F `LIKE`\uFF08JavaScript\u8A55\u4FA1\uFF09\u306B\u66FF\u3048\u3089\u308C\u307E\u3059\u304C\u3001`LIKE` \u306FFULL_SCAN\u306B\u306A\u308B\u305F\u3081**\u5927\u898F\u6A21\u30A2\u30D7\u30EA\u3067\u306F\u53D6\u5F97\u4E0A\u9650\uFF08`maxRecords`\uFF09\u306B\u9054\u3057\u3066\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059**\uFF08\u4E0B\u8A18\u300C\u6027\u80FD\u300D\u53C2\u7167\uFF09\u3002`ASSERT` \u306E\u4EF6\u6570\u30B2\u30FC\u30C8\u3092 `KLIKE` \u3067\u66F8\u304F\u3068\u3001\u30B2\u30FC\u30C8\u304C\u7D20\u901A\u308A\u3057\u305F\u308A\u3001\u53E4\u3044\u6761\u4EF6\u3067\u8AA4\u3063\u3066\u6210\u7ACB\u3057\u305F\u308A\u3057\u5F97\u307E\u3059\u3002\n \u306A\u304A**\u7D22\u5F15\u306B\u8F09\u308B\u5185\u5BB9\u304C\u5909\u308F\u3063\u305F\u3068\u304D\u3060\u3051**\u8D77\u3053\u308A\u307E\u3059\u3002`KLIKE` \u306E\u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u304D\u63DB\u3048\u306A\u3044\u66F4\u65B0\u3084 `DELETE` \u3067\u306F\u89B3\u6E2C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\uFF08\u5B9F\u6E2C\u30FBv3.72.0\uFF09\n - \u8FF7\u3063\u305F\u3089\u3001\u78BA\u5B9F\u306B\u90E8\u5206\u4E00\u81F4\u3055\u305B\u305F\u3044\u5834\u5408\u306F `LIKE`\uFF08JavaScript\u8A55\u4FA1\u30FBFULL_SCAN\uFF09\u3092\u3001kintone\u5074\u3067\u9AD8\u901F\u306B\u7D5E\u308A\u8FBC\u307F\u305F\u3044\u5834\u5408\u306F `KLIKE` \u3092\u4F7F\u3044\u5206\u3051\u3066\u304F\u3060\u3055\u3044\u3002\n- **\u6027\u80FD**: `LIKE` \u306FFULL_SCAN\u306B\u306A\u308A\u3001AND\u6761\u4EF6\u306B\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u5B89\u5168\u8FF0\u8A9E\uFF08`$id`\u30FB\u578B\u78BA\u8A8D\u6E08\u307FNUMBER\u3068\u8A31\u53EF\u7BC4\u56F2\u5185\u306E\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u306B\u3088\u308B\u6BD4\u8F03\u30FB`IN`\u30FB\u9078\u629E\u7CFB `IN` \u306A\u3069\uFF09\u304C\u306A\u3051\u308C\u3070\u5168\u4EF6\u53D6\u5F97\u306B\u306A\u308A\u307E\u3059\u3002\u5927\u898F\u6A21\u30A2\u30D7\u30EA\u3067\u306F\u53D6\u5F97\u4E0A\u9650\uFF08`maxRecords`\uFF09\u306B\u9054\u3057\u3066\u30A8\u30E9\u30FC\u306B\u306A\u308A\u304C\u3061\u3067\u3059\u3002`KLIKE` \u306FSIMPLE\u306E\u307E\u307Ekintone\u5074\u3067\u691C\u7D22\u3059\u308B\u305F\u3081\u3001\u5927\u898F\u6A21\u30A2\u30D7\u30EA\u3067\u3082\u9AD8\u901F\u3067\u3059\uFF08\u4F8B: \u6570\u5341\u4E07\u4EF6\u898F\u6A21\u306E\u30A2\u30D7\u30EA\u3067 `\u90FD\u9053\u5E9C\u770C LIKE '%\u6771\u4EAC%'` \u306F\u4E0A\u9650\u30A8\u30E9\u30FC\u3001`\u90FD\u9053\u5E9C\u770C KLIKE '\u6771\u4EAC\u90FD'` \u306F\u5373\u5FDC\uFF09\u3002\u305F\u3060\u3057\u4E0B\u8A18\u306E10\u4E07\u4EF6\u6253\u3061\u5207\u308A\u306B\u6CE8\u610F\u3002\n- SIMPLE SELECT\u3067\u306F\u5F93\u6765\u3069\u304A\u308AWHERE\u5168\u4F53\u3092kintone\u3078\u6E21\u3057\u307E\u3059\u3002FULL_SCAN SELECT\u3067\u3082\u3001KLIKE\u304CWHERE\u30EB\u30FC\u30C8\u304B\u3089AND\u3068\u62EC\u5F27\u3060\u3051\u3092\u7D4C\u7531\u3059\u308B\u5B89\u5168\u306A\u30EA\u30FC\u30D5\u306A\u3089\u3001kintone\u3078\u30D7\u30EC\u30D5\u30A3\u30EB\u30BF\u62BC\u3057\u4E0B\u3052\u3057\u3066\u6B8B\u308A\u306E\u6761\u4EF6\u3092JavaScript\u3067\u7CBE\u88FD\u3057\u307E\u3059\u3002\u3053\u308C\u306B\u3088\u308AKLIKE\u3068`LIKE`\u30FB\u95A2\u6570\u30FB\u96C6\u8A08\u30FB`DISTINCT`\u3092\u4F75\u7528\u3067\u304D\u307E\u3059\u3002\n ```sql\n -- \u4EF6\u540D\u306Fkintone\u3067\u7C97\u304F\u7D5E\u308A\u3001\u5099\u8003\u306FkSQL\u306E\u90E8\u5206\u4E00\u81F4\u3067\u7CBE\u88FD\n SELECT \u4EF6\u540D, \u5099\u8003 FROM APP100\n WHERE \u4EF6\u540D KLIKE '\u81F3\u6025' AND \u5099\u8003 LIKE '%\u7DCA\u6025%'\n ```\n- FULL_SCAN\u3067\u306E\u5236\u7D04: \u901A\u5E38\u306F OR \u307E\u305F\u306F`NOT (...)`\u914D\u4E0B\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u3001CTE\uFF0F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u306EKLIKE\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u4F8B\u5916\u3068\u3057\u3066\u3001alias \u4ED8\u304D\u7269\u7406 APP \u3060\u3051\u306E INNER JOIN \u3067 server-only \u95A2\u6570\u3092\u542B\u307F\u3001\u5358\u4E00 alias \u306E `WHERE` \u5168\u4F53\u3092 exact \u306B\u62BC\u3057\u4E0B\u3052\u308B\u7B2C5-W\u3067\u306F\u3001OR / NOT \u914D\u4E0B\u3092\u542B\u3080\u5168 KLIKE occurrence \u3092\u540C\u3058 server query \u306B\u9069\u7528\u3057\u3066 client residual \u3092\u7121\u304F\u305B\u308B\u305F\u3081\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002whole-WHERE exact \u3067\u306A\u3044 KLIKE-containing OR \u306F\u62D2\u5426\u3057\u307E\u3059\u3002\u305D\u308C\u4EE5\u5916\u306E JOIN \u3068\u306E\u4F75\u7528\u306F\u3001\u3059\u3079\u3066\u306E JOIN \u304C `INNER JOIN` \u3067\u3001KLIKE \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30C6\u30FC\u30D6\u30EB\u30A8\u30A4\u30EA\u30A2\u30B9\u3067\u660E\u793A\u3057\u305F\u5834\u5408\u3060\u3051\u8A31\u53EF\u3057\u307E\u3059\u3002`LEFT JOIN` / `RIGHT JOIN`\u3092\u542B\u3080SELECT\u3067\u306F\u3001\u5B89\u5168\u5074\u306BKLIKE\u3092\u62D2\u5426\u3057\u307E\u3059\u3002\u76F4\u63A5\u306E`NOT KLIKE`\u306FAND\u30EA\u30FC\u30D5\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n- \u53F3\u8FBA\u306F\u5358\u4E00\u5F15\u7528\u7B26\u306E\u6587\u5B57\u5217\u307E\u305F\u306F\u6587\u5B57\u5217\u30D0\u30C3\u30C1\u5909\u6570\u306B\u9650\u5B9A\u3055\u308C\u307E\u3059\u3002`%` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002`_` \u306F\u4F7F\u7528\u3067\u304D\u307E\u3059\u304C\u30011\u6587\u5B57\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u3067\u306F\u306A\u304Fkintone\u691C\u7D22\u4E0A\u306E\u5358\u8A9E\u69CB\u6210\u6587\u5B57\u3067\u3059\u3002\n- DML \u3067\u306F\u6B21\u306E\u89AA\u30EC\u30B3\u30FC\u30C9 DML \u306E WHERE \u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF08v3.10.0\uFF09: **\u901A\u5E38\uFF08APPLY \u306A\u3057\uFF09\u306E\u89AA `UPDATE` / `DELETE`**\u3001\u304A\u3088\u3073 **APPLY \u8907\u6570\u89AA `UPDATE` \u306E\u89AA WHERE**\u3002\u524D\u8005\u306F WHERE \u5168\u4F53\u3092 kintone \u30AF\u30A8\u30EA\u3078 exact \u5909\u63DB\u3057\u3066\u5BFE\u8C61\u3092\u89E3\u6C7A\u3059\u308B\u305F\u3081 `OR` / `NOT` \u914D\u4E0B\u306E KLIKE \u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u5F8C\u8005\u306F\u5B89\u5168\u30D7\u30EC\u30D5\u30A3\u30EB\u30BF\uFF0B\u6B8B\u4F59\u8A55\u4FA1\u306E\u305F\u3081\u3001`OR` / `NOT` \u914D\u4E0B\u306A\u3069 native query \u306B\u5B8C\u5168\u9069\u7528\u3067\u304D\u306A\u3044 KLIKE \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002**\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB `UPDATE` / `DELETE`\u30FB`REORDER`\u30FB`INSERT` / `INSERT ... SELECT`\u30FB`UPSERT` / `UPSERT ... SELECT`\u30FB\u72EC\u7ACB\u3057\u305F `VALIDATE` \u3067\u306F\u5F15\u304D\u7D9A\u304D\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093**\uFF08JS \u8A55\u4FA1\u7D4C\u8DEF\u306E\u305F\u3081\uFF09\u3002SQL `LIKE` / `NOT LIKE` \u306F\u901A\u5E38 DML \u3067\u306F\u5F15\u304D\u7D9A\u304D\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08JS \u8A55\u4FA1\u304C\u5FC5\u8981\uFF09\u3002\n- \u5229\u7528\u53EF\u80FD\u306A\u30D5\u30A3\u30FC\u30EB\u30C9\u306F[kintone\u516C\u5F0F\u306E\u6F14\u7B97\u5B50\u5BFE\u5FDC\u8868](https://cybozu.dev/ja/kintone/docs/overview/query/)\u306B\u5F93\u3044\u307E\u3059\u3002\u6587\u5B57\u52171\u884C\u30FB\u8907\u6570\u884C\u3001\u30EA\u30C3\u30C1\u30A8\u30C7\u30A3\u30BF\u30FC\u3001\u30EA\u30F3\u30AF\u3001\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u306A\u3069\u304C\u5BFE\u8C61\u3067\u3059\u3002\u975E\u5BFE\u5FDC\u30D5\u30A3\u30FC\u30EB\u30C9\u306Fkintone API\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n- kintone\u306F\u30AD\u30FC\u30EF\u30FC\u30C9\u4E00\u81F4\u304C10\u4E07\u4EF6\u306B\u9054\u3059\u308B\u3068\u691C\u7D22\u3092\u6253\u3061\u5207\u308A\u307E\u3059\u3002**CLI / MCP / \u30D7\u30E9\u30B0\u30A4\u30F3\u3059\u3079\u3066\u3067\u6253\u3061\u5207\u308A\u3092\u691C\u51FA\u3057\u307E\u3059**\uFF08\u30D7\u30E9\u30B0\u30A4\u30F3\u306F v3.10.0 \u3067 raw fetch \u306B\u3088\u308A\u30EC\u30B9\u30DD\u30F3\u30B9\u30D8\u30C3\u30C0\u30FC `X-Cybozu-Warning` \u3092\u8AAD\u307F\u53D6\u308A\u307E\u3059\uFF09\u3002\u691C\u7D22\u6253\u3061\u5207\u308A\u5F8C\u306E\u6319\u52D5\u306F\u3001\u5229\u7528\u9762\u3068\u30AF\u30A8\u30EA\u306E\u5F62\u3067\u7570\u306A\u308A\u307E\u3059\u3002\n\n | \u5229\u7528\u9762 | `LEFT` / `RIGHT JOIN` \u3092\u542B\u3080\u30AF\u30A8\u30EA | `INNER JOIN` / \u5358\u4E00\u8868 |\n |---|---|---|\n | \u30D7\u30E9\u30B0\u30A4\u30F3 / CLI / MCP | `SearchAbortedError`\uFF08B79 \u304B\u3089\uFF09 | \u8B66\u544A\uFF0B\u90E8\u5206\u7D50\u679C |\n | engine \u30E9\u30A4\u30D6\u30E9\u30EA | `SEARCH_ABORTED` hard error\uFF08\u5F93\u6765\u3069\u304A\u308A\uFF09 | `SEARCH_ABORTED` hard error\uFF08\u5F93\u6765\u3069\u304A\u308A\uFF09 |\n\n \u5916\u90E8\u7D50\u5408\u3067\u306F\u3001\u7D50\u5408\u76F8\u624B\u3092\u53D6\u5F97\u3067\u304D\u306A\u304B\u3063\u305F\u3060\u3051\u306E\u884C\u304C null \u62E1\u5F35\u3055\u308C\u3001**\u300C\u8A72\u5F53\u306A\u3057\u300D\u3068\u3044\u3046\u8AA4\u3063\u305F\u5024**\u306B\u306A\u308A\u5F97\u307E\u3059\u3002\u5358\u306A\u308B\u884C\u306E\u6B20\u843D\u3067\u306F\u306A\u304F\u3001\u8FD4\u3063\u305F\u884C\u306E\u5024\u81EA\u4F53\u304C\u8AA4\u308B\u305F\u3081\u3001\u30D7\u30E9\u30B0\u30A4\u30F3 / CLI / MCP \u3067\u3082 B79 \u304B\u3089 fail-closed \u306B\u5909\u66F4\u3057\u307E\u3057\u305F\u3002\u5F93\u6765\u6210\u529F\u3057\u3066\u898B\u3048\u305F\u8A72\u5F53\u30AF\u30A8\u30EA\u306F\u5B9F\u969B\u306B\u306F\u8AA4\u3063\u305F\u5024\u3092\u8FD4\u3057\u3066\u3044\u305F\u305F\u3081\u3001\u30A8\u30E9\u30FC\u5316\u306B\u3088\u3063\u3066\u6B63\u3057\u3044\u7D50\u679C\u304C\u5931\u308F\u308C\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002`WHERE` \u3067\u5BFE\u8C61\u3092\u7D5E\u308B\u304B\u3001\u610F\u5473\u3092\u4FDD\u3066\u308B\u5834\u5408\u306F `INNER JOIN` \u3078\u7F6E\u304D\u63DB\u3048\u3066\u304F\u3060\u3055\u3044\u3002\n\n engine \u30E9\u30A4\u30D6\u30E9\u30EA\u306F B79 \u306E\u5909\u66F4\u5BFE\u8C61\u3067\u306F\u306A\u304F\u3001\u5F93\u6765\u304B\u3089\u30AF\u30A8\u30EA\u5F62\u3092\u554F\u308F\u305A\u5E38\u306B hard error \u3067\u3059\u3002\u30D7\u30ED\u30B0\u30E9\u30E0 API \u3067\u306F\u90E8\u5206\u7D50\u679C\u304C\u9ED9\u3063\u3066\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30ED\u30B8\u30C3\u30AF\u3078\u6D41\u308C\u8FBC\u3080\u307B\u3046\u304C\u5371\u967A\u306A\u305F\u3081\u3001\u610F\u56F3\u7684\u306B\u53B3\u683C\u306A\u5951\u7D04\u3068\u3057\u3066\u3044\u307E\u3059\u3002\u8AAD\u307F\u53D6\u308A\u7D50\u679C\u3092\u66F8\u304D\u8FBC\u307F\u3084\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5B9F\u4F53\u5316\u306B\u4F7F\u3046\u5834\u5408\u3001\u304A\u3088\u3073 KLIKE \u3092\u542B\u3080\u89AA DML \u306E\u5BFE\u8C61\u89E3\u6C7A\u3067\u3082\u3001\u4E0D\u5B8C\u5168\u306A\u5BFE\u8C61\u96C6\u5408\u3067\u5B9F\u884C\u3057\u306A\u3044\u3088\u3046\u5F93\u6765\u3069\u304A\u308A `SearchAbortedError` \u3067\u30A8\u30E9\u30FC\u7D42\u4E86\u3057\u3001\u66F8\u304D\u8FBC\u307F0\u4EF6\u3067 fail-closed \u3068\u3057\u307E\u3059\u3002\n- engine \u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u9759\u7684\u691C\u8A3C\u3067 `KLIKE` / `NOT KLIKE` \u306E\u4F7F\u7528\u4F4D\u7F6E\u3084\u691C\u7D22\u8A9E\u304C\u4E0D\u6B63\u306A\u5834\u5408\u3001\u30A8\u30E9\u30FC `code` \u306F\u5F93\u6765\u3069\u304A\u308A `PARSE_ERROR` \u306E\u307E\u307E\u3001`message` \u306B\u5177\u4F53\u7684\u306A reason\uFF08\u4F8B: `KLIKE / NOT KLIKE \u306F SELECT \u306E WHERE \u53E5\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059`\uFF09\u3092\u8FD4\u3057\u307E\u3059\u3002B80 \u3088\u308A\u3001\u5F93\u6765\u306E\u4E00\u5F8B\u306A `SQL statement could not be parsed` \u3067\u306F\u306A\u304F\u3001\u30D7\u30E9\u30B0\u30A4\u30F3 / CLI / MCP \u3068\u540C\u3058 reason \u3067\u539F\u56E0\u3092\u7279\u5B9A\u3067\u304D\u307E\u3059\u3002`code` \u3067\u5206\u5C90\u3057\u3066\u3044\u308B\u5229\u7528\u8005\u30B3\u30FC\u30C9\u3078\u306E\u5F71\u97FF\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n- `KLIKE` \u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u53C2\u7167\u3059\u308B\u3068\u304D\u306F `` `KLIKE` `` \u3068\u8A18\u8FF0\u3057\u307E\u3059\u3002\n\n### IN / NOT IN\uFF08\u5024\u30EA\u30B9\u30C8\u306B\u3088\u308B\u4E00\u81F4\u30FB\u9664\u5916\uFF09\n\n`IN` \u306F\u5217\u6319\u3057\u305F\u5024\u306E**\u3044\u305A\u308C\u304B\u306B\u4E00\u81F4**\u3059\u308B\u884C\u3001`NOT IN` \u306F**\u3044\u305A\u308C\u306B\u3082\u4E00\u81F4\u3057\u306A\u3044**\u884C\u3092\u9078\u3073\u307E\u3059\u3002\n\n```sql\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u9032\u884C\u4E2D', '\u5B8C\u4E86', '\u30EC\u30D3\u30E5\u30FC\u4E2D')\nWHERE \u533A\u5206 IN (1, 2, 3)\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 NOT IN ('\u30AD\u30E3\u30F3\u30BB\u30EB', '\u5374\u4E0B')\n```\n\n**IN \u30EA\u30B9\u30C8\u306E\u5024\uFF08\u69CB\u6587\uFF09**\n\n- \u5358\u4E00\u5F15\u7528\u7B26\u306E\u6587\u5B57\u5217 `'...'`\u30FB\u6570\u5024\u30FB\u30D0\u30C3\u30C1\u5909\u6570 `@\u540D\u524D` \u3092\u6307\u5B9A\u3067\u304D\u3001**1 \u8981\u7D20\u4EE5\u4E0A\u304C\u5FC5\u9808**\u3067\u3059\u3002\u6587\u5B57\u5217\u306F\u30C0\u30D6\u30EB\u30AF\u30A9\u30FC\u30C8\u3067\u306A\u304F\u5358\u4E00\u5F15\u7528\u7B26\u3067\u3059\uFF08`IN (\"A\")` \u306F\u69CB\u6587\u30A8\u30E9\u30FC\uFF09\u3002\n- \u4F8B\u5916\u3068\u3057\u3066\u3001`CREATOR` / `MODIFIER` / `USER_SELECT` \u3067\u306F singleton \u306E\n `LOGINUSER()`\u3001`ORGANIZATION_SELECT` \u3067\u306F singleton \u306E `PRIMARY_ORGANIZATION()` \u3092\n `in` / `not in` \u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u6587\u5B57\u5217\u30FB\u6570\u5024\u3068\u306E\u6DF7\u5728 list\u3001\u8907\u6570\u500B\u306E\u95A2\u6570\u3001\n `TODAY()` / `NOW()` / \u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u306F IN list \u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\n- \u8CA0\u6570\u30EA\u30C6\u30E9\u30EB\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08`IN (-1, -2)`\uFF09\u3002\n- **`IN ()`\uFF080 \u8981\u7D20\uFF09\u306F\u66F8\u3051\u307E\u305B\u3093**\uFF08ParseError\uFF09\u3002\u300C\u7A7A\uFF0F\u672A\u9078\u629E\u300D\u3092\u63A2\u3059\u306E\u306F `IN ('')` \u3067\u3059\uFF08\u5F8C\u8FF0\uFF09\u3002\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u6E21\u3059 `IN (SELECT ...)` \u306F\u5225\u9805\u3067\u3059\uFF08\u5F8C\u8FF0\uFF09\u3002\n\n**\u4E00\u81F4\u306E\u610F\u5473\u8AD6\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3067\u7570\u306A\u308A\u307E\u3059**\n\n- **\u5358\u4E00\u5024\u30D5\u30A3\u30FC\u30EB\u30C9**\uFF08\u30C6\u30AD\u30B9\u30C8\u30FB\u6570\u5024\u30FB\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u30FB\u30E9\u30B8\u30AA\u30FB\u65E5\u4ED8\u30FB\u30B9\u30C6\u30FC\u30BF\u30B9\u7B49\uFF09\uFF1D**\u30B9\u30AB\u30E9\u30FC\u7B49\u5024**\uFF08`\u5217 = \u50241 OR \u5217 = \u50242 \u2026`\uFF09\u3002**\u6A19\u6E96SQL\u3068\u540C\u3058**\u3067\u3059\u3002\n- **\u8907\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9**\uFF08\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30FB\u8907\u6570\u9078\u629E\uFF09\uFF1D**\u9078\u629E\u96C6\u5408\u304C\u5217\u6319\u5024\u306E\u5C11\u306A\u304F\u3068\u3082 1 \u3064\u3092\u542B\u3080**\uFF08\u96C6\u5408\u306E overlap\uFF09\u3002\u6A19\u6E96SQL \u306E\u30B9\u30AB\u30E9\u30FC `IN` \u3068\u306F\u7570\u306A\u308A\u307E\u3059\uFF08\u5F8C\u8FF0\u306E\u300C\u6A19\u6E96SQL\u3068\u306E\u9055\u3044\u300D\uFF09\u3002\n- \u30E6\u30FC\u30B6\u30FC\u30FB\u7D44\u7E54\u30FB\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u30FB\u4F5C\u696D\u8005\u3082\u8907\u6570\u5024\u306A\u306E\u3067\u3001`code` \u306E\u96C6\u5408 overlap\uFF08\u3044\u305A\u308C\u304B\u3092\u542B\u3080\uFF09\u3067\u5224\u5B9A\u3057\u307E\u3059\u3002\u4F5C\u6210\u8005\u30FB\u66F4\u65B0\u8005\u306F\u5358\u4E00\u5024\u3067 `code` \u306E\u30B9\u30AB\u30E9\u30FC\u7B49\u5024\u3067\u3059\uFF08\u3044\u305A\u308C\u3082\u8868\u793A\u540D\u3067\u306F\u306A\u304F `code` \u3067\u6BD4\u8F03\uFF09\u3002\n- \u578B\u60C5\u5831\u3092\u53D6\u5F97\u3067\u304D\u306A\u3044\u5024\u3001\u578B\u3068\u5024\u306E\u5F62\u304C\u4E00\u81F4\u3057\u306A\u3044\u5834\u5408\u306F\u6587\u5B57\u5217\u6BD4\u8F03\u3092\u7DAD\u6301\u3057\u307E\u3059\u3002\n- \u9078\u629E\u7CFB\u306E\u7A7A\uFF0F\u672A\u8A2D\u5B9A\u30BB\u30EB\u306F `IN ('')` \u306B\u4E00\u81F4\u3057\u3001`NOT IN ('')` \u3067\u9664\u5916\u3055\u308C\u307E\u3059\uFF08\u7A7A\u30B9\u30AB\u30E9\u30FC\u5024\u306E\u6295\u5F71\u3082\u7A7A\u6587\u5B57\u3067\u8FD4\u3057\u307E\u3059\uFF09\u3002\n\n\u3053\u306E\u898F\u5247\u306F\u30EA\u30C6\u30E9\u30EB\uFF0F\u30D0\u30C3\u30C1\u5909\u6570\u306E IN \u30EA\u30B9\u30C8\u30FB`IN (SELECT ...)`\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E JavaScript \u8A55\u4FA1\u3059\u3079\u3066\u306B\u9069\u7528\u3055\u308C\u307E\u3059\u3002**\u5B9F\u5728\u3059\u308B\u5024\u306B\u5BFE\u3059\u308B\u4E00\u81F4\u7D50\u679C\u306F\u3001REST \u62BC\u3057\u4E0B\u3052\u3067\u3082 JS \u8A55\u4FA1\u3067\u3082\u540C\u3058**\u3067\u3059\uFF08\u5B9A\u7FA9\u5916\u306E\u9078\u629E\u80A2\u5024\u3060\u3051\u306F\u3001\u62BC\u3057\u4E0B\u3052\u7D4C\u8DEF\u3067\u5B9F\u884C\u30A8\u30E9\u30FC\u306B\u306A\u308A\u5F97\u307E\u3059\u30FB\u4E0B\u8A18\uFF09\u3002\n\n```sql\n-- \u7A7A\uFF0F\u672A\u8A2D\u5B9A\u306E\u9078\u629E\u30BB\u30EB\u3092\u62BD\u51FA\uFF08\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u306F = '' \u304C\u4F7F\u3048\u306A\u3044\u305F\u3081 IN ('') \u3092\u4F7F\u3046\uFF09\nWHERE \u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3 IN ('') -- \u672A\u9078\u629E\u306E\u30EC\u30B3\u30FC\u30C9\nWHERE \u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3 NOT IN ('') -- \u9078\u629E\u6E08\u307F\u306E\u30EC\u30B3\u30FC\u30C9\nWHERE \u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3 IN ('', '\u5BFE\u5FDC\u4E2D') -- \u672A\u9078\u629E \u307E\u305F\u306F\u300C\u5BFE\u5FDC\u4E2D\u300D\n```\n\n> **\u6A19\u6E96SQL\u3068\u306E\u9055\u3044\uFF08\u8907\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u306E `IN`\uFF09** \n> \u6A19\u6E96SQL\u306E `x IN ('A','B')` \u306F `x = 'A' OR x = 'B'` \u3068\u3044\u3046\u30B9\u30AB\u30E9\u30FC\u7B49\u5024\u3067\u3001**`x` \u3092 1 \u3064\u306E\u5024**\u3068\u3057\u3066 `'A'`\u30FB`'B'` \u3068\u7A81\u304D\u5408\u308F\u305B\u307E\u3059\uFF08\u8981\u7D20\u3054\u3068\u306B\u306F\u7167\u5408\u3057\u307E\u305B\u3093\uFF09\u3002\u6A19\u6E96SQL\u306F 1 \u30D5\u30A3\u30FC\u30EB\u30C9\uFF1D\u30B9\u30AB\u30E9\u30FC\u304C\u524D\u63D0\u3067\u591A\u5024\u5217\u3092\u6301\u305F\u305A\u3001\u591A\u5024\u306F\u5225\u884C\u306B\u6B63\u898F\u5316\u3057\u3066 `EXISTS` \u306A\u3069\u3067\u8868\u3059\u305F\u3081\u3067\u3059\u3002 \n> \u4E00\u65B9 kintone \u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30FB\u8907\u6570\u9078\u629E\u306F 1 \u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u8907\u6570\u5024\u306A\u306E\u3067\u3001kSQL \u306F kintone \u30CD\u30A4\u30C6\u30A3\u30D6\u306E `in` \u306B\u5408\u308F\u305B\u3001**\u96C6\u5408\u3092\u8981\u7D20\u306B\u958B\u3044\u3066\u300C\u5217\u6319\u5024\u306E\u5C11\u306A\u304F\u3068\u3082 1 \u3064\u3092\u542B\u3080\u304B\u300D**\uFF08\u96C6\u5408\u306E overlap\uFF09\u3067\u5224\u5B9A\u3057\u307E\u3059\u3002\u3053\u308C\u306B\u3088\u308A `['A']` \u3082 `['A','B']` \u3082 `IN ('A','B')` \u306B**\u4E00\u81F4\u3057\u307E\u3059**\u3002\u6A19\u6E96SQL\u3067\u540C\u7FA9\u3092\u66F8\u304F\u306A\u3089\u4E2D\u9593\u30C6\u30FC\u30D6\u30EB\u306E `EXISTS`\uFF08\u30BB\u30DF\u7D50\u5408\uFF09\u3084\u914D\u5217 overlap\uFF08`checkbox && ARRAY[...]`\uFF09\u306B\u76F8\u5F53\u3057\u307E\u3059\u3002\u5B9F\u5728\u3059\u308B\u5024\u306B\u5BFE\u3059\u308B\u4E00\u81F4\u7D50\u679C\u306F REST \u62BC\u3057\u4E0B\u3052\u3067\u3082 JS \u8A55\u4FA1\u3067\u3082\u540C\u3058\u3067\u3059\uFF08\u5358\u4E00\u9078\u629E\u30FB\u30C6\u30AD\u30B9\u30C8\u30FB\u6570\u5024\u306F\u5F93\u6765\u3069\u304A\u308A\u30B9\u30AB\u30E9\u30FC\u7B49\u5024\u3067\u3001\u6A19\u6E96SQL\u3068\u540C\u3058\uFF09\u3002\n\n`\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9`\uFF08\u9078\u629E\u80A2 A/B/C\uFF09\u306B\u5BFE\u3059\u308B\u5224\u5B9A\u4F8B:\n\n| \u30D5\u30A3\u30FC\u30EB\u30C9\u5024 | `IN ('A','B')` | `IN ('')` | `NOT IN ('')` |\n|---|:---:|:---:|:---:|\n| `[]`\uFF08\u672A\u9078\u629E\uFF09 | \u2717 | \u2713 | \u2717 |\n| `['A']` | \u2713 | \u2717 | \u2713 |\n| `['C']` | \u2717 | \u2717 | \u2713 |\n| `['A','C']` | \u2713 | \u2717 | \u2713 |\n| `['A','B','C']` | \u2713 | \u2717 | \u2713 |\n\n- **`IN ('\u5217\u6319\u5024', ...)`**\uFF1A\u5217\u6319\u5024\u306E\u3044\u305A\u308C\u304B\u3092**\u542B\u3080**\u884C\u306B\u4E00\u81F4\u3057\u307E\u3059\u3002`['A','C']` \u306F\u30EA\u30B9\u30C8\u5916\u306E `C` \u3092\u542B\u3093\u3067\u3044\u3066\u3082 `A` \u304C\u3042\u308C\u3070\u4E00\u81F4\u3067\u3001\u90E8\u5206\u96C6\u5408\u3084\u5B8C\u5168\u4E00\u81F4\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n- **`IN ('')`\uFF08\u7A7A\u6587\u5B57 1 \u8981\u7D20\uFF09\uFF1D\u672A\u9078\u629E\uFF08\u7A7A\uFF09\u306E\u884C\u3060\u3051\u306B\u4E00\u81F4**\u3057\u307E\u3059\u3002`= ''` \u304C\u4F7F\u3048\u306A\u3044\u9078\u629E\u7CFB\uFF08\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u7B49\uFF09\u306E\u300C\u7A7A\u300D\u5224\u5B9A\u306B\u3082\u4F7F\u3044\u307E\u3059\u3002\u7A7A\u6587\u5B57\u3092\u542B\u3081\u308B `IN ('', 'A')` \u306F\u300C\u672A\u9078\u629E \u307E\u305F\u306F A \u3092\u542B\u3080\u300D\u3067\u3059\u3002\n- **`NOT IN ('')`\uFF1D\u9078\u629E\u304C 1 \u3064\u4EE5\u4E0A\u3042\u308B\u884C**\uFF08`[]` \u4EE5\u5916\uFF09\u306B\u4E00\u81F4\uFF1D`IN ('')` \u306E\u88DC\u96C6\u5408\u3067\u3059\u3002\n- **`NOT IN ('A','B')`\uFF1DA \u3082 B \u3082\u542B\u307E\u306A\u3044\u884C**\u306B\u4E00\u81F4\u3057\u307E\u3059\uFF08\u4E0A\u8868\u306A\u3089 `[]` \u3068 `['C']`\uFF09\u3002\n\nFULL_SCAN \u306E `WHERE` \u3067\u306F\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3068\u9078\u629E\u80A2\u306E\u5B9F\u5728\u3092\u78BA\u8A8D\u3067\u304D\u305F\n`DROP_DOWN`\uFF0F`RADIO_BUTTON`\uFF0F`CHECK_BOX`\uFF0F`MULTI_SELECT` \u306E `IN`\uFF0F`NOT IN`\n\uFF08\u7A7A\u3067\u306A\u3044\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u306E\u307F\uFF09\u3092 kintone \u306E\u4E8B\u524D\u7D5E\u308A\u8FBC\u307F\u306B\u3082\u4F7F\u7528\u3057\u307E\u3059\u3002\u7D50\u679C\u306F\u53D6\u5F97\u5F8C\u306B\u540C\u3058\u578B\u4ED8\u304D\u898F\u5247\u3067\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\n\u5B58\u5728\u3057\u306A\u3044\u9078\u629E\u80A2\u3001\u7A7A\u6587\u5B57\u3001\u578B\u60C5\u5831\u30FB\u9078\u629E\u80A2\u60C5\u5831\u3092\u53D6\u5F97\u3067\u304D\u306A\u3044\u5834\u5408\u306F\u62BC\u3057\u4E0B\u3052\u305A\u3001JavaScript \u8A55\u4FA1\u3060\u3051\u3092\u884C\u3044\u307E\u3059\u3002\n\u30E6\u30FC\u30B6\u30FC\u30FB\u7D44\u7E54\u30FB\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u306F\u3053\u306E\u6700\u9069\u5316\u306E\u5BFE\u8C61\u5916\u3067\u3059\u3002\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406\u304C\u6709\u52B9\u3067\u3001\u5B9F\u884C\u30E6\u30FC\u30B6\u30FC\u306E\u8868\u793A\u8A00\u8A9E\u306B\u304A\u3051\u308B\u72B6\u614B\u540D\u306E\u5B9F\u5728\u3092\u78BA\u8A8D\u3067\u304D\u305F\u30B9\u30C6\u30FC\u30BF\u30B9\u306E `IN`\uFF0F`NOT IN` \u3082\u4E8B\u524D\u7D5E\u308A\u8FBC\u307F\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406\u304C\u7121\u52B9\u3001\u72B6\u614B\u540D\u304C\u975E\u5B9F\u5728\u3001\u307E\u305F\u306F\u7A7A\u6587\u5B57\u306E\u5834\u5408\u306F\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\u3002\n\n> **\u9078\u629E\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u306E `=` \u3068\u53D6\u5F97\u4EF6\u6570:** \u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\uFF0F\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\uFF0F\n> \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\uFF0F\u8907\u6570\u9078\u629E\u306B\u5BFE\u3059\u308B `=` \u306F\u3001kintone \u306E\u30AF\u30A8\u30EA\u6587\u6CD5\u304C\n> `in` / `not in` \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u308B\u305F\u3081\u3001records API \u3078\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\u3002\n> \u7D50\u679C\u306F\u53D6\u5F97\u5F8C\u306E\u8A55\u4FA1\u3067\u6B63\u3057\u304F\u306A\u308A\u307E\u3059\u304C\u3001\u53D6\u5F97\u5019\u88DC\u304C\u5927\u304D\u304F\u5897\u3048\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\n> \u540C\u3058\u6761\u4EF6\u3092\u8868\u305B\u308B\u3068\u304D\u306F `IN (...)` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n> **\u9078\u629E\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u300C\u5B9A\u7FA9\u306B\u7121\u3044\u9078\u629E\u80A2\u5024\u300D\u3092\u6E21\u3057\u305F\u3068\u304D\u306E\u6CE8\u610F\uFF08\u91CD\u8981\uFF09** \n> `DROP_DOWN`\uFF0F`RADIO_BUTTON`\uFF0F`CHECK_BOX`\uFF0F`MULTI_SELECT`\uFF0F\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u3001\u305D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u9078\u629E\u80A2\u3068\u3057\u3066**\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u306A\u3044\u5024**\u3092 `IN`\uFF0F`NOT IN` \u3078\u6E21\u3059\u3068\u3001\u305D\u306E `IN` \u304C **kintone REST \u3078\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u304B\u5426\u304B**\u3067\u6319\u52D5\u304C\u5206\u304B\u308C\u307E\u3059\uFF08\u5B9F\u884C\u30E2\u30FC\u30C9\u304C SIMPLE \u304B FULL_SCAN \u304B\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n> - **`WHERE` \u5168\u4F53\u304C REST \u306B\u5B8C\u5168\u62BC\u3057\u4E0B\u3052\u3055\u308C\u308B\u5834\u5408**\uFF08\u7D14\u7C8B\u306A SIMPLE \u306E\u307B\u304B\u3001`DISTINCT`\uFF0F`GROUP BY`\uFF0F`ORDER BY` \u306A\u3069\u3067\u5B9F\u884C\u30E2\u30FC\u30C9\u304C FULL_SCAN \u306B\u306A\u3063\u3066\u3082\u3001`WHERE` \u81EA\u4F53\u306F\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u3068\u304D\uFF09: \u5B9A\u7FA9\u5916\u5024\u304C kintone \u306B\u6E21\u308A\u3001`GAIA_IQ10`\uFF08\u9805\u76EE\u306B\u300C\u5024\u300D\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\uFF09\u3067**\u5B9F\u884C\u30A8\u30E9\u30FC**\u306B\u306A\u308A\u307E\u3059\u3002\n> - **`WHERE` \u306B JavaScript \u8A55\u4FA1\u304C\u5FC5\u9808\u306A\u90E8\u5206\u304C\u3042\u308B\u5834\u5408**\uFF08\u95A2\u6570\u30FB\u7B97\u8853\u5F0F\u30FB`LIKE`\u30FB`IN (SELECT ...)` \u306A\u3069\u306E\u6B8B\u4F59\u304C\u3042\u308A\u3001\u5B89\u5168\u30EA\u30FC\u30D5\u3060\u3051\u3092\u4E8B\u524D\u7D5E\u308A\u8FBC\u307F\u3059\u308B\u7D4C\u8DEF\uFF09\u3084\u3001**`CASE WHEN` \u306A\u3069\u306E\u6761\u4EF6**\uFF08\u2192 \xA74\uFF09: \u5B9A\u7FA9\u5916\u5024\u30FB\u7A7A\u6587\u5B57\u3092\u542B\u3080\u9078\u629E\u7CFB `IN` \u306F\u62BC\u3057\u4E0B\u3052\u305A JS \u3067\u8A55\u4FA1\u3059\u308B\u305F\u3081\u3001**\u30A8\u30E9\u30FC\u306B\u306A\u3089\u305A\u5358\u306B\u4E00\u81F4 0 \u4EF6**\uFF08`NOT IN` \u306F\u5168\u4E00\u81F4\uFF09\u306B\u306A\u308A\u307E\u3059\u3002\n>\n> \u30C6\u30AD\u30B9\u30C8\u30FB\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u5B9A\u7FA9\u9078\u629E\u80A2\u306E\u6982\u5FF5\u304C\u7121\u3044\u305F\u3081\u3001\u672A\u4E00\u81F4\u3067\u3082\u5E38\u306B 0 \u4EF6\uFF08\u30A8\u30E9\u30FC\u306A\u3057\uFF09\u3067\u3059\u3002**\u30D0\u30C3\u30C1\u5909\u6570**\u306F\u7F6E\u63DB\u5F8C\u306B\u901A\u5E38\u306E `IN` \u30EA\u30B9\u30C8\u306B\u306A\u308B\u305F\u3081\u3001\u4E0A\u306E\u300C\u5B8C\u5168\u62BC\u3057\u4E0B\u3052\u300D\u7D4C\u8DEF\u3067\u306F\u5B9A\u7FA9\u5916\u5024\u304C\u6DF7\u3058\u308B\u3068 `GAIA_IQ10` \u306B\u306A\u308A\u5F97\u307E\u3059\uFF08\u4E8B\u524D\u306B\u6709\u52B9\u5024\u3078\u7D5E\u3063\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\u4E00\u65B9 **`IN (SELECT ...)` \u306F\u5E38\u306B JavaScript \u8A55\u4FA1**\uFF08REST \u3078\u6E21\u3055\u306A\u3044\uFF09\u306A\u306E\u3067\u3001\u3053\u306E\u7D4C\u8DEF\u3067\u306F `GAIA_IQ10` \u306B\u306F\u306A\u308A\u307E\u305B\u3093\u3002\n\n### IN (SELECT ...) / NOT IN (SELECT ...)\uFF08\u30B5\u30D6\u30AF\u30A8\u30EA\uFF09\n\n\u5225\u30A2\u30D7\u30EA\u306E\u691C\u7D22\u7D50\u679C\u3092 IN \u30EA\u30B9\u30C8\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- APP88 \u304B\u3089\u300C\u30E9\u30F3\u30AF A\u300D\u306E\u9867\u5BA2\u540D\u4E00\u89A7\u3092\u53D6\u5F97\u3057\u3066\u30D5\u30A3\u30EB\u30BF\nSELECT * FROM APP88\nWHERE \u9867\u5BA2\u540D IN (SELECT \u9867\u5BA2\u540D FROM APP89 WHERE \u9867\u5BA2\u30E9\u30F3\u30AF = 'A')\n\n-- \u9664\u5916\nSELECT * FROM APP88\nWHERE \u9867\u5BA2\u540D NOT IN (SELECT \u9867\u5BA2\u540D FROM APP89 WHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u505C\u6B62')\n```\n\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u306F SELECT 1\u5217\u76EE\uFF08\u307E\u305F\u306F `SELECT \u30D5\u30A3\u30FC\u30EB\u30C9\u540D`\uFF09\u306E\u5024\u30BB\u30C3\u30C8\u3092\u8FD4\u3057\u307E\u3059\n- \u81EA\u52D5\u7684\u306B FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u81EA\u4F53\u3082 SIMPLE / FULL_SCAN \u3092\u81EA\u52D5\u5224\u5B9A\u3057\u307E\u3059\n\n### EXISTS / NOT EXISTS\uFF08\u30B5\u30D6\u30AF\u30A8\u30EA\uFF09\n\n\u30B5\u30D6\u30AF\u30A8\u30EA\u304C 1 \u4EF6\u4EE5\u4E0A\u8FD4\u3059\u304B\u3069\u3046\u304B\u3067\u6761\u4EF6\u3092\u5224\u5B9A\u3057\u307E\u3059\uFF08\u975E\u76F8\u95A2\u306E\u307F\uFF09\u3002\n\n```sql\n-- \u30B5\u30D6\u30AF\u30A8\u30EA\u304C 1\u4EF6\u4EE5\u4E0A\u3042\u308C\u3070\u5168\u884C\u3092\u8FD4\u3059\nSELECT * FROM APP88\nWHERE EXISTS (SELECT $id FROM APP89 WHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u627F\u8A8D\u6E08\u307F')\n\n-- \u30B5\u30D6\u30AF\u30A8\u30EA\u304C 0\u4EF6\u306A\u3089\u5168\u884C\u3092\u8FD4\u3059\nSELECT * FROM APP88\nWHERE NOT EXISTS (SELECT $id FROM APP89 WHERE \u30D5\u30E9\u30B0 = 'NG')\n\n-- AND / OR \u3068\u7D44\u307F\u5408\u308F\u305B\nSELECT \u9867\u5BA2\u540D, \u91D1\u984D FROM APP88\nWHERE \u91D1\u984D > 10000\n AND EXISTS (SELECT $id FROM APP89 WHERE \u627F\u8A8D\u30D5\u30E9\u30B0 = '1')\n```\n\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u306F 1 \u56DE\u3060\u3051\u5B9F\u884C\u3055\u308C\u3001\u5168\u884C\u306B\u540C\u3058\u7D50\u679C\uFF08\u771F/\u507D\uFF09\u304C\u9069\u7528\u3055\u308C\u307E\u3059\n- **\u76F8\u95A2\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u975E\u5BFE\u5FDC**\uFF08\u5916\u5074\u30C6\u30FC\u30D6\u30EB\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u53C2\u7167\u4E0D\u53EF\uFF09\n- \u81EA\u52D5\u7684\u306B FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\n\n### \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\uFF08WHERE \u53F3\u8FBA\uFF09\n\n\u6BD4\u8F03\u6F14\u7B97\u5B50\u306E\u53F3\u8FBA\u306B 1 \u884C 1 \u5217\u3092\u8FD4\u3059\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- \u5168\u4F53\u306E\u5E73\u5747\u3068\u6BD4\u8F03\nSELECT * FROM APP100\nWHERE \u91D1\u984D > (SELECT AVG(\u91D1\u984D) FROM APP100)\n\n-- \u5225\u30A2\u30D7\u30EA\u306E\u6700\u5927\u5024\u3068\u6BD4\u8F03\nSELECT * FROM APP100\nWHERE \u91D1\u984D >= (SELECT MAX(\u4E0A\u9650\u91D1\u984D) FROM APP200 WHERE \u533A\u5206 = '\u6A19\u6E96')\n```\n\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u306F 1 \u884C 1 \u5217\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF080 \u884C\u307E\u305F\u306F 2 \u884C\u4EE5\u4E0A\u306F\u30A8\u30E9\u30FC\uFF09\n- GROUP BY \u306A\u3057\u306E\u96C6\u8A08\u30B5\u30D6\u30AF\u30A8\u30EA\uFF08`AVG(...)` \u7B49\uFF09\u306F\u5BFE\u8C61 0 \u4EF6\u3067\u3082 1 \u884C\u3092\u8FD4\u3059\u305F\u3081\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u305B\u3093\u3002**\u623B\u308A\u5024\u306F\u95A2\u6570\u3054\u3068\u306B\u9055\u3044\u307E\u3059**\uFF08\u2192 [\xA78\u300C0 \u4EF6\u6642\u306E\u6319\u52D5\u300D](#0-\u4EF6\u6642\u306E\u6319\u52D5)\uFF09\n- **\u76F8\u95A2\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u975E\u5BFE\u5FDC**\uFF08\u5916\u5074\u30C6\u30FC\u30D6\u30EB\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u53C2\u7167\u4E0D\u53EF\uFF09\n- \u81EA\u52D5\u7684\u306B FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\n\n### BETWEEN\uFF08\u7BC4\u56F2\u6307\u5B9A\uFF09\n\n`BETWEEN a AND b` \u306F `>= a AND <= b` \u3068\u540C\u7B49\u3067\u3059\u3002\n\n```sql\nWHERE \u91D1\u984D BETWEEN 10000 AND 50000\nWHERE \u4F5C\u6210\u65E5\u6642 BETWEEN '2024-01-01' AND '2024-12-31'\n```\n\n### LIKE / NOT LIKE\uFF08\u90E8\u5206\u4E00\u81F4\u30FB\u9664\u5916\uFF09\n\n| \u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9 | \u610F\u5473 |\n|----------------|------|\n| `%` | 0\u6587\u5B57\u4EE5\u4E0A\u306E\u4EFB\u610F\u306E\u6587\u5B57\u5217 |\n| `_` | \u4EFB\u610F\u306E1\u6587\u5B57 |\n\n```sql\nWHERE \u6C0F\u540D LIKE '\u7530%' -- \u300C\u7530\u300D\u3067\u59CB\u307E\u308B\nWHERE \u30E1\u30E2 LIKE '%\u91CD\u8981%' -- \u300C\u91CD\u8981\u300D\u3092\u542B\u3080\nWHERE \u30B3\u30FC\u30C9 LIKE 'A__' -- \u300CA\u300D+\u4EFB\u610F2\u6587\u5B57\nWHERE \u6C0F\u540D NOT LIKE '\u7530%' -- \u300C\u7530\u300D\u3067\u59CB\u307E\u3089\u306A\u3044\nWHERE \u9867\u5BA2\u540D LIKE '\u4F1A\u793E' -- \u300C\u4F1A\u793E\u300D\u3092\u542B\u3080\uFF08\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u306A\u3057\uFF1D\u90E8\u5206\u4E00\u81F4\uFF09\n```\n\n> **\u8A55\u4FA1\u7D4C\u8DEF\uFF08Breaking\uFF09**<br>\n> `LIKE` / `NOT LIKE`\u306F\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u306E\u6709\u7121\u306B\u304B\u304B\u308F\u3089\u305Akintone\u3078\u6E21\u3055\u305A\u3001\u5168\u4EF6\u53D6\u5F97\u5F8C\u306BJavaScript\u3067\u8A55\u4FA1\u3057\u307E\u3059\u3002`%` / `_`\u4ED8\u304D\u306F\u4E0A\u8868\u306ESQL\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u3001\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u306A\u3057\u306E`LIKE '\u4F1A\u793E'`\u306FkSQL\u72EC\u81EA\u4ED5\u69D8\u306E\u90E8\u5206\u4E00\u81F4\uFF08`includes`\uFF09\u3067\u3059\u3002kintone\u306E\u5358\u8A9E\uFF08\u30C8\u30FC\u30AF\u30F3\uFF09\u691C\u7D22\u306B\u306F\u59D4\u8B72\u3057\u307E\u305B\u3093\u3002<br>\n> LIKE\u3092\u542B\u3080SELECT\u306FFULL_SCAN\u306B\u306A\u308A\u307E\u3059\u3002AND\u3067\u4F75\u8A18\u3057\u305F\u5B89\u5168\u306A`$id`\u6761\u4EF6\u3001\u578B\u78BA\u8A8D\u6E08\u307FNUMBER\u6761\u4EF6\u3001\u5B9F\u5728\u78BA\u8A8D\u6E08\u307F\u9078\u629E\u7CFB`IN`\uFF0F`NOT IN`\u306F\u4E8B\u524D\u7D5E\u308A\u8FBC\u307F\u306B\u4F7F\u308F\u308C\u307E\u3059\u304C\u3001\u305D\u308C\u4EE5\u5916\u306F\u5168\u4EF6\u53D6\u5F97\u306B\u306A\u308A\u307E\u3059\u3002\u5927\u91CF\u30EC\u30B3\u30FC\u30C9\u3067\u306F\u8D70\u67FB\u4EF6\u6570\u304C`maxRecords`\u3078\u5230\u9054\u3057\u3001\u65E2\u5B9A\u3067\u306F\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002`onLimitReached = \"truncate\"`\u3092\u9078\u3076\u3068\u4E0A\u9650\u4EE5\u964D\u306E\u4E00\u81F4\u884C\u3092\u6B20\u843D\u3055\u305B\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002<br>\n> \u901A\u5E38\u306E\u89AA\u30EC\u30B3\u30FC\u30C9\u306B\u5BFE\u3059\u308B`UPDATE` / `DELETE`\u3067\u306F\u3001\u3059\u3079\u3066\u306E`LIKE` / `NOT LIKE`\u3092\u62D2\u5426\u3057\u307E\u3059\u3002\u5148\u306B\u4E0A\u9650\u30A8\u30E9\u30FC\u306E\u306A\u3044SELECT\u3067\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u3092\u78BA\u8A8D\u3057\u3001`IN`\u307E\u305F\u306F\u5B8C\u5168\u4E00\u81F4\u6761\u4EF6\u3067\u5BFE\u8C61\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EBDML\u306FJavaScript\u8A55\u4FA1\u7D4C\u8DEF\u306E\u305F\u3081\u5F93\u6765\u3069\u304A\u308A\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n### IS NULL / IS NOT NULL\n\nkintone \u3067\u306F\u7A7A\u6587\u5B57\uFF08`\"\"`\uFF09\u3092 NULL \u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002\n\n```sql\nWHERE \u5099\u8003 IS NULL -- \u5099\u8003\u304C\u7A7A\u306E\u30EC\u30B3\u30FC\u30C9\nWHERE \u62C5\u5F53\u8005 IS NOT NULL -- \u62C5\u5F53\u8005\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30EC\u30B3\u30FC\u30C9\n```\n\n### \u8AD6\u7406\u6F14\u7B97\u5B50\n\n\u512A\u5148\u9806\u4F4D: `NOT` > `AND` > `OR`\n\n```sql\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86' AND \u91D1\u984D > 50000\nWHERE \u90E8\u7F72 = '\u55B6\u696D\u90E8' OR \u90E8\u7F72 = '\u958B\u767A\u90E8'\nWHERE NOT \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u30AD\u30E3\u30F3\u30BB\u30EB'\n```\n\n\u30AB\u30C3\u30B3\u3067\u512A\u5148\u9806\u4F4D\u3092\u660E\u793A\u3067\u304D\u307E\u3059\u3002\n\n```sql\nWHERE (\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86' OR \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u627F\u8A8D\u6E08') AND \u91D1\u984D > 10000\n```\n\n### WHERE \u3067\u306E\u95A2\u6570\u4F7F\u7528\n\nWHERE \u53E5\u306E\u5DE6\u8FBA\u306B\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002 \n\u3053\u306E\u5834\u5408\u3001\u81EA\u52D5\u7684\u306B FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002\n\n```sql\nWHERE UPPER(\u30B9\u30C6\u30FC\u30BF\u30B9) = 'ACTIVE'\nWHERE LOWER(\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9) LIKE '%@example.com'\nWHERE LENGTH(\u30B3\u30FC\u30C9) > 5\nWHERE TRIM(\u6C0F\u540D) != ''\nWHERE SUBSTRING(\u90F5\u4FBF\u756A\u53F7, 1, 3) = '100'\n```\n\n### kintone \u5C02\u7528\u95A2\u6570\n\nkintone \u306E [\u30AF\u30A8\u30EA\u95A2\u6570](https://cybozu.dev/ja/kintone/docs/overview/query/#function) \u306B\u5BFE\u5FDC\u3059\u308B\u95A2\u6570\u3067\u3059\u3002\u5024\u30FB\u6BD4\u8F03\u306F kintone \u30B5\u30FC\u30D0\u30FC\u304C\u6C7A\u5B9A\u3057\u307E\u3059\uFF08server-only\uFF09\u3002\n\n**\u57FA\u672C\u306E3\u95A2\u6570**:\n\n| \u95A2\u6570 | \u610F\u5473 |\n|------|------|\n| `TODAY()` | \u4ECA\u65E5\u306E\u65E5\u4ED8\uFF08`YYYY-MM-DD` \u5F62\u5F0F\uFF09 |\n| `NOW()` | \u73FE\u5728\u65E5\u6642\uFF08ISO 8601 \u5F62\u5F0F\uFF09 |\n| `LOGINUSER()` | \u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\uFF08`WHERE` \u3067\u306F kintone server \u304C\u89E3\u6C7A\uFF09 |\n| `PRIMARY_ORGANIZATION()` | \u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u306E\u512A\u5148\u7D44\u7E54\uFF08`WHERE` \u3067\u306F kintone server \u304C\u89E3\u6C7A\uFF09 |\n\n```sql\nWHERE \u4F5C\u6210\u65E5\u6642 >= TODAY()\nWHERE \u671F\u9650\u65E5 < TODAY()\nWHERE \u4F5C\u6210\u8005 in (LOGINUSER())\nWHERE \u62C5\u5F53\u8005 not in (LOGINUSER())\nWHERE \u62C5\u5F53\u7D44\u7E54 in (PRIMARY_ORGANIZATION())\n```\n\n`WHERE` \u3067\u306F16\u95A2\u6570\u3059\u3079\u3066\u304C server-only \u3067\u3059\u3002`TODAY()` \u306F\u65E5\u4ED8\u7CFB4\u578B\u3001\n`NOW()` \u306F `DATETIME` / \u4F5C\u6210\u65E5\u6642 / \u66F4\u65B0\u65E5\u6642\uFF08**`DATE` \u306B\u306F\u4E0D\u53EF**\uFF09\u306E\u6BD4\u8F03\u53F3\u8FBA\u30FB\n`BETWEEN` \u5883\u754C\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002`LOGINUSER()` \u306F\u4F5C\u6210\u8005 / \u66F4\u65B0\u8005 / \u30E6\u30FC\u30B6\u30FC\u9078\u629E\u306E\nsingleton `in` / `not in` \u3060\u3051\u306B\u4F7F\u7528\u3067\u304D\u3001**\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u306B\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093**\u3002\n`PRIMARY_ORGANIZATION()` \u306F\u7D44\u7E54\u9078\u629E\u306E singleton `in` / `not in` \u3060\u3051\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n`WHERE` \u4EE5\u5916\u3067\u69CB\u6587\u4E0A\u8A31\u53EF\u3055\u308C\u308B\u65E2\u5B58\u7D4C\u8DEF\u306E `TODAY()` / `NOW()` \u306F\u3001\u5F93\u6765\u3069\u304A\u308A\n\u5B9F\u884C\u74B0\u5883\u306E\u30ED\u30FC\u30AB\u30EB TZ \u3067\u8A55\u4FA1\u3055\u308C\u307E\u3059\u3002\u5185\u90E8\u306E\u30ED\u30FC\u30AB\u30EB\u8A55\u4FA1\u5668\u3067 `LOGINUSER()` /\n`PRIMARY_ORGANIZATION()` \u3092\u89E3\u6C7A\u3057\u305F\u5834\u5408\u306F\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u542B\u3080**\u5168\u5B9F\u884C\u9762\u3067\u7A7A\u6587\u5B57**\u3067\u3059\n\uFF08`SET` / `DECLARE` \u306E\u53F3\u8FBA\u3067\u306F\u4E21\u95A2\u6570\u3092\u69CB\u6587\u4E0A\u62D2\u5426\u3057\u307E\u3059\uFF09\u3002\u73FE\u5728\u306E\u65E5\u4ED8\u30FB\u65E5\u6642\u3092\u610F\u56F3\u7684\u306B client \u306E\u30ED\u30FC\u30AB\u30EB TZ \u3067\u8A55\u4FA1\u3059\u308B\u5834\u5408\u306F\u3001\nkSQL \u30B9\u30AB\u30E9\u30FC\u95A2\u6570\u306E `CURRENT_DATE()` / `CURRENT_TIMESTAMP()` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u3053\u308C\u3089\u306B\u306F\u62BC\u3057\u4E0B\u3052\u7D4C\u8DEF\u304C\u306A\u304F\u3001\u672C\u9805\u306E fail-closed \u5BFE\u8C61\u5916\u3067\u3059\u3002\n\n**\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\uFF0812\u95A2\u6570\u30FB`WHERE` \u5C02\u7528\uFF09**: `YESTERDAY()` / `TOMORROW()` / `FROM_TODAY(n, unit)` / `THIS_WEEK([\u66DC\u65E5])` / `LAST_WEEK([\u66DC\u65E5])` / `NEXT_WEEK([\u66DC\u65E5])` / `THIS_MONTH([\u65E5])` / `LAST_MONTH([\u65E5])` / `NEXT_MONTH([\u65E5])` / `THIS_YEAR()` / `LAST_YEAR()` / `NEXT_YEAR()`\u3002\n\n16\u95A2\u6570\u5171\u901A\u3067\u3001\u5358\u4E00 APP \u3067\u306F **\u305D\u306E SELECT \u306E `WHERE` \u5168\u4F53\u3092\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u5F62**\uFF08`OR` \u4F75\u7528\u3082\u5168\u4F53\u304C\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u3089\u53EF\u3002`GROUP BY` / `DISTINCT` / \u96C6\u8A08 / \u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570 / \u901A\u5E38\u306E `ORDER BY`\u3001\u5B9F\u4F53\u5316 CTE \u672C\u4F53\u3001`WITH` \u306E\u6700\u7D42 SELECT\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source\u3001\u5358\u4E00 CTE \u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u5C55\u958B\u3067\u3082\u53EF\uFF09\u3068\u3001**\u95A2\u6570\u3092\u542B\u307E\u306A\u3044\u6B8B\u4F59\uFF08\u4F8B `LENGTH(...) > 1`\uFF09\u3068 `AND` \u3067\u7D50\u3070\u308C\u305F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u5358\u4E00\u7269\u7406\u30A2\u30D7\u30EA SELECT**\uFF08\u95A2\u6570 leaf \u3092 prefilter \u306B\u62BC\u3057\u4E0B\u3052\u6B8B\u4F59\u3060\u3051 client \u8A55\u4FA1\u30FB`SUPERSET_PREFILTER`\uFF09\u3067\u4F7F\u3048\u307E\u3059\u3002INNER JOIN \u3067\u306F alias \u4ED8\u304D\u7269\u7406 APP \u3060\u3051\u3092\u5165\u529B\u3068\u3057\u3001\u5358\u4E00 alias \u306E whole-WHERE exact\uFF08\u7B2C5-W\uFF09\u3001\u307E\u305F\u306F AND \u30B9\u30D1\u30A4\u30F3\u4E0A\u306E exact \u95A2\u6570 leaf \u3092 alias \u3054\u3068\u306B\u62BC\u3057\u4E0B\u3052\u3066\u95A2\u6570\u306A\u3057\u6B8B\u4F59\u3060\u3051\u3092 client \u8A55\u4FA1\u3059\u308B\u5F62\uFF08\u7B2C5-L\uFF09\u3067\u4F7F\u3048\u307E\u3059\u3002\u5F8C\u8005\u306F\u8907\u6570 alias \u3078\u5206\u6563\u3057\u305F\u95A2\u6570\u306B\u3082\u5BFE\u5FDC\u3057\u307E\u3059\u3002`LEFT` / `RIGHT JOIN`\u3001cross-alias `OR`\u3001\u95A2\u6570\u3092\u542B\u3080 cross-table \u8FF0\u8A9E\u3001whole-WHERE exact \u3067\u306A\u3044 KLIKE-containing `OR`\u3001JOIN \u5165\u529B\u304C CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FB\u5165\u308C\u5B50 SELECT\u30FB\u6D3E\u751F\u8868\u306E\u5F62\u306F\u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u524D\u306B fail-closed \u3057\u307E\u3059\u3002\u5358\u4E00 APP \u306E prefilter\uFF0B\u6B8B\u4F59\u306F CTE \u672C\u4F53\u30FB`WITH` \u306E\u6700\u7D42 SELECT\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002`VALIDATE`\u3001\u304A\u3088\u3073**\u5B9F\u4F53\u5316 CTE \u672C\u4F53 / `WITH` \u6700\u7D42\u30AF\u30A8\u30EA / \u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u304C `UNION` \u306E\u5834\u5408**\u3082 fail-closed \u3057\u307E\u3059\uFF08\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E `UNION` \u306F\u679D\u3054\u3068\u306B\u5224\u5B9A\u3057\u307E\u3059\uFF09\u3002**`KORDER BY` \u3068 DML \u306F whole-WHERE exact \u306E\u5F62\u3060\u3051\u304C\u4F7F\u3048\u3001prefilter\uFF0B\u6B8B\u4F59\u3084 FULL_SCAN_EXACT \u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002`PRIMARY_ORGANIZATION()` \u3092\u542B\u3080 DML \u306F\u5E38\u306B\u62D2\u5426\u3057\u307E\u3059\u3002** \u578B\u30FB\u6F14\u7B97\u5B50\u30FBreason code\u30FB\u79FB\u884C\u65B9\u6CD5\u306F [\xA75\u300Ckintone \u30AF\u30A8\u30EA\u95A2\u6570\u300D](#kintone-\u30AF\u30A8\u30EA\u95A2\u6570server-only) \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n```sql\nWHERE \u4F5C\u6210\u65E5\u6642 < FROM_TODAY(5, DAYS)\nWHERE \u65E5\u4ED8 BETWEEN FROM_TODAY(-7, DAYS) AND TODAY()\nWHERE \u66F4\u65B0\u65E5\u6642 >= YESTERDAY() AND LENGTH(\u90FD\u9053\u5E9C\u770C) > 1 -- prefilter\uFF0B\u6B8B\u4F59\uFF08v3.21.0\uFF09\nWHERE \u65E5\u4ED8 = TODAY() AND LENGTH(\u4EF6\u540D) > 1 -- TODAY() \u3082\u540C\u3058 prefilter\n```\n\n> `PRIMARY_ORGANIZATION()` \u306F\u7D44\u7E54\u9078\u629E\u306E singleton `in` / `not in` \u3060\u3051\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n> **\u512A\u5148\u7D44\u7E54\u304C\u672A\u8A2D\u5B9A\u306E\u30E6\u30FC\u30B6\u30FC\u3067\u306F\u6761\u4EF6\u304C\u7121\u8996\u3055\u308C\u3001\u5168\u30EC\u30B3\u30FC\u30C9\u304C\u8FD4\u308A\u307E\u3059**\n> \uFF08kintone \u516C\u5F0F\u306E\u8A18\u8FF0\u30022026-07-31 \u306B\u5B9F\u6A5F\u3067\u518D\u73FE\u3092\u78BA\u8A8D\uFF09\u3002\n> **\u3053\u306E\u95A2\u6570\u3092\u542B\u3080 DML \u306F\u5E38\u306B\u62D2\u5426**\u3057\u307E\u3059\u304C\u3001**`SELECT` \u306F\u305D\u306E\u307E\u307E\u8FD4\u3057\u307E\u3059**\u2014\u2014\n> **\u7D5E\u308A\u8FBC\u307F\u304C\u52B9\u3044\u3066\u3044\u306A\u3044\u3053\u3068\u3092\u3001\u30A8\u30F3\u30B8\u30F3\u304B\u3089\u3082\u753B\u9762\u304B\u3089\u3082\u5224\u5225\u3067\u304D\u307E\u305B\u3093**\uFF08\xA75 \u53C2\u7167\uFF09\u3002\n\n---", uri: "ksql://language-reference/06-where" }, "07-join": { heading: "7. JOIN", text: "## 7. JOIN\n\nINNER JOIN\u30FBLEFT JOIN\u30FBRIGHT JOIN\u30FBCROSS JOIN \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002 \n\u8907\u6570\u306E JOIN \u3092\u9023\u9396\u3057\u3066 3\u30C6\u30FC\u30D6\u30EB\u4EE5\u4E0A\u306E\u7D50\u5408\u3082\u53EF\u80FD\u3067\u3059\u3002 \nINNER / LEFT / RIGHT JOIN \u306E\u7D50\u5408\u6761\u4EF6\u306F\u7B49\u5024\u7D50\u5408\uFF08`ON a.\u30D5\u30A3\u30FC\u30EB\u30C9 = b.\u30D5\u30A3\u30FC\u30EB\u30C9`\uFF09\u306E\u307F\u5BFE\u5FDC\u3002\n\n### CROSS JOIN\n\n\u5DE6\u53F3\u306E\u5168\u7D44\u307F\u5408\u308F\u305B\uFF08\u76F4\u7A4D\uFF09\u3092\u8FD4\u3057\u307E\u3059\u3002`ON` \u53E5\u306F\u6307\u5B9A\u3057\u307E\u305B\u3093\u3002\u5DE6\u5165\u529B\u3092\u5916\u5074\u3001\u53F3\u5165\u529B\u3092\n\u5185\u5074\u3068\u3057\u3066\u51E6\u7406\u3057\u307E\u3059\u304C\u3001\u516C\u958B\u7D50\u679C\u306E\u9806\u5E8F\u304C\u5FC5\u8981\u306A\u5834\u5408\u306F `ORDER BY` \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n```sql\nWITH\nd AS (GENERATE_SERIES('2026-08-01', '2026-08-07') AS \u65E5\u4ED8),\nm AS (SELECT \u88FD\u54C1\u540D FROM APP4229)\nSELECT d.\u65E5\u4ED8, m.\u88FD\u54C1\u540D\nFROM d\nCROSS JOIN m\nORDER BY d.\u65E5\u4ED8, m.\u88FD\u54C1\u540D\n```\n\n\u7247\u5074\u304C 0 \u884C\u306A\u3089\u7D50\u679C\u3082 0 \u884C\u3067\u3059\u3002\u5404 CROSS JOIN \u6BB5\u306E\u751F\u6210\u884C\u6570\u306F\u884C\u751F\u6210\u524D\u306B\u8A08\u7B97\u3057\u3001\n10,000 \u884C\u3092\u8D85\u3048\u308B\u5834\u5408\u306F\u30A8\u30E9\u30FC\u306B\u3057\u307E\u3059\u3002\u5F8C\u7D9A\u306E `WHERE`\u3001`GROUP BY`\u3001`DISTINCT`\u3001`LIMIT`\n\u3067\u6E1B\u308B\u898B\u8FBC\u307F\u306F\u4E0A\u9650\u5224\u5B9A\u306B\u4F7F\u3044\u307E\u305B\u3093\u3002CROSS JOIN \u306F\u5B8C\u5168\u5165\u529B\u3092\u5FC5\u8981\u3068\u3059\u308B\u305F\u3081\u3001\n`onLimit=truncate` \u306F\u7121\u52B9\u3067\u3059\u3002\n\n\u7269\u7406 APP \u306B\u5C5E\u3059\u308B\u5B89\u5168\u306A\u5358\u4E00 alias \u306E `WHERE` leaf \u306F\u53D6\u5F97 query \u3078 prefilter \u3067\u304D\u307E\u3059\u304C\u3001\n\u5143\u306E `WHERE` \u306F JOIN \u5F8C\u306B\u3082\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002CROSS JOIN \u306B\u306F\u7D50\u5408\u30AD\u30FC\u304C\u306A\u3044\u305F\u3081\u3001\u7D50\u5408\u30AD\u30FC\u306E\n`in` / range prefilter \u306F\u4F7F\u7528\u3057\u307E\u305B\u3093\u3002\n\n`EXPLAIN` \u306F\u9759\u7684\u306B\u8A3C\u660E\u3067\u304D\u308B\u5165\u529B\u3067\u306F\u5DE6\u53F3\u884C\u6570\u30FB\u751F\u6210\u884C\u6570\u30FB`row guard` \u3092\u78BA\u5B9A\u8868\u793A\u3057\u3001\u7269\u7406 APP\n\u3092\u542B\u3080\u5834\u5408\u306F\u5B9F\u884C\u6642\u7B97\u51FA\u5F0F\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u73FE\u5728\u306E\u7269\u7406\u884C\u6570\u3092\u5F97\u308B\u305F\u3081\u306B records API \u3092\u547C\u3073\u307E\u305B\u3093\u3002\n\n`LEFT CROSS JOIN`\u3001`RIGHT CROSS JOIN`\u3001`INNER CROSS JOIN`\u3001`CROSS JOIN ... ON`\u3001\n`INNER JOIN ... ON 1=1`\u3001\u30AB\u30F3\u30DE\u7D50\u5408\u306F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\u3002`GENERATE_SERIES` \u306F\u76F4\u63A5\u30C6\u30FC\u30D6\u30EB\u4F4D\u7F6E\u3078\n\u66F8\u304B\u305A\u3001\u4E0A\u4F8B\u306E\u3088\u3046\u306B CTE \u306B\u7F6E\u304D\u307E\u3059\u3002\n\n### INNER JOIN\n\n\u4E21\u30C6\u30FC\u30D6\u30EB\u3067\u7D50\u5408\u6761\u4EF6\u3092\u6E80\u305F\u3059\u884C\u306E\u307F\u8FD4\u3057\u307E\u3059\u3002\n\n```sql\nSELECT a.\u6C0F\u540D, b.\u5546\u54C1\u540D, b.\u91D1\u984D\nFROM APP100 AS a\nINNER JOIN APP200 AS b ON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n```\n\n`INNER` \u306F\u7701\u7565\u53EF\u80FD\uFF08`JOIN` \u306E\u307F\u3067 INNER JOIN \u6271\u3044\uFF09\u3002\n\n```sql\nFROM APP100 AS a\nJOIN APP200 AS b ON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n```\n\n#### \u7D50\u5408\u30AD\u30FC\u306B\u3088\u308B\u53D6\u5F97\u7BC4\u56F2\u306E\u7D5E\u308A\u8FBC\u307F\n\n\u5B9F\u4F53\u5316\u6E08\u307F\u306E CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FB\u5148\u306B\u53D6\u5F97\u3057\u305F\u7269\u7406 APP \u304B\u3089\u3001alias \u4ED8\u304D\u7269\u7406 APP \u3078\n`INNER JOIN` \u3059\u308B\u5834\u5408\u3001kSQL \u306F\u7D50\u5408\u30AD\u30FC\u306E\u5B9F\u5024\u3092\u4F7F\u3063\u3066 JOIN \u5148\u306E\u53D6\u5F97\u5019\u88DC\u3092\u7D5E\u308A\u307E\u3059\u3002\n\u305F\u3060\u3057\u3001JOIN \u5148\u306B\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u5358\u4E00 alias \u306E\u8FF0\u8A9E\u304C\u3042\u308B\u5834\u5408\u3001\u3053\u306E\u7D5E\u308A\u8FBC\u307F\u306F\u884C\u3044\u307E\u305B\u3093\u3002\nJOIN \u5148\u306F\u305D\u306E\u8FF0\u8A9E\u3067\u72EC\u7ACB\u306B\u53D6\u5F97\u3057\u3066 FROM \u5074\u3068\u4E26\u5217\u306B\u8AAD\u307F\u307E\u3059\u3002\u7D50\u5408\u30AD\u30FC\u3067\u7D5E\u308B\u306E\u306F\u3001JOIN \u5148\u306B\n\u62BC\u3057\u4E0B\u3052\u308B\u8FF0\u8A9E\u304C\u306A\u304F\u3001FROM \u5074\u306E\u53D6\u5F97\u5B8C\u4E86\u5F8C\u306B JOIN \u5148\u3092\u53D6\u5F97\u3059\u308B\u5834\u5408\u3060\u3051\u3067\u3059\u3002\n\nJOIN \u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u304C `in` \u3092\u53D7\u3051\u308B\u578B\u3067\u306F\u3001\u91CD\u8907\u3092\u9664\u3044\u305F\u30AD\u30FC\u3092 `in (...)` \u306B\u8F09\u305B\u300150\u30AD\u30FC\u5358\u4F4D\u30FB\n\u6700\u5927300\u30AD\u30FC\u3067\u53D6\u5F97\u3057\u307E\u3059\u3002`SINGLE_LINE_TEXT` / `LINK` / `NUMBER` / `CALC` / `DROP_DOWN` /\n`RADIO_BUTTON` / `CHECK_BOX` / `MULTI_SELECT` / `STATUS` \u306F `in (\"\")` \u3092\u53D7\u3051\u308B\u305F\u3081\u3001FROM \u5074\u306E\n\u30AD\u30FC\u306B\u7A7A\u5024\u304C\u3042\u3063\u3066\u3082\u7A7A\u5024\u3092\u542B\u3081\u3066\u7D5E\u308A\u8FBC\u307F\u3092\u7DAD\u6301\u3057\u307E\u3059\u3002\u305D\u308C\u4EE5\u5916\u306E\u578B\uFF08\u30EC\u30B3\u30FC\u30C9\u756A\u53F7 `$id` \u3092\u542B\u3080\uFF09\n\u3067\u306F\u3001\u7A7A\u5024\u304C1\u4EF6\u3067\u3082\u3042\u308C\u3070 JOIN \u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\u3002\u3053\u306E\u5224\u5B9A\u306F FROM \u5074\u306E\u53D6\u5F97\u5F8C\u306B\u884C\u308F\u308C\u308B\u305F\u3081\u3001\n`EXPLAIN` \u3067\u306F `join key prefilter: runtime candidate` \u306E\u307E\u307E\u3067\u4E8B\u524D\u306B\u306F\u5206\u304B\u3089\u305A\u3001\u5B9F\u884C\u6642\u306B\u3082\u8B66\u544A\u306F\n\u51FA\u307E\u305B\u3093\uFF08\u30AD\u30FC\u6570\u306E\u4E0A\u9650\u8D85\u904E\u3068\u306F\u7570\u306A\u308A\u307E\u3059\uFF09\u3002\n\n\u91CD\u8907\u3092\u9664\u3044\u305F\u30AD\u30FC\u304C300\u4EF6\u3092\u8D85\u3048\u308B\u5834\u5408\u3082\u3001\u7D5E\u308A\u8FBC\u307F\u3092\u884C\u308F\u305A JOIN \u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\u3002\u3053\u306E\u5834\u5408\u306F\n`JOIN\u30AD\u30FC\u304C N \u4EF6\u306E\u305F\u3081 ON \u6700\u9069\u5316\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3001JOIN\u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\uFF08\u4E0A\u9650 300 \u4EF6\uFF09\u3002`\n\u3068\u3044\u3046\u8B66\u544A\u3092\u8FD4\u3057\u307E\u3059\u3002\n\n`DATE` / `TIME` / `DATETIME` / `CREATED_TIME` / `UPDATED_TIME` \u306F `in` \u3092\u53D7\u3051\u306A\u3044\u305F\u3081\u3001\n\u3059\u3079\u3066\u306E\u30AD\u30FC\u304C\u578B\u306B\u5BFE\u5FDC\u3059\u308B\u6B63\u898F\u5F62\u5F0F\u306A\u3089\u6700\u5C0F\u5024\u30FB\u6700\u5927\u5024\u306B\u3088\u308B\u7BC4\u56F2 prefilter \u3092\u4F7F\u3044\u307E\u3059\u3002\n\n```text\n\u65E5\u4ED8 >= \"2025-08-04\" and \u65E5\u4ED8 <= \"2025-08-06\"\n```\n\n\u3053\u306E\u7BC4\u56F2\u306F\u5019\u88DC\u3092\u5E83\u3081\u306B\u53D6\u5F97\u3059\u308B `relation: superset` \u3067\u3059\u3002\u7BC4\u56F2\u5185\u306B\u5B9F\u969B\u306E\u30AD\u30FC\u96C6\u5408\u306B\u306A\u3044\u5024\u304C\n\u542B\u307E\u308C\u3066\u3082\u3001\u65E2\u5B58\u306E JOIN \u5F8C\u7167\u5408\u304C\u6700\u7D42\u7D50\u679C\u304B\u3089\u9664\u5916\u3057\u307E\u3059\u3002\u3053\u306E\u7BC4\u56F2\u65B9\u5F0F\u3067\u306F\u3001\u30AD\u30FC\u306B\u7A7A\u5024\u307E\u305F\u306F\n\u6B63\u898F\u5F62\u5F0F\u3067\u306A\u3044\u5024\u304C1\u4EF6\u3067\u3082\u542B\u307E\u308C\u308B\u5834\u5408\u3001JOIN \u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\u3002\u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u304C `in` \u3068\n\u7BC4\u56F2\u6BD4\u8F03\u306E\u3069\u3061\u3089\u3082\u53D7\u3051\u306A\u3044\u5834\u5408\u3082\u3001\u4E0D\u9069\u5207\u306A\u6F14\u7B97\u5B50\u3092\u63A8\u6E2C\u305B\u305A JOIN \u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\u3002\n\u6B63\u898F\u5F62\u5F0F\u306F `DATE` \u304C `YYYY-MM-DD`\u3001`TIME` \u304C `HH:mm`\u3001\u65E5\u6642\u7CFB\u304C\n`YYYY-MM-DDTHH:mm:ssZ` \u3067\u3059\u3002\n\nJOIN \u306E `WHERE` \u306B `\u30AD\u30FC != ''` \u3092\u52A0\u3048\u3066\u3082\u3001\u7A7A\u5024\u306B\u3088\u308B\u5168\u4EF6\u53D6\u5F97\u306F\u9632\u3052\u307E\u305B\u3093\u3002JOIN \u6587\u8108\u3067\u306F\n\u3053\u306E\u8FF0\u8A9E\u3092 records API \u3078\u62BC\u3057\u4E0B\u3052\u305A\u3001`join pushdown not applied: UNSAFE_RELATION` \u3092\u8868\u793A\u3057\u3066\nJOIN \u5F8C\u306B\u8A55\u4FA1\u3057\u307E\u3059\u3002\u4E00\u65B9\u3001\u7D50\u5408\u30AD\u30FC\u306F FROM \u5074\u306E\u53D6\u5F97\u76F4\u5F8C\u306E\u884C\u304B\u3089\u96C6\u3081\u308B\u305F\u3081\u3001\u3053\u306E\u8FF0\u8A9E\u306B\u3088\u308B\n\u7A7A\u5024\u9664\u5916\u3088\u308A\u5148\u306B\u53D6\u5F97\u65B9\u5F0F\u304C\u6C7A\u307E\u308A\u307E\u3059\u3002\u5358\u8868\u306E `WHERE \u30AD\u30FC != ''` \u306F records API \u3078\u62BC\u3057\u4E0B\u304C\u308A\u3001\n`fetch: EXACT` \u306B\u306A\u308A\u307E\u3059\u3002\u7A7A\u5024\u3092\u9664\u3044\u3066\u7D5E\u308A\u8FBC\u307F\u3092\u7DAD\u6301\u3059\u308B\u306B\u306F\u3001FROM \u5074\u3092\u3053\u306E\u5358\u8868 SELECT \u3067\n\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u5B9F\u4F53\u5316\u3057\u3066\u304B\u3089\u3001\u305D\u306E\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092 FROM \u5074\u3068\u3057\u3066\u7269\u7406 APP \u3078 `INNER JOIN`\n\u3057\u307E\u3059\u3002\u5B9F\u4F53\u5316\u6E08\u307F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u304B\u3089\u7269\u7406 APP \u3078\u306E\u7D50\u5408\u30AD\u30FC\u306B\u3088\u308B\u7D5E\u308A\u8FBC\u307F\u306F\u6709\u52B9\u3067\u3059\u3002\n\n\u65B9\u5F0F\u9078\u629E\u306F records API \u547C\u3073\u51FA\u3057\u524D\u306B\u884C\u3044\u307E\u3059\u3002\u9078\u629E\u6E08\u307F\u306E query \u306B\u5BFE\u3057\u3066 kintone \u304C\u8FD4\u3057\u305F\u8A8D\u8A3C\u30FB\n\u6A29\u9650\u30FB\u5024\u53D7\u7406\u30FB\u691C\u7D22\u6253\u3061\u5207\u308A\u30FB\u901A\u4FE1\u30A8\u30E9\u30FC\u3092\u3001\u7A7A query \u3084\u5168\u4EF6\u53D6\u5F97\u3067 silent retry \u306F\u3057\u307E\u305B\u3093\u3002\n`EXPLAIN` \u3067\u306F `join key prefilter: in`\u3001`join key prefilter: range`\u3001\n`join key prefilter: not applied`\u3001\u5B9F\u884C\u524D\u306B\u306F `join key prefilter: runtime candidate`\u3001\n\u9069\u7528\u6642\u306E `relation`\u3001\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u6642\u306E `join key prefilter reason` \u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002\nJOIN \u5148\u306E\u8FF0\u8A9E\u3092\u72EC\u7ACB\u306B\u62BC\u3057\u4E0B\u3052\u3066\u4E26\u5217\u53D6\u5F97\u3059\u308B\u5834\u5408\u306F\u3001\u7D50\u5408\u30AD\u30FC\u306B\u3088\u308B\u7D5E\u308A\u8FBC\u307F\u3092\u8A66\u3055\u306A\u3044\u305F\u3081\n`join key prefilter` \u884C\u3092\u8868\u793A\u3057\u307E\u305B\u3093\u3002\u53D6\u5F97\u7BC4\u56F2\u306F\u5404 source \u306E `fetch:` \u884C\u3067\u78BA\u8A8D\u3057\u307E\u3059\u3002\n\n### LEFT JOIN\n\n\u5DE6\u30C6\u30FC\u30D6\u30EB\u306E\u5168\u884C + \u7D50\u5408\u6761\u4EF6\u3092\u6E80\u305F\u3059\u53F3\u30C6\u30FC\u30D6\u30EB\u306E\u884C\u3092\u8FD4\u3057\u307E\u3059\u3002 \n\u53F3\u30C6\u30FC\u30D6\u30EB\u306B\u30DE\u30C3\u30C1\u3057\u306A\u3044\u5834\u5408\u3001\u53F3\u5074\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u7A7A\u6587\u5B57\u306B\u306A\u308A\u307E\u3059\u3002\n\n```sql\nSELECT a.\u6C0F\u540D, b.\u91D1\u984D\nFROM APP100 AS a\nLEFT JOIN APP200 AS b ON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n```\n\n### RIGHT JOIN\n\n\u53F3\u30C6\u30FC\u30D6\u30EB\u306E\u5168\u884C + \u7D50\u5408\u6761\u4EF6\u3092\u6E80\u305F\u3059\u5DE6\u30C6\u30FC\u30D6\u30EB\u306E\u884C\u3092\u8FD4\u3057\u307E\u3059\u3002 \n\u5DE6\u30C6\u30FC\u30D6\u30EB\u306B\u30DE\u30C3\u30C1\u3057\u306A\u3044\u5834\u5408\u3001\u5DE6\u5074\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u7A7A\u6587\u5B57\u306B\u306A\u308A\u307E\u3059\u3002\n\n```sql\nSELECT a.\u91D1\u984D, b.\u9867\u5BA2\u540D\nFROM APP100 AS a\nRIGHT JOIN APP200 AS b ON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n```\n\n### 3\u30C6\u30FC\u30D6\u30EB\u4EE5\u4E0A\u306E JOIN\uFF08\u8907\u6570 JOIN \u9023\u9396\uFF09\n\n```sql\nSELECT a.\u6C0F\u540D, b.\u5546\u54C1\u540D, c.\u914D\u9001\u5148\nFROM APP100 AS a\nINNER JOIN APP200 AS b ON a.\u6CE8\u6587ID = b.\u6CE8\u6587ID\nLEFT JOIN APP300 AS c ON a.\u914D\u9001ID = c.\u914D\u9001ID\n```\n\n> **\u6CE8\u610F:** JOIN \u306F FULL_SCAN \u30E2\u30FC\u30C9\u3067 client \u5074\u306E\u7D50\u5408\u3092\u884C\u3044\u307E\u3059\u3002\u901A\u5E38\u306F\u5143\u306E `WHERE` \u3092\n> client \u5074\u3067\u3082\u518D\u8A55\u4FA1\u3057\u307E\u3059\u304C\u3001\u7B2C5-W \u306F whole WHERE \u3092 server \u3067 exact \u306B\u9069\u7528\u3057\u3066\n> client residual \u3092\u6301\u305F\u305A\u3001\u7B2C5-L \u306F server-only \u95A2\u6570 leaf \u3092\u9664\u3044\u305F\u6B8B\u4F59\u3060\u3051\u3092\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\n> \u305F\u3060\u3057\u3001INNER / CROSS JOIN \u3067\u3001\u578B\u3068\u6F14\u7B97\u5B50\u304C\u5BFE\u5FDC\u3059\u308B\u5358\u4E00 alias \u306E\u8FF0\u8A9E\u306F\u3001\u5404 APP \u306E records API\n> query \u3078 prefilter \u3068\u3057\u3066\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002\u62BC\u3057\u4E0B\u3052\u306F\u53D6\u5F97\u4EF6\u6570\u3092\u6E1B\u3089\u3059\u6027\u80FD\u6700\u9069\u5316\u3067\u3042\u308A\u3001\n> \u901A\u5E38\u8FF0\u8A9E\u306F\u5143\u306E `WHERE` \u3092 client \u3067\u518D\u8A55\u4FA1\u3059\u308B\u305F\u3081\u7D50\u679C\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n>\n> server-only \u95A2\u6570\u306F\u3001alias \u4ED8\u304D\u7269\u7406 APP \u3060\u3051\u306E INNER / CROSS JOIN \u3067\u6B21\u306E2\u5F62\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n> **\u7B2C5-W**\u306F `WHERE` \u5168\u4F53\u304C\u5358\u4E00 alias \u306B\u5C5E\u3059\u308B exact \u5F62\u3067\u3001\u540C\u4E00 alias \u306E `OR` / `NOT` /\n> whole-exact \u306A KLIKE \u5171\u5B58\u3082\u53EF\u3067\u3059\u3002**\u7B2C5-L**\u306F AND \u30B9\u30D1\u30A4\u30F3\u306E exact \u95A2\u6570 leaf \u3092\n> alias \u3054\u3068\u306B\u62BC\u3057\u4E0B\u3052\u3001\u95A2\u6570\u3092\u542B\u307E\u306A\u3044\u6B8B\u4F59\u3060\u3051\u3092 client \u8A55\u4FA1\u3057\u307E\u3059\u3002\u8907\u6570 alias \u306B\n> \u95A2\u6570\u304C\u5206\u6563\u3057\u3066\u3044\u3066\u3082\u5404 APP \u3078\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002`LOGINUSER()` \u306F\u4F5C\u6210\u8005 / \u66F4\u65B0\u8005 /\n> \u30E6\u30FC\u30B6\u30FC\u9078\u629E\u3001`PRIMARY_ORGANIZATION()` \u306F\u7D44\u7E54\u9078\u629E\u306E singleton `in` / `not in` \u306B\u9650\u308A\u307E\u3059\u3002\n>\n> server-only \u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u306A\u3044 JOIN \u306F\u3001LEFT / RIGHT JOIN\u3001cross-alias `OR`\u3001\n> \u95A2\u6570\u3092\u542B\u3080 cross-table \u8FF0\u8A9E\u3001whole exact \u3067\u306A\u3044 KLIKE-containing `OR`\u3001\u304A\u3088\u3073\n> \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FB\u5165\u308C\u5B50 SELECT\u30FB\u6D3E\u751F\u8868\u30FBCTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u5165\u529B\u306B\u3059\u308B\u5F62\u3067\u3059\u3002\n> \u901A\u5E38\u8FF0\u8A9E\u306E APP \u5225 prefilter \u306B\u3064\u3044\u3066\u306F\u3001\u578B\u4E0D\u660E\u30FB\u975E\u5B9F\u5728\u306E\u9078\u629E\u80A2\u30FB\u9078\u629E\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u7B49\u3092\n> \u5F15\u304D\u7D9A\u304D\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\u3002\n>\n> `EXPLAIN` \u3067\u306F\u3001\u5B9F\u884C\u6642\u30E1\u30BF\u30C7\u30FC\u30BF\u3067\u78BA\u5B9A\u3057\u305F `pushdown applied`\u3001\u9759\u7684\u306A\n> `pushdown candidate`\u3001\u304A\u3088\u3073\u96C6\u5408\u95A2\u4FC2 `relation: exact` / `relation: superset`\n> \u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002\u62D2\u5426\u5F62\u3067\u3082 throw \u305B\u305A `plan status: rejected` \u3068 reason\u3001\n> `client evaluation: forbidden`\u3001\u5B9F\u884C API \u306A\u3057\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n\n---", uri: "ksql://language-reference/07-join" }, "08-group-by-aggregates": { heading: "8. GROUP BY / \u96C6\u8A08\u95A2\u6570", text: "## 8. GROUP BY / \u96C6\u8A08\u95A2\u6570\n\n### GROUP BY\n\n```sql\nSELECT \u90E8\u7F72, COUNT(*) AS \u4EF6\u6570\nFROM APP100\nGROUP BY \u90E8\u7F72\n```\n\n```sql\nSELECT \u62C5\u5F53\u8005, \u30B9\u30C6\u30FC\u30BF\u30B9, SUM(\u91D1\u984D) AS \u5408\u8A08\nFROM APP100\nGROUP BY \u62C5\u5F53\u8005, \u30B9\u30C6\u30FC\u30BF\u30B9\n```\n\n#### GROUP BY \u306B\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u6307\u5B9A\u3059\u308B\n\n`GROUP BY` \u306B\u306F\u3001**\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u5F0F\u306E\u307B\u304B\u3001SELECT \u53E5\u3067\u4ED8\u3051\u305F\u30A8\u30A4\u30EA\u30A2\u30B9**\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT DATE_FORMAT(\u4F5C\u6210\u65E5\u6642, '%Y-%m') AS \u5E74\u6708, COUNT(*) AS \u4EF6\u6570\nFROM APP100\nGROUP BY \u5E74\u6708 -- \u5F0F\u306B\u4ED8\u3051\u305F\u30A8\u30A4\u30EA\u30A2\u30B9\u3067\u96C6\u8A08\u3067\u304D\u308B\n```\n\n\u4E0A\u306F `GROUP BY DATE_FORMAT(\u4F5C\u6210\u65E5\u6642, '%Y-%m')` \u3068**\u540C\u3058\u7D50\u679C**\u306B\u306A\u308A\u307E\u3059\u3002\u30A8\u30A4\u30EA\u30A2\u30B9\u306E\u5143\u304C\u6587\u5B57\u5217\u30FB\u65E5\u4ED8\u95A2\u6570\u3001\u7B97\u8853\u5F0F\u3001`CASE`\u3001\u30EA\u30C6\u30E9\u30EB\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3001\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u3044\u305A\u308C\u3067\u3082\u89E3\u6C7A\u3055\u308C\u307E\u3059\u3002\n\n**\u540D\u524D\u306E\u89E3\u6C7A\u9806**\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059\u3002\n\n1. **\u540C\u540D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u3042\u308C\u3070\u305D\u308C\u3092\u4F7F\u3044\u307E\u3059**\uFF08\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u3001`$id` / `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7` \u306A\u3069\u306E\u30B7\u30B9\u30C6\u30E0\u5217\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E `_pid` / `_rid` / `_idx` / `_p.<\u89AA\u30D5\u30A3\u30FC\u30EB\u30C9>`\u3001CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5217\uFF09\u3002SELECT \u3067\u540C\u540D\u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u4ED8\u3051\u3066\u3044\u3066\u3082\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u512A\u5148\u3055\u308C\u307E\u3059\u3002\n2. \u540C\u540D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u7121\u3044\u3068\u304D\u3060\u3051\u3001SELECT \u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u3068\u3057\u3066\u89E3\u6C7A\u3057\u307E\u3059\u3002\n\n\u5B9F\u4F53\u5316\u5217\u30FBSELECT \u5225\u540D\u306B\u82F1\u5B57\u304C\u3042\u308B\u5834\u5408\u306E\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u306E\u6271\u3044\u306F [\u57FA\u672C\u30EB\u30FC\u30EB\u300C\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u300D](#\u5927\u6587\u5B57\u5C0F\u6587\u5B57) \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u5B8C\u5168\u4E00\u81F4\u3092\u5148\u306B\u8A66\u3057\u3001\u305D\u306E\u5F8C\u3067\u5C0F\u6587\u5B57\u3078\u6B63\u898F\u5316\u3055\u308C\u305F\u5217\u540D\u3092\u89E3\u6C7A\u3057\u307E\u3059\u3002\u7269\u7406 APP \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u306B\u306F\u3053\u306E\u6B63\u898F\u5316\u3092\u9069\u7528\u3057\u307E\u305B\u3093\u3002\n\n`ORDER BY` \u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u512A\u5148\u3057\u307E\u3059\u304C\u3001`GROUP BY` \u306F**\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u512A\u5148**\u3057\u307E\u3059\u3002`GROUP BY` \u306F\u30B0\u30EB\u30FC\u30D7\u5316\u524D\u306E\u884C\u306B\u5BFE\u3059\u308B\u64CD\u4F5C\u3067\u3001`ORDER BY` \u306F\u51FA\u529B\u884C\u306B\u5BFE\u3059\u308B\u64CD\u4F5C\u3060\u304B\u3089\u3067\u3059\uFF08\u6A19\u6E96 SQL / MySQL \u3068\u540C\u3058\uFF09\u3002\n\n\u6B21\u306F\u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u524D\u306B\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n\n- **\u96C6\u8A08\u95A2\u6570\u306E\u30A8\u30A4\u30EA\u30A2\u30B9**\uFF08`SELECT COUNT(*) AS \u4EF6\u6570 \u2026 GROUP BY \u4EF6\u6570`\uFF09\u3002\u30B0\u30EB\u30FC\u30D7\u5316\u524D\u306B\u5024\u304C\u78BA\u5B9A\u3057\u306A\u3044\u305F\u3081\u3067\u3059\u3002\u96C6\u8A08\u3092\u542B\u3080 `CASE` / \u6587\u5B57\u5217\u95A2\u6570 / \u9023\u7D50\u5F0F\u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u3001\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u4ED8\u3051\u3066\u3044\u306A\u3044\u96C6\u8A08\u5217\u306E\u5408\u6210\u540D\uFF08`` GROUP BY `SUM(\u91D1\u984D)` ``\uFF09\u3082\u540C\u69D8\u3067\u3059\u3002\n- \u540C\u540D\u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u8907\u6570\u3042\u308A\u3001`GROUP BY` \u304C\u305D\u308C\u3092\u30A8\u30A4\u30EA\u30A2\u30B9\u3068\u3057\u3066\u89E3\u6C7A\u3057\u3088\u3046\u3068\u3057\u305F\u5834\u5408\uFF08\u540C\u540D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u3042\u308C\u3070\u30D5\u30A3\u30FC\u30EB\u30C9\u512A\u5148\u3067\u6B63\u5E38\u306B\u52D5\u304D\u307E\u3059\uFF09\u3002\n- JOIN \u3067\u8907\u6570\u306E\u30C6\u30FC\u30D6\u30EB\u306B\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u3042\u308B\u975E\u4FEE\u98FE\u540D\u3002\u30C6\u30FC\u30D6\u30EB\u5225\u540D\u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n- `GROUPING()` \u5217\u3084\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u3002\n- **\u96C6\u8A08\u3082\u30B0\u30EB\u30FC\u30D7\u5316\u3082\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u53C2\u7167**\uFF08`SELECT \u88FD\u54C1\u540D, \u500B\u6570, SUM(\u500B\u6570) \u2026 GROUP BY \u88FD\u54C1\u540D` \u306E `\u500B\u6570`\uFF09\u3002\u2192 [\u96C6\u8A08\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u306F\u66F8\u3051\u307E\u305B\u3093](#\u96C6\u8A08\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u306F\u66F8\u3051\u307E\u305B\u3093)\uFF08v3.57.0\u301C\uFF09\n\n> `GROUP BY ROLLUP(...)` / `GROUP BY GROUPING SETS (...)`\uFF08[\u5C0F\u8A08\u30FB\u7DCF\u8A08](#\u5C0F\u8A08\u7DCF\u8A08rollup--cube--grouping-sets--grouping)\uFF09\u306E grouping item \u306F**\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u307F**\u3067\u3001\u30A8\u30A4\u30EA\u30A2\u30B9\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u5F93\u6765\u3069\u304A\u308A\uFF09\u3002\n\n### SELECT \u5185\u3067\u306F\u540C\u3058 SELECT \u306E\u5225\u540D\u3092\u53C2\u7167\u3057\u307E\u305B\u3093\n\n**SELECT \u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u3001\u305D\u306E query block \u306E\u5165\u529B\u5217\u3092\u53C2\u7167\u3057\u307E\u3059\u3002** \u540C\u3058 SELECT \u53E5\u306B\u3042\u308B\u5225\u306E\u5217\u306E alias \u306F\u53C2\u7167\u3057\u307E\u305B\u3093\u3002\u5217\u3092\u5DE6\u304B\u3089\u53F3\u3078\u66F8\u3044\u305F\u9806\u5E8F\u3067\u3082\u610F\u5473\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n\n```sql\nSELECT \u500B\u6570 * 2 AS \u500D,\n SUM(\u500B\u6570) AS \u500B\u6570\nFROM APP100\nGROUP BY \u88FD\u54C1\u540D, \u500B\u6570\n```\n\n`\u500D` \u306E `\u500B\u6570` \u306F\u5165\u529B\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u3059\u3002\u96C6\u8A08\u7D50\u679C\u306E alias `\u500B\u6570` \u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306E alias \u3082\u540C\u3058 SELECT \u306E\u5225\u5F0F\u304B\u3089\u306F\u898B\u3048\u307E\u305B\u3093\u3002\n\n```sql\nSELECT \u500B\u6570 * 2 AS \u500D,\n ROW_NUMBER() OVER (ORDER BY $id) AS \u500B\u6570\nFROM APP100\n```\n\n\u96C6\u8A08\u30FB\u30A6\u30A3\u30F3\u30C9\u30A6\u306E alias \u304C\u5165\u529B\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u540C\u540D\u3067\u3082\u30A8\u30E9\u30FC\u3084\u8B66\u544A\u306B\u306F\u306A\u308A\u307E\u305B\u3093\u3002`HAVING` \u3068\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u901A\u5E38 `ORDER BY` \u306F\u5225\u306E\u53E5\u306A\u306E\u3067\u3001\u5F93\u6765\u3069\u304A\u308A SELECT alias \u3092\u53C2\u7167\u3067\u304D\u307E\u3059\u3002CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FB\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u5B9F\u4F53\u5316\u3057\u305F\u5F8C\u306F\u3001\u305D\u306E\u516C\u958B\u51FA\u529B\u5217\u304C\u4E0B\u6D41 query block \u306E\u901A\u5E38\u306E\u5165\u529B\u5217\u306B\u306A\u308A\u307E\u3059\u3002\n\n### \u96C6\u8A08\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u306F\u66F8\u3051\u307E\u305B\u3093\n\n**\uFF08\u5B9F\u6E2C\u30FBv3.57.0\uFF09**\n\n**\u96C6\u8A08\u3092\u542B\u3080\u30AF\u30A8\u30EA\u3067\u306F\u3001`SELECT` / `HAVING` / `ORDER BY` \u306B\u66F8\u3051\u308B\u5217\u53C2\u7167\u306F\u6B21\u306E\u3044\u305A\u308C\u304B\u3060\u3051\u3067\u3059\u3002**\n\n1. **`GROUP BY` \u306B\u66F8\u3044\u305F\u5217\u305D\u306E\u3082\u306E**\n2. **`GROUP BY` \u306B\u66F8\u3044\u305F\u5217\uFF08\u307E\u305F\u306F\u5F0F\uFF09\u3060\u3051\u304B\u3089\u8A08\u7B97\u3057\u305F\u5F0F**\n3. **\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u306E\u4E2D**\n\n**\u3069\u308C\u306B\u3082\u5F53\u3066\u306F\u307E\u3089\u306A\u3044\u5217\u306F\u3001\u30EC\u30B3\u30FC\u30C9\u3092\u53D6\u5F97\u3059\u308B\u524D\u306B\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002**\n\n```sql\nSELECT \u88FD\u54C1\u540D, \u500B\u6570, SUM(\u500B\u6570) AS \u5408\u8A08 FROM APP100 GROUP BY \u88FD\u54C1\u540D -- \u30A8\u30E9\u30FC\uFF08\u500B\u6570\uFF09\nSELECT \u88FD\u54C1\u540D, \u500B\u6570, SUM(\u500B\u6570) AS \u5408\u8A08 FROM APP100 -- \u30A8\u30E9\u30FC\uFF08GROUP BY \u304C\u7121\u304F\u3066\u3082\u540C\u3058\uFF09\nSELECT \u88FD\u54C1\u540D, SUM(\u500B\u6570) AS \u5408\u8A08 FROM APP100 GROUP BY \u88FD\u54C1\u540D HAVING \u500B\u6570 > 0 -- \u30A8\u30E9\u30FC\n```\n\n**`GROUP BY` \u304C\u7121\u304F\u3066\u3082\u96C6\u8A08\u95A2\u6570\u304C\u3042\u308C\u3070\u540C\u3058\u898F\u5247\u304C\u52B9\u304D\u307E\u3059**\uFF08\u5165\u529B\u5168\u4F53\u304C 1 \u30B0\u30EB\u30FC\u30D7\u306B\u306A\u308B\u305F\u3081\uFF09\u3002\n\n**\u901A\u308B\u5F62**\n\n```sql\nSELECT \u88FD\u54C1\u540D, SUM(\u500B\u6570) AS \u5408\u8A08 FROM APP100 GROUP BY \u88FD\u54C1\u540D\nSELECT DATE_FORMAT(\u65E5\u4ED8,'%Y-%m') AS \u5E74\u6708, SUM(\u500B\u6570) FROM APP100 GROUP BY \u5E74\u6708\nSELECT \u500B\u6570 + 1 AS \u52A0\u7B97, SUM(\u500B\u6570) FROM APP100 GROUP BY \u500B\u6570 -- \u30AD\u30FC\u3060\u3051\u304B\u3089\u8A08\u7B97\u3057\u305F\u5F0F\nSELECT YEAR(\u65E5\u4ED8) + 1 AS \u7FCC\u5E74, SUM(\u500B\u6570) FROM APP100 GROUP BY YEAR(\u65E5\u4ED8)\nSELECT \u88FD\u54C1\u540D, \u500B\u6570 FROM APP100 -- \u96C6\u8A08\u3082\u30B0\u30EB\u30FC\u30D7\u5316\u3082\u7121\u3044\u7D20\u306E SELECT\nSELECT SUM(\u500B\u6570) OVER () AS \u7DCF\u8A08 FROM APP100 -- \u30A6\u30A3\u30F3\u30C9\u30A6\u3060\u3051\n```\n\n**\u79FB\u884C**\n\n| \u3057\u305F\u3044\u3053\u3068 | \u66F8\u304D\u65B9 |\n|---|---|\n| \u30B0\u30EB\u30FC\u30D7\u3054\u3068\u306B 1 \u3064\u306B\u6C7A\u307E\u308B\u5024\u3092\u51FA\u3059 | **`MIN(<\u5217>)`** / `MAX(<\u5217>)` |\n| \u305D\u306E\u5217\u3067\u3082\u884C\u3092\u5206\u3051\u308B | **`GROUP BY` \u306B\u8DB3\u3059** |\n\n**`ANY_VALUE()` \u306F\u3042\u308A\u307E\u305B\u3093\u3002** `MIN()` / `MAX()` \u304C\u540C\u3058\u5F79\u5272\u3092\u679C\u305F\u3057\u307E\u3059\u3002\n\n> **v3.57.0 \u3088\u308A\u524D\u306F\u3001\u3053\u308C\u3089\u306F\u9ED9\u3063\u3066\u300C\u30B0\u30EB\u30FC\u30D7\u306E\u5148\u982D\u30EC\u30B3\u30FC\u30C9\u306E\u5024\u300D\u3092\u8FD4\u3057\u3066\u3044\u307E\u3057\u305F\u3002**\n> **`SELECT \u88FD\u54C1\u540D, \u500B\u6570, SUM(\u500B\u6570) \u2026 GROUP BY \u88FD\u54C1\u540D` \u306E `\u500B\u6570` \u306F\u3001\n> \u305D\u306E\u30B0\u30EB\u30FC\u30D7\u306E 220 \u4EF6\u306E\u3046\u3061 1 \u4EF6\u306E\u5024**\u3067\u3057\u305F\u3002\u30A8\u30E9\u30FC\u3082\u8B66\u544A\u3082\u51FA\u307E\u305B\u3093\u3067\u3057\u305F\u3002\n\n> **`ksql_validate` \u306F\u69CB\u6587\u3068\u9759\u7684\u691C\u67FB\u3060\u3051**\u3092\u884C\u3044\u3001kintone \u306E\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3092\u8AAD\u307F\u307E\u305B\u3093\u3002\n> **\u540C\u540D\u306E\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u3068 SELECT \u30A8\u30A4\u30EA\u30A2\u30B9\u306E\u3069\u3061\u3089\u3078 `GROUP BY` \u304C\u89E3\u6C7A\u3055\u308C\u308B\u304B\u306F\u3001\n> \u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u304C\u8981\u308B**\u305F\u3081\u3001`ksql_validate` \u304C\u6210\u529F\u3057\u3066\u3082\u5B9F\u884C\u6642\u306B\u3053\u306E\u30A8\u30E9\u30FC\u306B\u306A\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n> **`ksql_explain` \u3068\u5B9F\u884C\u306F\u6700\u7D42\u5224\u65AD\u3092\u3057\u307E\u3059\u3002**\n\n> **`ROLLUP` / `CUBE` / `GROUPING SETS` \u3067\u306F\u4EE5\u524D\u304B\u3089\u30A8\u30E9\u30FC**\u306B\u306A\u3063\u3066\u3044\u307E\u3057\u305F\u3002\n> v3.57.0 \u3067 ordinary `GROUP BY` \u3068 `GROUP BY` \u7121\u3057\u96C6\u8A08\u306B\u3082\u540C\u3058\u898F\u5247\u304C\u52B9\u304D\u307E\u3059\u3002\n\n### \u96C6\u8A08\u95A2\u6570\n\n| \u95A2\u6570 | \u610F\u5473 | NULL/\u7A7A\u306E\u6271\u3044 |\n|------|------|---------------|\n| `COUNT(*)` | \u5168\u884C\u6570 | NULL \u3092\u542B\u3080\u5168\u884C\u3092\u6570\u3048\u308B |\n| `COUNT(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u7A7A\u3067\u306A\u3044\u884C\u6570 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `SUM(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5408\u8A08 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `AVG(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5E73\u5747 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `MAX(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u6700\u5927\u5024 | NULL \u306F\u30B9\u30AD\u30C3\u30D7\u3002\u9078\u629E\u3055\u308C\u305F\u7A7A\u30BB\u30EB\u306F canonical empty band \u306E\u5019\u88DC |\n| `MIN(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u6700\u5C0F\u5024 | NULL \u306F\u30B9\u30AD\u30C3\u30D7\u3002\u9078\u629E\u3055\u308C\u305F\u7A7A\u30BB\u30EB\u306F canonical empty band \u306E\u5019\u88DC |\n| `GROUP_CONCAT([DISTINCT] \u5F15\u6570 [SEPARATOR '\u533A\u5207\u308A'])` | \u6587\u5B57\u5217\u9023\u7D50 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `VAR_POP([DISTINCT] \u5F15\u6570)` | \u6BCD\u96C6\u56E3\u5206\u6563 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `VAR_SAMP([DISTINCT] \u5F15\u6570)` | \u6A19\u672C\u5206\u6563 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `STDDEV_POP([DISTINCT] \u5F15\u6570)` | \u6BCD\u96C6\u56E3\u6A19\u6E96\u504F\u5DEE | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `STDDEV_SAMP([DISTINCT] \u5F15\u6570)` | \u6A19\u672C\u6A19\u6E96\u504F\u5DEE | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `MEDIAN([DISTINCT] \u5F15\u6570)` | \u4E2D\u592E\u5024 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `MODE(\u5F15\u6570)` | \u6700\u983B\u5024 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u5019\u88DC\u304B\u3089\u9664\u5916 |\n\n> **`MAX`/`MIN`/`MODE` \u306E\u6BD4\u8F03\u898F\u5247**: \u5B9F\u30A2\u30D7\u30EA\u306E NUMBER \u3068\u6570\u5024\u5F62\u5F0F CALC \u306F\u6570\u5024\u9806\u3001\u30C6\u30AD\u30B9\u30C8\u30FB\u9078\u629E\u30FB\u65E5\u6642\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u6587\u5B57\u5217\u5F62\u5F0F CALC \u306F\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3001\u9078\u629E\u80A2\u30FBSTATUS \u306F\u5B9A\u7FA9\u9806\u3067\u6BD4\u8F03\u3057\u307E\u3059\u3002\u65E5\u6642\u306E\u6642\u7CFB\u5217\u9806\u3068\u4E00\u81F4\u3059\u308B\u306E\u306F kintone \u304C\u8FD4\u3059\u6B63\u898F\u5316\u5F62\u5F0F\uFF08DATE=`YYYY-MM-DD`\u3001TIME=`HH:mm`\u3001DATETIME/\u4F5C\u6210\u65E5\u6642/\u66F4\u65B0\u65E5\u6642=`...Z`\uFF09\u304C\u524D\u63D0\u3067\u3059\u3002\u78BA\u5B9A\u3067\u304D\u305F\u578B\u30E1\u30BF\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB/CTE\u306B\u3082\u4F1D\u64AD\u3057\u307E\u3059\u3002`CASE` \u5F15\u6570\u306F\u5168\u5206\u5C90\u304C\u540C\u3058\u578B\u306A\u3089\u305D\u306E\u578B\u3001\u578B\u304C\u6DF7\u5728\u3059\u308B\u304B\u4E0D\u660E\u306A\u3089\u6587\u5B57\u5217\u3068\u3057\u3066\u6BD4\u8F03\u3057\u307E\u3059\u3002`MODE` \u306E\u7B97\u8853\u5F0F\u5F15\u6570\u306F\u6570\u5024\u9806\u3001\u578B\u30E1\u30BF\u4E0D\u660E\u306E\u76F4\u63A5\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u5B89\u5168\u5074\u306E\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3067\u3059\u3002\n\n```sql\nSELECT COUNT(*) AS \u7DCF\u4EF6\u6570, SUM(\u91D1\u984D) AS \u5408\u8A08\u91D1\u984D, AVG(\u91D1\u984D) AS \u5E73\u5747\u91D1\u984D\nFROM APP100\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86'\n```\n\n### \u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u306B\u5F0F\u3092\u6307\u5B9A\uFF08v3.16.0\uFF09\n\n\u5F15\u6570\u3092\u53D6\u308B\u5168 12 \u96C6\u8A08\u95A2\u6570\u306B\u3001\u5F93\u6765\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u7B97\u8853\u5F0F\u30FB\u95A2\u6570\u547C\u3073\u51FA\u3057\u306B\u52A0\u3048\u3066\u3001`CASE` \u5F0F\u30FB`||` \u9023\u7D50\u30FB\u30B9\u30AB\u30E9\u30FC\u5909\u6570 `@var` \u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u95A2\u6570\u3054\u3068\u306E\u7A7A\u5024\u30FB\u5B8C\u5168\u5165\u529B\u30FB`DISTINCT` \u898F\u7D04\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n\n```sql\n-- \u6761\u4EF6\u4ED8\u304D\u96C6\u8A08\nSELECT\n \u90E8\u7F72,\n SUM(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) AS \u53D7\u6CE8\u58F2\u4E0A,\n COUNT(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8' THEN 1 END) AS \u53D7\u6CE8\u4EF6\u6570\nFROM APP100\nGROUP BY \u90E8\u7F72\n\n-- \u30AB\u30C6\u30B4\u30EA\u3092\u5217\u3078\u5C55\u958B\u3059\u308B\u6A2A\u6301\u3061\u30D4\u30DC\u30C3\u30C8\nSELECT\n \u90E8\u7F72,\n SUM(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) AS \u53D7\u6CE8,\n SUM(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u63D0\u6848\u4E2D' THEN \u58F2\u4E0A ELSE 0 END) AS \u63D0\u6848\u4E2D\nFROM APP100\nGROUP BY \u90E8\u7F72\n```\n\n> **\u96C6\u8A08\u3059\u308B\u5024\u304C 1 \u3064\u3082\u7121\u3044\u3068\u304D\u306E\u623B\u308A\u5024\u306F\u3001\u95A2\u6570\u3054\u3068\u306B\u9055\u3044\u307E\u3059\u3002** `GROUP BY` \u306E\u7121\u3044\u96C6\u8A08\u306F\u5BFE\u8C61\u304C 0 \u884C\u3067\u3082 1 \u884C\u3092\u8FD4\u3057\u307E\u3059\u304C\u3001\u305D\u306E\u5024\u306F `0` \u3068\u306F\u9650\u308A\u307E\u305B\u3093\uFF08\u2192 [\xA78\u300C0 \u4EF6\u6642\u306E\u6319\u52D5\u300D](#0-\u4EF6\u6642\u306E\u6319\u52D5)\uFF09\u3002\n\n- `CASE` \u306E `ELSE` \u3092\u7701\u7565\u3057\u305F\u975E\u4E00\u81F4\u884C\u306F\u96C6\u8A08\u304B\u3089\u9664\u5916\u3055\u308C\u307E\u3059\u3002\u3057\u305F\u304C\u3063\u3066 `COUNT(CASE WHEN \u6761\u4EF6 THEN 1 END)` \u306F\u4E00\u81F4\u4EF6\u6570\u3067\u3059\n- \u6761\u4EF6\u306B\u4E00\u81F4\u3057\u3066\u9078\u629E\u3055\u308C\u305F\u7A7A\u30BB\u30EB\u3068\u3001\u660E\u793A\u3057\u305F `ELSE ''` \u306F\u3001`MIN` / `MAX` \u3067\u306F\u65E2\u5B58\u306E canonical empty band \u306E\u5019\u88DC\u306B\u6B8B\u308A\u307E\u3059\u3002`SUM` / `AVG` / `GROUP_CONCAT` / \u7D71\u8A08\u96C6\u7D04 / `MODE` \u306E\u7A7A\u5024\u898F\u7D04\u306F\u5F93\u6765\u3069\u304A\u308A\u3067\u3059\n- \u6BD4\u8F03\u30FB\u8FF0\u8A9E\u305D\u306E\u3082\u306E\u3092\u5024\u306B\u3059\u308B `SUM(\u58F2\u4E0A > 0)` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002`SUM(CASE WHEN \u58F2\u4E0A > 0 THEN 1 ELSE 0 END)` \u306E\u3088\u3046\u306B\u5024\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08ParseError \u3067\u3082\u3053\u306E\u5F62\u3092\u6848\u5185\u3057\u307E\u3059\uFF09\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u3068\u96C6\u8A08\u306E\u5165\u308C\u5B50\uFF08`SUM(SUM(x))`\uFF09\u306F\u5F15\u6570\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`MODE(DISTINCT ...)` \u3082\u5F15\u304D\u7D9A\u304D\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n- `HAVING SUM(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) > 1000000` \u3082\u540C\u3058\u66F8\u304D\u65B9\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u65E2\u5B58\u306E\u7B97\u8853\u5F0F\u5F15\u6570\u306E\u6319\u52D5\u306F\u5909\u308F\u308A\u307E\u305B\u3093\n\n### \u96C6\u8A08\u7D50\u679C\u306E\u7B97\u8853\u5F0F\n\n\u96C6\u8A08\u3092\u542B\u3080\u7B97\u8853\u5F0F\u306F**\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308A**\u3001\u88AB\u6F14\u7B97\u5B50\u306B\u306F\u96C6\u8A08\u95A2\u6570\u30FB\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u30FB`@\u5909\u6570`\u30FB\n**ordinary `GROUP BY` \u306B\u66F8\u3044\u305F\u8868\u8A18\u3068\u4E00\u81F4\u3059\u308B\u5217**\u3092\u66F8\u3051\u307E\u3059\u3002SELECT \u5217\u3068 `HAVING` \u306E\u4E21\u65B9\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT \u5206\u985E, SUM(\u58F2\u4E0A) * \u5358\u4FA1 FROM APP1 GROUP BY \u5206\u985E, \u5358\u4FA1 -- \u53EF\nSELECT \u5206\u985E, SUM(\u58F2\u4E0A) * \u62C5\u5F53\u8005 FROM APP1 GROUP BY \u5206\u985E -- \u4E0D\u53EF\uFF08GROUP BY \u306B\u7121\u3044\uFF09\nSELECT \u5206\u985E, \u5358\u4FA1 * SUM(\u58F2\u4E0A) FROM APP1 GROUP BY \u5206\u985E, \u5358\u4FA1 -- \u4E0D\u53EF\uFF08\u96C6\u8A08\u95A2\u6570\u59CB\u307E\u308A\u3067\u306A\u3044\uFF09\n```\n\n\u4FEE\u98FE\u540D\u3082\u8868\u8A18\u3092\u5408\u308F\u305B\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u305F\u3068\u3048\u3070 `GROUP BY m.\u5358\u4FA1` \u306B\u5BFE\u3057\u3066\u4F7F\u3048\u308B\u306E\u306F\n`SUM(t.\u6570\u91CF) * m.\u5358\u4FA1` \u3067\u3042\u308A\u3001\u975E\u4FEE\u98FE\u306E `SUM(t.\u6570\u91CF) * \u5358\u4FA1` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n`GROUP BY` \u306E\u5F0F\u30FB\u95A2\u6570\u30FBSELECT alias \u3082\u3001\u3053\u306E\u4F4D\u7F6E\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\n`ROLLUP` / `CUBE` / `GROUPING SETS` \u3067\u306F\u3001\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u3051\u307E\u305B\u3093\n\uFF08\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u3067\u5024\u304C\u5B9A\u307E\u3089\u306A\u3044\u305F\u3081\uFF09\u3002\n\n**`SUM(a) * \u5358\u4FA1` \u3068 `SUM(a * \u5358\u4FA1)` \u306F\u540C\u3058\u5024\u306B\u306A\u308B\u3068\u306F\u9650\u308A\u307E\u305B\u3093\u3002** \u5C0F\u6570\u3067\u306F\u4E38\u3081\u306E\u4F4D\u7F6E\u304C\u9055\u3044\u3001\n\u975E\u6570\u5024\u306E\u5217\u3067\u306F\u524D\u8005\u304C `NaN`\u3001\u5F8C\u8005\u304C `0` \u306B\u306A\u308A\u307E\u3059\u3002\n\n### \u5C0F\u8A08\u30FB\u7DCF\u8A08\uFF08ROLLUP / CUBE / GROUPING SETS / GROUPING\uFF09\n\n`GROUP BY ROLLUP(a[, b ...])`\u3001`GROUP BY CUBE(a[, b ...])`\u3001`GROUP BY GROUPING SETS ((...), (...), ())` \u306F\u3001\u660E\u7D30\u306B\u52A0\u3048\u3066\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u3092\u540C\u3058\u7D50\u679C\u3078\u51FA\u529B\u3057\u307E\u3059\u30021 \u30AF\u30A8\u30EA\u3067\u5FC5\u8981\u306A\u968E\u5C64\u3092\u307E\u3068\u3081\u3066\u96C6\u8A08\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- \u5358\u4E00\u5217 ROLLUP: \u4F1A\u793E\u5225\u660E\u7D30\u3068\u7DCF\u8A08\nSELECT \u4F1A\u793E\u540D, SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08\nFROM APP100\nGROUP BY ROLLUP(\u4F1A\u793E\u540D)\n\n-- \u8907\u6570\u5217 ROLLUP: \u5730\u57DF\xD7\u4F1A\u793E\u660E\u7D30\u3001\u5730\u57DF\u5C0F\u8A08\u3001\u7DCF\u8A08\nSELECT \u5730\u57DF, \u4F1A\u793E\u540D, SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08\nFROM APP100\nGROUP BY ROLLUP(\u5730\u57DF, \u4F1A\u793E\u540D)\n\n-- CUBE: \u660E\u7D30\u306B\u52A0\u3048\u3001\u5730\u57DF\u5C0F\u8A08\u30FB\u4F1A\u793E\u5C0F\u8A08\u30FB\u7DCF\u8A08\u3092\u3059\u3079\u3066\u51FA\u529B\nSELECT \u5730\u57DF, \u4F1A\u793E\u540D, SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08\nFROM APP100\nGROUP BY CUBE(\u5730\u57DF, \u4F1A\u793E\u540D)\n\n-- \u5FC5\u8981\u306A\u968E\u5C64\u3060\u3051\u3092\u660E\u793A\nSELECT \u5730\u57DF, \u4F1A\u793E\u540D, SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08\nFROM APP100\nGROUP BY GROUPING SETS ((\u5730\u57DF, \u4F1A\u793E\u540D), (\u5730\u57DF), ())\n```\n\n`ROLLUP(a, b)` \u306F `(a, b)`\u3001`(a)`\u3001`()` \u306E\u968E\u5C64\u3060\u3051\u3092\u4F5C\u308A\u307E\u3059\u3002`CUBE(a, b)` \u306F\u52A0\u3048\u3066 `(b)` \u3082\u4F5C\u308A\u3001`(a, b)`\u30FB`(a)`\u30FB`(b)`\u30FB`()` \u306E\u5168 `2^n` \u7D44\u5408\u305B\uFF08\u5404\u8EF8\u306E\u5C0F\u8A08\u3068\u7DCF\u8A08\uFF09\u3092\u51FA\u529B\u3057\u307E\u3059\u3002\u4E21\u8EF8\u306E\u5C0F\u8A08\u3092\u63C3\u3048\u305F\u3044\u3068\u304D\u306B\u4F7F\u3044\u307E\u3059\u3002\n\n`GROUPING(field)` \u306F\u3001\u305D\u306E\u884C\u3067 `field` \u304C\u96C6\u7D04\u3055\u308C\u305F super-aggregate \u884C\u306A\u3089 `1`\u3001\u30B0\u30EB\u30FC\u30D7\u30AD\u30FC\u3068\u3057\u3066\u6B8B\u3063\u3066\u3044\u308C\u3070 `0` \u3092\u8FD4\u3057\u307E\u3059\u3002\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u306E grouped \u5217\u306F\u7A7A\u6587\u5B57\u306B\u306A\u308B\u305F\u3081\u3001\u5B9F\u30C7\u30FC\u30BF\u306E\u7A7A\u30BB\u30EB\u3068\u306E\u5224\u5225\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u5024\u3067\u306F\u306A\u304F `GROUPING(field)` \u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\u901A\u5E38\u306E `ORDER BY GROUPING(\u4F1A\u793E\u540D)` \u3092\u6607\u9806\u3067\u6307\u5B9A\u3059\u308B\u3068\u3001\u7DCF\u8A08\u884C\u3092\u672B\u5C3E\u3078\u5BC4\u305B\u3089\u308C\u307E\u3059\uFF08\xA710 \u3082\u53C2\u7167\uFF09\u3002\n\n```sql\nSELECT\n CASE WHEN GROUPING(\u4F1A\u793E\u540D) = 1 THEN '\u5408\u8A08' ELSE \u4F1A\u793E\u540D END AS \u4F1A\u793E\u540D,\n GROUPING(\u4F1A\u793E\u540D) AS grouping_company,\n COUNT(*) AS \u6848\u4EF6\u6570,\n SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08,\n SUM(CASE WHEN \u5546\u8AC7\u30D5\u30A7\u30FC\u30BA = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) AS \u53D7\u6CE8\u6E08\u58F2\u4E0A,\n SUM(CASE WHEN \u5546\u8AC7\u30D5\u30A7\u30FC\u30BA IN ('\u63D0\u6848\u4E2D','\u5185\u793A') THEN \u58F2\u4E0A ELSE 0 END) AS \u898B\u8FBC\u58F2\u4E0A\nFROM APP100\nGROUP BY ROLLUP(\u4F1A\u793E\u540D)\nORDER BY GROUPING(\u4F1A\u793E\u540D), \u58F2\u4E0A\u5408\u8A08 DESC\n```\n\n\u3053\u306E\u4F8B\u306F B64 \u306E\u6761\u4EF6\u4ED8\u304D\u96C6\u8A08\u3068\u4F75\u7528\u3057\u3001\u4F1A\u793E\u5225\u660E\u7D30\u3068\u7DCF\u8A08\u3092\u8FD4\u3057\u307E\u3059\u3002`grouping_company` \u306F\u5B9F\u30C7\u30FC\u30BF\u3068\u7DCF\u8A08\u884C\u3092\u6A5F\u68B0\u7684\u306B\u5224\u5225\u3059\u308B\u5024\u3067\u3059\u3002\n\n- grouping item\uFF08`ROLLUP` / `CUBE` / `GROUPING SETS` \u306E\u8981\u7D20\uFF09\u3068 `GROUPING()` \u306E\u5F15\u6570\u306F\u3001APP \u306E\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u307E\u305F\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3060\u3051\u3067\u3059\u3002\u5F0F\u30FBSELECT alias\u30FBCTE\uFF0F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5B9F\u4F53\u5316\u5217\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n- `ROLLUP` / `CUBE` / `GROUPING SETS` \u306E\u5165\u308C\u5B50\u3001\u901A\u5E38 item \u3068 grouping-set \u306E\u6DF7\u5728\u3001`GROUPING()` \u306E\u5F0F\u5F15\u6570\u30FB\u8907\u6570\u5F15\u6570\u3001`GROUPING_ID` \u306F\u672A\u5BFE\u5FDC\u3067\u3059\n- `GROUPING()` \u306F SELECT \u5217\u3001SELECT \u306E CASE \u6761\u4EF6\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u901A\u5E38 `ORDER BY`\u3001`HAVING`\uFF08`HAVING` \u306F v3.18.0 \u4EE5\u964D\uFF09\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002`HAVING GROUPING(\u4F1A\u793E\u540D) = 1` \u306F\u7DCF\u8A08\u884C\u3060\u3051\u3001`= 0` \u306F\u660E\u7D30\uFF0B\u5C0F\u8A08\u3060\u3051\u306B\u7D5E\u308A\u8FBC\u3081\u307E\u3059\n- `SELECT DISTINCT` \u3092\u4F75\u7528\u3067\u304D\u307E\u3059\uFF08v3.18.0 \u4EE5\u964D\uFF09\u3002`KORDER BY`\u30FB\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u3068\u306E\u4F75\u7528\u306F\u3067\u304D\u307E\u305B\u3093\n- \u5C0F\u8A08\u30FB\u7DCF\u8A08\u306F\u5168\u5165\u529B\u306B\u4F9D\u5B58\u3059\u308B\u305F\u3081\u3001\u5E38\u306B\u5B8C\u5168\u5165\u529B\u304C\u5FC5\u8981\u3067\u3059\u3002`onLimit=truncate` \u306F\u4F7F\u7528\u3067\u304D\u305A\u3001\u53D6\u5F97\u4E0A\u9650\u3078\u5230\u9054\u3057\u305F\u5834\u5408\u306F\u90E8\u5206\u7D50\u679C\u3092\u8FD4\u3055\u305A\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002`SELECT DISTINCT`\u30FB`HAVING`\u30FB`LIMIT` \u3067\u7D50\u679C\u884C\u304C\u6E1B\u308B\u898B\u8FBC\u307F\u3067\u3082\u4E0A\u9650\u306F\u7DE9\u307F\u307E\u305B\u3093\n- \u5C55\u958B\u5F8C\u306E grouping set \u6570\u3001grouping item \u6570\u3001\u751F\u6210\u884C\u6570\u306B\u306F\u5B89\u5168\u4E0A\u9650\u304C\u3042\u308A\u307E\u3059\u3002\u8D85\u904E\u6642\u306F planning \u307E\u305F\u306F\u5B9F\u884C\u6642\u306B fail-closed \u3067\u30A8\u30E9\u30FC\u3068\u306A\u308A\u3001\u90E8\u5206\u7D50\u679C\u3092\u8FD4\u3057\u307E\u305B\u3093\u3002`CUBE(a, b, ...)` \u306F\u5C55\u958B\u5F8C `2^n` \u306E grouping set \u3092\u4F5C\u308B\u305F\u3081\u3001\u4E0A\u9650\u3092\u8D85\u3048\u308B\u5217\u6570\uFF08\u65E2\u5B9A\u4E0A\u9650\u3067\u306F 7 \u5217\u4EE5\u4E0A\uFF09\u306F\u53D6\u5F97\u524D\u306B\u62D2\u5426\u3055\u308C\u307E\u3059\n- \u91CD\u8907\u3059\u308B grouping set \u306F\u9664\u53BB\u305B\u305A\u3001\u305D\u306E\u5206\u306E\u7D50\u679C\u884C\u3092\u4FDD\u6301\u3057\u307E\u3059\u3002`SELECT DISTINCT` \u306F grouping set \u81EA\u4F53\u3092\u6D88\u3055\u305A\u3001SELECT \u51FA\u529B\u5217\u306E\u5024\u304C\u5B8C\u5168\u4E00\u81F4\u3059\u308B\u884C\u3060\u3051\u3092\u9664\u53BB\u3057\u307E\u3059\u3002`GROUPING()` \u3092 SELECT \u3057\u3066\u3044\u308C\u3070\u660E\u7D30\uFF08`0`\uFF09\u3068\u5C0F\u8A08\u30FB\u7DCF\u8A08\uFF08`1`\uFF09\u306F\u5225\u884C\u306E\u307E\u307E\u6B8B\u308A\u3001SELECT \u3057\u3066\u304A\u3089\u305A\u5168\u6295\u5F71\u5024\u304C\u540C\u3058\u884C\u306F 1 \u884C\u306B\u307E\u3068\u307E\u308A\u307E\u3059\n\n### GROUP_CONCAT\n\n`GROUP_CONCAT` \u306F\u30B0\u30EB\u30FC\u30D7\u5185\u306E\u7A7A\u3067\u306A\u3044\u5024\u3092\u53CE\u96C6\u9806\u306B\u9023\u7D50\u3057\u307E\u3059\u3002\u65E2\u5B9A\u306E\u533A\u5207\u308A\u6587\u5B57\u306F `,` \u3067\u3059\u3002\n\n```sql\nSELECT \u9867\u5BA2ID, GROUP_CONCAT(\u62C5\u5F53\u8005) AS \u62C5\u5F53\u8005\u4E00\u89A7\nFROM APP100 GROUP BY \u9867\u5BA2ID\n\nSELECT \u9867\u5BA2ID, GROUP_CONCAT(DISTINCT \u696D\u7A2E SEPARATOR ' / ') AS \u696D\u7A2E\u4E00\u89A7\nFROM APP100 GROUP BY \u9867\u5BA2ID\n```\n\n- `DISTINCT` \u306F\u6587\u5B57\u5217\u3068\u3057\u3066\u91CD\u8907\u3092\u9664\u304D\u3001\u6700\u521D\u306B\u73FE\u308C\u305F\u9806\u5E8F\u3092\u4FDD\u3061\u307E\u3059\n- `SEPARATOR` \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002`SEPARATOR ''` \u306F\u533A\u5207\u308A\u306A\u3057\u3067\u3059\n- `GROUP_CONCAT(*)` \u3068 `GROUP_CONCAT(DISTINCT *)` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n- \u95A2\u6570\u5185\u306E `ORDER BY` \u306F\u672A\u5BFE\u5FDC\u3067\u3059\u3002\u9023\u7D50\u9806\u306F WHERE / JOIN \u9069\u7528\u5F8C\u306E\u53CE\u96C6\u9806\u3067\u3042\u308A\u3001\u53D6\u5F97\u9806\u304C\u5909\u308F\u308C\u3070\u7D50\u679C\u3082\u5909\u308F\u308A\u5F97\u307E\u3059\n- \u7D50\u679C\u3092\u9577\u3055\u3067\u5207\u308A\u6368\u3066\u307E\u305B\u3093\u3002\u66F8\u304D\u8FBC\u307F\u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u6700\u5927\u6587\u5B57\u6570\u3092\u8D85\u3048\u305F\u5834\u5408\u306F\u66F8\u304D\u8FBC\u307F\u6642\u306E\u691C\u8A3C\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\n- `GROUP_CONCAT` \u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F `` `GROUP_CONCAT` `` \u3068\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002`SEPARATOR` \u306F\u901A\u5E38\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u3068\u3057\u3066\u3082\u4F7F\u3048\u307E\u3059\n\n### \u7D71\u8A08\u96C6\u7D04\n\n`VAR_POP` / `VAR_SAMP` / `STDDEV_POP` / `STDDEV_SAMP` / `MEDIAN` \u306F\u6570\u5024\u5206\u5E03\u3092\u3001`MODE` \u306F\u6587\u5B57\u5217\u306E\u5B8C\u5168\u4E00\u81F4\u5358\u4F4D\u3067\u6700\u983B\u5024\u3092\u96C6\u8A08\u3057\u307E\u3059\u3002\u5206\u6563\u3068\u6A19\u6E96\u504F\u5DEE\u306F Welford \u6CD5\u3001\u4E2D\u592E\u5024\u306F\u6570\u5024\u6607\u9806\u3067\u6C42\u3081\u307E\u3059\u3002\u5076\u6570\u4EF6\u306E\u4E2D\u592E\u5024\u306F\u4E2D\u592E 2 \u5024\u306E binary64 \u5E73\u5747\u3067\u3059\u3002\n\n```sql\nSELECT \u90E8\u7F72, STDDEV_SAMP(\u91D1\u984D) AS \u6A19\u6E96\u504F\u5DEE, MEDIAN(\u91D1\u984D) AS \u4E2D\u592E\u5024\nFROM APP100\nGROUP BY \u90E8\u7F72\n\nSELECT \u90E8\u7F72, MODE(\u30B9\u30C6\u30FC\u30BF\u30B9) AS \u6700\u983B\u30B9\u30C6\u30FC\u30BF\u30B9\nFROM APP100\nGROUP BY \u90E8\u7F72\n```\n\n- \u53CE\u96C6\u3057\u305F\u5024\u306B\u6570\u5024\u5316\u3067\u304D\u306A\u3044\u5024\u307E\u305F\u306F `Infinity` / `-Infinity` \u304C\u3042\u308C\u3070 `ArgumentError` \u306B\u306A\u308A\u307E\u3059\n- 6 \u95A2\u6570\u306F\u5B8C\u5168\u5165\u529B\u3092\u5FC5\u8981\u3068\u3057\u307E\u3059\u3002`onLimit=truncate` \u3092\u6307\u5B9A\u3057\u3066\u3082\u4E0A\u9650\u5230\u9054\u6642\u306F\u30A8\u30E9\u30FC\u3068\u306A\u308A\u3001\u90E8\u5206\u96C6\u5408\u306E\u7D71\u8A08\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\n- `DISTINCT` \u306F Number \u5316\u5F8C\u306E\u6570\u5024\u540C\u5024\u3067\u91CD\u8907\u3092\u9664\u304D\u307E\u3059\u3002\u305F\u3068\u3048\u3070 `\"1\"` \u3068 `\"01\"` \u306F\u540C\u3058\u5024\u3067\u3059\u3002\u65E2\u5B58\u306E 6 \u96C6\u8A08\uFF08`COUNT` / `SUM` / `AVG` / `MIN` / `MAX` / `GROUP_CONCAT`\uFF09\u306F\u5F93\u6765\u3069\u304A\u308A\u6587\u5B57\u5217\u5358\u4F4D\u3067\u3059\n- `*` \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u5F15\u6570\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3001\u7B97\u8853\u5F0F\u3001\u307E\u305F\u306F\u524D\u63B2\u306E `CASE` \u5F0F\u30FB`||` \u9023\u7D50\u30FB\u30B9\u30AB\u30E9\u30FC\u5909\u6570\u3092 1 \u3064\u6307\u5B9A\u3057\u307E\u3059\n- `MODE` \u306E\u540C\u983B\u5EA6\u5019\u88DC\u306F\u5F15\u6570\u578B\u306E canonical \u9806\u3067\u6700\u5C0F\u306E\u5024\u3092\u9078\u3073\u307E\u3059\u3002canonical \u540C\u5024\uFF08\u6570\u5024\u5217\u306E `\"1\"` \u3068 `\"01\"` \u306A\u3069\uFF09\u306F raw \u6587\u5B57\u5217\u306E\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3092\u4E8C\u6B21\u30AD\u30FC\u306B\u3059\u308B\u305F\u3081\u3001\u5165\u529B\u9806\u306B\u3088\u3089\u305A\u6C7A\u5B9A\u7684\u3067\u3059\n- `MODE` \u306F\u672A\u9078\u629E\uFF08\u7A7A\u30BB\u30EB\uFF09\u3092\u5019\u88DC\u306B\u542B\u3081\u307E\u305B\u3093\u3002\u672A\u9078\u629E\u4EF6\u6570\u306F `COUNT(*) - COUNT(\u30D5\u30A3\u30FC\u30EB\u30C9)` \u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u672A\u9078\u629E\u3092\u30AB\u30C6\u30B4\u30EA\u5316\u3059\u308B\u5834\u5408\u306F `MODE(CASE WHEN \u30D5\u30A3\u30FC\u30EB\u30C9 = '' THEN '\u672A\u9078\u629E' ELSE \u30D5\u30A3\u30FC\u30EB\u30C9 END)` \u3068\u660E\u793A\u3067\u304D\u307E\u3059\n- `MODE(DISTINCT x)` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002`MODE(COALESCE(\u30D5\u30A3\u30FC\u30EB\u30C9, '\u672A\u9078\u629E'))` \u306F\u7B97\u8853\u5F0F\u6271\u3044\u3067\u6570\u5024\u8A55\u4FA1\u3055\u308C\u308B\u305F\u3081\u3001\u3053\u306E\u7528\u9014\u3067\u306F\u524D\u9805\u306E `CASE` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\n- \u7121\u5370\u306E `STDDEV` / `VARIANCE` \u306F\u5225\u540D\u3067\u306F\u306A\u304F\u975E\u5BFE\u5FDC\u3067\u3059\u3002\u6BCD\u96C6\u56E3\u30FB\u6A19\u672C\u306E\u3069\u3061\u3089\u304B\u304C\u65B9\u8A00\u3067\u7570\u306A\u308B\u305F\u3081\u3001`_POP` / `_SAMP` \u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\n- 6 \u95A2\u6570\u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002`MODE` \u3092\u542B\u3080\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F `` `MODE` `` \u306E\u3088\u3046\u306B\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002`MODEL` \u306A\u3069\u9577\u3044\u8B58\u5225\u5B50\u306F\u5F71\u97FF\u3092\u53D7\u3051\u307E\u305B\u3093\n\n### DISTINCT \u4ED8\u304D\u96C6\u8A08\n\n```sql\nSELECT COUNT(DISTINCT \u62C5\u5F53\u8005) AS \u62C5\u5F53\u8005\u6570 FROM APP100\nSELECT COUNT(DISTINCT \u90FD\u9053\u5E9C\u770C) AS \u90FD\u9053\u5E9C\u770C\u6570 FROM APP100\n```\n\n### 0 \u4EF6\u6642\u306E\u6319\u52D5\n\nGROUP BY \u306E\u306A\u3044\u96C6\u8A08\u30AF\u30A8\u30EA\u306F\u3001\u5BFE\u8C61\u304C 0 \u4EF6\u3067\u3082**\u5E38\u306B 1 \u884C**\u3092\u8FD4\u3057\u307E\u3059\uFF08SQL \u6A19\u6E96\u6E96\u62E0\uFF09\u3002\n\n```sql\n-- \u8A72\u5F53 0 \u4EF6\u3067\u3082\u300CCOUNT(*) = 0\u300D\u306E 1 \u884C\u304C\u8FD4\u308B\nSELECT COUNT(*) FROM APP100 WHERE \u7570\u5E38\u30D5\u30E9\u30B0 = '1'\n```\n\n**\u3053\u306E\u8868\u304C\u96C6\u8A08\u306E\u623B\u308A\u5024\u306E\u6B63\u672C\u3067\u3059**\uFF08\u5B9F\u6E2C\u30FBv3.54.3\uFF09\u3002\u672C\u66F8\u306E\u4ED6\u306E\u7B87\u6240\u306F\u5024\u3092\u6301\u305F\u305A\u3001\u3053\u3053\u3092\u53C2\u7167\u3057\u307E\u3059\u3002\n\n| \u96C6\u8A08 | 0 \u4EF6\u6642\u306E\u5024 | \u6A19\u6E96 SQL |\n|------|-----------|---|\n| `COUNT(*)` / `COUNT(f)` / `COUNT(DISTINCT f)` | `0` | `0`\uFF08\u4E00\u81F4\uFF09 |\n| `SUM` / `AVG` | `0` | `NULL`\uFF08**\u65B9\u8A00\u5DEE**\uFF09 |\n| `MAX` / `MIN` | `\"\"`\uFF08\u7A7A\u6587\u5B57\u30FB**v3.54.0 \u3067 `0` \u304B\u3089\u5909\u66F4**\uFF09 | `NULL` |\n| `GROUP_CONCAT` | `\"\"`\uFF08\u7A7A\u6587\u5B57\uFF09 | `NULL` |\n| `VAR_POP` / `STDDEV_POP` / `VAR_SAMP` / `STDDEV_SAMP` / `MEDIAN` | `\"\"`\uFF08\u7A7A\u6587\u5B57\uFF09 | `NULL` |\n| `MODE` | `\"\"`\uFF08\u7A7A\u6587\u5B57\uFF09 | `NULL` |\n\n**\u7A7A\u6587\u5B57\u306F kSQL \u306E NULL \u76F8\u5F53**\u3067\u3059\u3002`SUM` / `AVG` \u304C `0` \u3092\u8FD4\u3059\u306E\u306F\u3001**\u7A7A\u30BB\u30EB\u304C\u7B97\u8853\u3067 `0` \u306B\u306A\u308B**\u3068\u3044\u3046 kSQL \u5168\u4F53\u306E\u898F\u7D04\u306B\u5408\u308F\u305B\u3066\u3044\u308B\u305F\u3081\u3067\u3059\u3002\n\n- \u300C\u5BFE\u8C61\u306A\u3057\uFF08COUNT = 0\uFF09\u300D\u3068\u300C\u5408\u8A08\u304C 0\u300D\u3092\u533A\u5225\u3057\u305F\u3044\u5834\u5408\u306F COUNT \u3092\u4F75\u7528\u3057\u3066\u304F\u3060\u3055\u3044\n- GROUP BY \u304C**\u3042\u308B**\u5834\u5408\u306F\u5F93\u6765\u3069\u304A\u308A 0 \u884C\u3092\u8FD4\u3057\u307E\u3059\uFF08\u30B0\u30EB\u30FC\u30D7\u304C\u5B58\u5728\u3057\u306A\u3044\u305F\u3081\uFF09\n- 1 \u4EF6\u3060\u3051\u306E\u30B0\u30EB\u30FC\u30D7\u3067\u306F `VAR_SAMP` / `STDDEV_SAMP` \u306F\u7A7A\u6587\u5B57\u3001`VAR_POP` / `STDDEV_POP` \u306F `0`\u3001`MEDIAN` \u306F\u305D\u306E\u5024\u3067\u3059\n- 1 \u4EF6\u3060\u3051\u306E `MODE` \u306F\u305D\u306E\u5024\u3001\u5168\u4EF6\u304C\u7A7A\u30BB\u30EB\u306A\u3089\u7A7A\u6587\u5B57\u3067\u3059\n- \u3053\u308C\u306B\u3088\u308A ASSERT \u306E\u5065\u5168\u6027\u30C1\u30A7\u30C3\u30AF `ASSERT (SELECT COUNT(*) ... WHERE \u7570\u5E38\u6761\u4EF6) = 0` \u304C\u8A72\u5F53 0 \u4EF6\uFF08\u5065\u5168\u6642\uFF09\u306B\u6210\u7ACB\u3057\u307E\u3059\uFF08\xA726 ASSERT\uFF09\n\n---", uri: "ksql://language-reference/08-group-by-aggregates" }, "09-having": { heading: "9. HAVING", text: "## 9. HAVING\n\nGROUP BY \u5F8C\u306E\u96C6\u8A08\u7D50\u679C\u306B\u5BFE\u3057\u3066\u30D5\u30A3\u30EB\u30BF\u3092\u304B\u3051\u307E\u3059\u3002 \nHAVING \u53E5\u306B\u306F\u96C6\u8A08\u95A2\u6570\u30FBGROUP BY \u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n\u76F4\u63A5\u8A18\u8FF0\u3057\u305F\u96C6\u8A08\u95A2\u6570\u306F\u3001\u540C\u3058\u96C6\u8A08\u304C SELECT \u5217\u306B\u3082\u5B58\u5728\u3059\u308B\u5834\u5408\u306B\u9650\u308A\u8A55\u4FA1\u3067\u304D\u307E\u3059\u3002SELECT \u306B\u306A\u3044\u96C6\u8A08\u3092 HAVING \u5C02\u7528\u3067\u8FFD\u52A0\u8A08\u7B97\u306F\u3057\u307E\u305B\u3093\u3002v3.16.0 \u4EE5\u964D\u306E `CASE` \u5F0F\u5F15\u6570\u3082\u540C\u3058\u898F\u5247\u3067\u76F4\u63A5\u8A18\u8FF0\u3067\u304D\u3001SELECT \u3067\u4ED8\u3051\u305F alias \u304B\u3089\u53C2\u7167\u3059\u308B\u66F8\u304D\u65B9\u3082\u6709\u52B9\u3067\u3059\u3002\n\nB65 \u306E HAVING \u306F grouping set \u306E\u96C6\u7D04\u5F8C\u306B\u5404\u884C\u3078\u4F5C\u7528\u3057\u307E\u3059\u3002\u901A\u5E38\u306E\u96C6\u8A08\u6761\u4EF6\u306B\u52A0\u3048\u3001v3.18.0 \u4EE5\u964D\u306F `HAVING` \u5185\u3067 `GROUPING(field)` \u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002`HAVING GROUPING(\u4F1A\u793E\u540D) = 1` \u306F\u7DCF\u8A08\u30FB\u5C0F\u8A08\u884C\u3060\u3051\u3001`= 0` \u306F\u660E\u7D30\u884C\u3060\u3051\u3092\u6B8B\u3057\u3001`HAVING GROUPING(\u4F1A\u793E\u540D) = 1 AND SUM(\u58F2\u4E0A) > 0` \u306E\u3088\u3046\u306B\u96C6\u8A08\u6761\u4EF6\u3068\u7D44\u307F\u5408\u308F\u305B\u3089\u308C\u307E\u3059\u3002`GROUPING()` \u306F\u884C\u306E\u6240\u5C5E grouping set \u304B\u3089 `0` / `1` \u3092\u8FD4\u3059 membership \u5224\u5B9A\u3067\u3042\u308A\u3001grouped \u5217\u304C\u7A7A\u6587\u5B57\u306E\u660E\u7D30\u884C\u3068\u7DCF\u8A08\u884C\u3092\u53D6\u308A\u9055\u3048\u307E\u305B\u3093\u3002`WHERE`\u30FBJOIN \u6761\u4EF6\u30FB\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u30FB\u30A6\u30A3\u30F3\u30C9\u30A6\u5B9A\u7FA9\u306E\u4E2D\u3067\u306F `GROUPING()` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\n```sql\nSELECT \u90E8\u7F72, COUNT(*) AS \u4EF6\u6570\nFROM APP100\nGROUP BY \u90E8\u7F72\nHAVING COUNT(*) >= 5\n```\n\n```sql\nSELECT \u62C5\u5F53\u8005, SUM(\u91D1\u984D) AS \u5408\u8A08\nFROM APP100\nGROUP BY \u62C5\u5F53\u8005\nHAVING SUM(\u91D1\u984D) > 1000000\n```\n\n```sql\nSELECT \u90E8\u7F72,\n SUM(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) AS \u53D7\u6CE8\u58F2\u4E0A\nFROM APP100\nGROUP BY \u90E8\u7F72\nHAVING SUM(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) > 1000000\n```\n\nWHERE \u3068\u306E\u9055\u3044:\n- `WHERE` \u2014 \u96C6\u8A08\u524D\u306E\u30EC\u30B3\u30FC\u30C9\u306B\u5BFE\u3057\u3066\u30D5\u30A3\u30EB\u30BF\n- `HAVING` \u2014 \u96C6\u8A08\u5F8C\u306E\u30B0\u30EB\u30FC\u30D7\u306B\u5BFE\u3057\u3066\u30D5\u30A3\u30EB\u30BF\n\n```sql\nSELECT \u62C5\u5F53\u8005, COUNT(*) AS \u4EF6\u6570\nFROM APP100\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86' -- \u96C6\u8A08\u524D\u30D5\u30A3\u30EB\u30BF\nGROUP BY \u62C5\u5F53\u8005\nHAVING COUNT(*) >= 3 -- \u96C6\u8A08\u5F8C\u30D5\u30A3\u30EB\u30BF\n```\n\n---", uri: "ksql://language-reference/09-having" }, "10-order-by": { heading: "10. ORDER BY", text: '## 10. ORDER BY\n\n### \u57FA\u672C\n\n```sql\nSELECT * FROM APP100\nORDER BY \u4F5C\u6210\u65E5\u6642 DESC\n\nSELECT * FROM APP100\nORDER BY \u90E8\u7F72 ASC, \u91D1\u984D DESC\n```\n\n- `ASC` \u2014 \u6607\u9806\uFF08\u7701\u7565\u53EF\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\uFF09\n- `DESC` \u2014 \u964D\u9806\n\n### SELECT alias \u306B\u3088\u308B\u30BD\u30FC\u30C8\n\n\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u901A\u5E38 `ORDER BY` \u3067\u306F\u3001SELECT \u51FA\u529B alias \u3092\u30AD\u30FC\u3068\u3057\u3066\u53C2\u7167\u3067\u304D\u307E\u3059\u3002alias \u306E\u5024\u306F SELECT \u5F0F\u3068\u540C\u3058\u898F\u5247\u30FB\u578B\u3067\u8A55\u4FA1\u3057\u3066\u304B\u3089\u30BD\u30FC\u30C8\u3057\u307E\u3059\u3002\n\n```sql\nSELECT \u91D1\u984D AS amount\nFROM APP100\nORDER BY amount DESC\n\nSELECT DAYOFWEEK(\u65E5\u4ED8) AS weekday\nFROM APP100\nORDER BY weekday ASC\n```\n\n- ORDER BY \u540D\u304C SELECT alias \u3068\u5165\u529B\u884C\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u4E21\u65B9\u306B\u5B8C\u5168\u4E00\u81F4\u3059\u308B\u5834\u5408\u306F\u3001**SELECT alias \u3092\u512A\u5148**\u3057\u307E\u3059\u3002\u30C9\u30C3\u30C8\u3092\u542B\u3080 alias \u3082\u5B8C\u5168\u4E00\u81F4\u3092\u5148\u306B\u5224\u5B9A\u3059\u308B\u305F\u3081\u3001\u540C\u540D\u306E\u4FEE\u98FE\u7269\u7406\u5217\u306B\u306F\u305D\u306E ORDER BY \u304B\u3089\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n- \u540C\u3058 alias \u3092\u8907\u6570\u306E SELECT \u5217\u3078\u6307\u5B9A\u3057\u305F\u5834\u5408\u306F\u3001\u51FA\u529B\u3068\u540C\u3058\u304F**\u5F8C\u306B\u8A18\u8FF0\u3057\u305F\u5217\u304C\u512A\u5148**\u3055\u308C\u307E\u3059\n- alias \u306B\u4E00\u81F4\u3057\u306A\u3044\u540D\u524D\u306F\u5F93\u6765\u3069\u304A\u308A\u5165\u529B\u884C\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u3057\u3066\u89E3\u6C7A\u3057\u307E\u3059\u3002\u3069\u3061\u3089\u306B\u3082\u89E3\u6C7A\u3067\u304D\u306A\u3044\u540D\u524D\u306F `ORDER_KEY_UNRESOLVED` \u3067\u5B9F\u884C\u524D\u306B\u62D2\u5426\u3057\u307E\u3059\n- \u3053\u306E alias \u89E3\u6C7A\u306F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u901A\u5E38 `ORDER BY` \u3060\u3051\u306B\u9069\u7528\u3057\u307E\u3059\u3002`OVER (ORDER BY ...)` \u304B\u3089\u540C\u4E00 SELECT \u306E alias \u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002\u5FC5\u8981\u306A\u5834\u5408\u306F CTE \u307E\u305F\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3067\u4E00\u5EA6\u5217\u3092\u5B9F\u4F53\u5316\u3057\u3066\u304F\u3060\u3055\u3044\n- `KORDER BY` \u306F SELECT alias \u3092\u76F4\u63A5\u7269\u7406\u5217\u3068\u3057\u3066\u6271\u3044\u307E\u305B\u3093\n\n### GROUPING() \u306B\u3088\u308B\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u306E\u30BD\u30FC\u30C8\n\nB65 \u306E\u901A\u5E38 `ORDER BY GROUPING(field)` \u3092\u6607\u9806\u3067\u6307\u5B9A\u3059\u308B\u3068\u3001`GROUPING(field)=1` \u3068\u306A\u308B super-aggregate\uFF08\u5C0F\u8A08\u30FB\u7DCF\u8A08\uFF09\u884C\u3092\u672B\u5C3E\u3078\u5BC4\u305B\u3089\u308C\u307E\u3059\u3002B65 \u6587\u306F FULL_SCAN \u3067\u53D6\u5F97\u5F8C\u306B\u30ED\u30FC\u30AB\u30EB\u30BD\u30FC\u30C8\u3057\u307E\u3059\u3002\n\n```sql\nSELECT \u4F1A\u793E\u540D, GROUPING(\u4F1A\u793E\u540D) AS grouping_company, SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08\nFROM APP100\nGROUP BY ROLLUP(\u4F1A\u793E\u540D)\nORDER BY GROUPING(\u4F1A\u793E\u540D), \u58F2\u4E0A\u5408\u8A08 DESC\n```\n\n### canonical\u9806\uFF08v3.0.0\uFF09\n\n\u901A\u5E38\u306E`ORDER BY`\u306F\u3001REST\u53D6\u5F97\u30FBFULL_SCAN\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FBCLI\u30FBMCP\u30FB\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u3069\u306E\u7D4C\u8DEF\u3067\u3082\u3001\u540C\u3058kSQL canonical\u6BD4\u8F03\u898F\u5247\u3092\u4F7F\u3044\u307E\u3059\u3002\n\n- typed string\uFF0F\u578B\u4E0D\u660E: Unicode\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3002NFC/NFD\u7B49\u306EUnicode\u6B63\u898F\u5316\u3084\u30ED\u30B1\u30FC\u30EB\u7167\u5408\u306F\u884C\u3044\u307E\u305B\u3093\n- typed number: `\u7A7A\u30BB\u30EB < -Infinity < \u6709\u9650\u6570 < +Infinity < "NaN" < \u305D\u306E\u4ED6\u975E\u6570\u5024`\u3002\u305D\u306E\u4ED6\u975E\u6570\u5024\u306E\u30D0\u30F3\u30C9\u5185\u306F\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3067\u3059\n- \u9078\u629E\u7CFB: \u30D5\u30A9\u30FC\u30E0\u307E\u305F\u306F\u30D7\u30ED\u30BB\u30B9\u8A2D\u5B9A\u306E\u5B9A\u7FA9\u9806\u3002\u672A\u77E5\u30FB\u524A\u9664\u6E08\u307F\u9078\u629E\u80A2\u306F\u65E2\u77E5\u5024\u306E\u5F8C\u308D\u3067\u3059\n- RECORD_NUMBER: \u30A2\u30D7\u30EA\u30B3\u30FC\u30C9\u3092\u542B\u3080\u8868\u793A\u5024\u304B\u3089\u672B\u5C3E\u306E\u6570\u5024ID\u3092\u4EFB\u610F\u7CBE\u5EA6\u3067\u6BD4\u8F03\u3057\u307E\u3059\n- DESC\u306F\u30D0\u30F3\u30C9\u3092\u542B\u3080\u9806\u5E8F\u5168\u4F53\u3092\u53CD\u8EE2\u3057\u307E\u3059\n\n\u6587\u5B57\u5217`"10"`\u3092\u6570\u502410\u3068\u3057\u3066\u6271\u3046\u5024\u30D9\u30FC\u30B9\u81EA\u52D5\u5224\u5B9A\u306F\u884C\u3044\u307E\u305B\u3093\u3002\u578B\u3092\u78BA\u5B9A\u3067\u304D\u306A\u3044\u5F0F\u30FB\u4E00\u6642\u5217\u3082\u65E2\u5B9A\u306F\u6587\u5B57\u5217\u3067\u3059\u3002\u30ED\u30FC\u30AB\u30EB\u6BD4\u8F03\u5951\u7D04\u306E\u306A\u3044\u8907\u5408\u578B\u306F\u3001\u884C\u6570\u306B\u4F9D\u5B58\u305B\u305Aplanning\u6642\u306B\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n\n`COALESCE` / `ISNULL` / `NULLIF` / `GREATEST` / `LEAST` \u306F\u3001\u5F15\u6570\u304C\u3059\u3079\u3066\u6570\u5024\u306A\u3089\u7D50\u679C\u3082\u6570\u5024\u3068\u3057\u3066\u4E26\u3079\u66FF\u3048\u30FB\u6BD4\u8F03\u3055\u308C\u3001\u6587\u5B57\u5217\u307E\u305F\u306F\u578B\u4E0D\u660E\u306E\u5F15\u6570\u304C\u6DF7\u3056\u308B\u5834\u5408\u306F\u6587\u5B57\u5217\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002\n\n\u540C\u5024\u884C\u306E\u6700\u7D42\u8868\u793A\u9806\u306Fcanonical tie\u3068\u3057\u3066\u5B89\u5B9A\u5316\u3057\u307E\u3059\u304C\u3001`RANK` / `DENSE_RANK`\u306Epeer\u5224\u5B9A\u306B\u306F\u305D\u306Etie\u3092\u6DF7\u305C\u307E\u305B\u3093\u3002JOIN\u3067\u8907\u6570\u30C6\u30FC\u30D6\u30EB\u306B\u540C\u540D\u5217\u304C\u3042\u308B\u5834\u5408\u3001\u975E\u4FEE\u98FE\u30AD\u30FC\u306F`ambiguous column`\u3068\u3057\u3066\u62D2\u5426\u3059\u308B\u305F\u3081\u3001`a.\u5217\u540D`\u306E\u3088\u3046\u306B\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### \u7B97\u8853\u5F0F\u30FB\u95A2\u6570\u306B\u3088\u308B\u30BD\u30FC\u30C8\n\nORDER BY \u306E\u30AD\u30FC\u306B\u7B97\u8853\u5F0F\u3084\u95A2\u6570\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002 \n\u3053\u306E\u5834\u5408\u3001\u81EA\u52D5\u7684\u306B FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002\n\n```sql\n-- \u7B97\u8853\u5F0F\nORDER BY \u5358\u4FA1 * \u6570\u91CF DESC\nORDER BY (\u58F2\u4E0A - \u539F\u4FA1) / \u58F2\u4E0A DESC\n\n-- \u95A2\u6570\nORDER BY UPPER(\u9867\u5BA2\u540D) ASC\nORDER BY LENGTH(\u6C0F\u540D) ASC\nORDER BY ROUND(\u91D1\u984D, -3) DESC\n```\n\n### KORDER BY\uFF08kintone\u56FA\u6709\u9806\u3001v3.0.0\uFF09\n\n`KORDER BY`\u306F\u9AD8\u901F\u5316\u30D2\u30F3\u30C8\u3067\u306F\u306A\u304F\u3001\u6BD4\u8F03\u610F\u5473\u3092kintone REST API\u306E\u578B\u5225\u9806\u5E8F\u3078\u5207\u308A\u66FF\u3048\u308B\u5225\u69CB\u6587\u3067\u3059\u3002\u6761\u4EF6\u5916\u3067\u901A\u5E38`ORDER BY`\u3078\u9ED9\u3063\u3066\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3057\u307E\u305B\u3093\u3002\n\n```sql\nSELECT \u4F1A\u793E\u540D, \u91D1\u984D\nFROM APP100\nWHERE \u9867\u5BA2\u30E9\u30F3\u30AF = \'A\'\nKORDER BY \u4F1A\u793E\u540D ASC, $id ASC\nLIMIT 20\n```\n\n\u521D\u671F\u7248\u306F\u6B21\u3092\u3059\u3079\u3066\u6E80\u305F\u3059\u5834\u5408\u3060\u3051\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n- \u5229\u7528\u8005\u3078\u7D50\u679C\u3092\u8FD4\u3059\u30C8\u30C3\u30D7\u30EC\u30D9\u30EBSELECT\u3001\u5358\u4E00\u306E\u7269\u7406\u30A2\u30D7\u30EA\u3001JOIN\uFF0FCTE\uFF0Ftemp\uFF0FUNION\uFF0F\u96C6\u7D04\uFF0FWINDOW\u306A\u3057\n- **\u975E\u4FEE\u98FE\u306E**\u76F4\u63A5\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F`$id`\u3060\u3051\u3092\u30AD\u30FC\u306B\u3059\u308B\u3002SELECT alias\u3001`t.\u91D1\u984D`\u306E\u3088\u3046\u306A\u8868\u4FEE\u98FE\u3001\u95A2\u6570\u3001\u7B97\u8853\u5F0F\u306F\u672A\u5BFE\u5FDC\n- WHERE\u5168\u4F53\u3092kintone\u3078\u540C\u5024\u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u3001SQL `LIKE`\uFF0F`KLIKE`\u3092\u542B\u307E\u306A\u3044\n- `LIMIT`\u3092\u660E\u793A\u3057\u3001`LIMIT`\u30FB`OFFSET`\u30FB`OFFSET + LIMIT`\u304C\u3059\u3079\u30660\u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u3042\u308B\n- \u578B\u306F`$id`\u3001RECORD_NUMBER\u3001SINGLE_LINE_TEXT\u3001NUMBER\u3001CALC\u3001DATE\u3001DATETIME\u3001TIME\u3001CREATED_TIME\u3001UPDATED_TIME\u3001DROP_DOWN\u3001RADIO_BUTTON\u3001STATUS\u3001LINK\u3001CREATOR\u3001MODIFIER\u306E\u660E\u793Aallowlist\u5185\n\n`LIMIT \u2264 500`\u30FB`OFFSET \u2264 10000`\u30FB`LIMIT \u2264 maxRecords`\u306A\u3089\u3001\u6307\u5B9A\u3057\u305FORDER/LIMIT/OFFSET\u3092\u5358\u767AGET\u3078\u305D\u306E\u307E\u307E\u9001\u308A\u307E\u3059\u3002`LIMIT 0`\u3082\u578B\u30FBWHERE\u30FBquery\u5F62\u72B6\u3092\u5B8C\u5168\u691C\u67FB\u3057\u305F\u5F8C\u3001records API\u3092\u547C\u3070\u305A\u7A7A\u7D50\u679C\u3092\u8FD4\u3057\u307E\u3059\u3002\u540C\u5024\u7FA4\u306E\u6C7A\u5B9A\u6027\u304C\u5FC5\u8981\u306A\u3089\u3001\u6700\u5F8C\u306E\u30AD\u30FC\u3068\u3057\u3066`$id ASC`\u7B49\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n#### \u5927\u304D\u3044\u7A93\u3068 Cursor API\uFF08v3.1.0\uFF09\n\nv3.0.0 \u3067\u306F\u5358\u767AGET\u3067\u5B8C\u7D50\u3057\u306A\u3044\u7A93\uFF08`LIMIT > 500`\u30FB`OFFSET > 10000`\uFF09\u306F planning error \u3067\u3059\u3002**v3.1.0** \u3067\u306F\u3001\u3053\u306E\u7A93\u3092 kintone \u306E **Cursor API**\uFF08\u30AB\u30FC\u30BD\u30EB\u4F5C\u6210\u30FB\u53D6\u5F97\u30FB\u524A\u9664\uFF09\u3067\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF08\u8A08\u753B\u540D `KORDER_CURSOR`\uFF09\u3002\n\n\u30AB\u30FC\u30BD\u30EB\u3092\u5229\u7528\u3059\u308B\u6761\u4EF6\uFF08\u3059\u3079\u3066\u6E80\u305F\u3059\u5834\u5408\u3060\u3051\uFF09:\n\n- \u4E0A\u8A18\u306E `KORDER BY` \u5171\u901A\u6761\u4EF6\uFF08\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT\u30FB\u5358\u4E00\u7269\u7406\u30A2\u30D7\u30EA\u30FB\u975E\u4FEE\u98FE\u30AD\u30FC\u30FB\u578B allowlist\u30FBWHERE \u5B8C\u5168\u62BC\u3057\u4E0B\u3052\u30FB`KLIKE` \u306A\u3057\u30FB`LIMIT` \u660E\u793A\uFF09\u3092\u3059\u3079\u3066\u6E80\u305F\u3059\n- \u5358\u767AGET\u306E\u7A93\uFF08`LIMIT \u2264 500` \u304B\u3064 `OFFSET \u2264 10000` \u304B\u3064 `LIMIT \u2264 maxRecords`\uFF09\u306B**\u53CE\u307E\u3089\u306A\u3044**\u3002\u53CE\u307E\u308B\u5834\u5408\u306F\u5F93\u6765\u3069\u304A\u308A\u5358\u767AGET\uFF08`KORDER_NATIVE`\uFF09\u3092\u512A\u5148\u3059\u308B\n- **\u8D70\u67FB\u4EF6\u6570 `OFFSET + LIMIT` \u304C\u5B9F\u884C\u6642 `maxRecords` \u4EE5\u4E0B**\u3002\u30AB\u30FC\u30BD\u30EB\u3067\u306F OFFSET \u5206\u3092 kSQL \u304C\u5148\u982D\u304B\u3089\u53D7\u4FE1\u3057\u3066\u8AAD\u307F\u6368\u3066\u308B\u305F\u3081\u3001\u8FD4\u5374\u884C\u6570\u3067\u306F\u306A\u304F\u8D70\u67FB\u4EF6\u6570\u306B `maxRecords` \u304C\u639B\u304B\u308A\u307E\u3059\uFF08\u5358\u767AGET\u306E OFFSET \u306F\u30B5\u30FC\u30D0\u30FC\u304C\u8AAD\u307F\u98DB\u3070\u3059\u305F\u3081\u5BFE\u8C61\u5916 \u2014 \u3053\u306E\u975E\u5BFE\u79F0\u306F\u300CkSQL \u304C\u53D7\u4FE1\u3059\u308B\u884C\u6570\u306E\u4E0A\u9650\u300D\u3068\u3044\u3046 `maxRecords` \u306E\u610F\u5473\u305D\u306E\u3082\u306E\u3067\u3059\uFF09\n- \u6761\u4EF6\u3092\u6E80\u305F\u3055\u306A\u3044\u5834\u5408\u306F planning error\u3002\u901A\u5E38 `ORDER BY` \u3078\u9ED9\u3063\u3066\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3057\u307E\u305B\u3093\n\n```sql\n-- v3.1.0: 10,001 \u4EF6\u3092 kintone \u56FA\u6709\u9806\u306E\u307E\u307E\u53D6\u5F97\nSELECT \u4F1A\u793E\u540D, \u91D1\u984D\nFROM APP100\nKORDER BY \u91D1\u984D DESC, $id ASC\nLIMIT 10001\n-- CLI/MCP \u306E\u65E2\u5B9A maxRecords=500 \u3067\u306F\u8D70\u67FB\u4EF6\u6570\u304C\u8D85\u904E\u3059\u308B\u305F\u3081\u3001\n-- --max-records 10001 \u7B49\u3078\u660E\u793A\u7684\u306B\u5F15\u304D\u4E0A\u3052\u308B\n```\n\n> **\u30AB\u30FC\u30BD\u30EB\u306E\u7279\u9577\u30FB\u5236\u9650\uFF08\u6CE8\u91C8\uFF09:**\n>\n> - **\u5BFE\u8C61\u96C6\u5408\u306F\u30AB\u30FC\u30BD\u30EB\u4F5C\u6210\u6642\u70B9\u3067\u56FA\u5B9A\u3001\u5024\u306F\u5404\u53D6\u5F97\u6642\u70B9** \u2014 \u5B8C\u5168\u306A\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u8D70\u67FB\u4E2D\u306B\u30EC\u30B3\u30FC\u30C9\u304C\u66F4\u65B0\u3055\u308C\u308B\u3068\u3001\u8FD4\u308B\u5024\u306F\u53D6\u5F97\u6642\u70B9\u306E\u3082\u306E\u306B\u306A\u308A\u3001\u30BD\u30FC\u30C8\u30AD\u30FC\u81EA\u4F53\u304C\u66F4\u65B0\u3055\u308C\u305F\u5834\u5408\u306F\u7D50\u679C\u304C\u8868\u793A\u5024\u4E0A KORDER \u9806\u306B\u898B\u3048\u306A\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u66F4\u65B0\u306E\u306A\u3044\u6642\u9593\u5E2F\u306E\u5B9F\u884C\u3092\u63A8\u5968\u3057\u307E\u3059\n> - **\u30AB\u30FC\u30BD\u30EB\u306F 1 \u30C9\u30E1\u30A4\u30F3\u6700\u5927 10 \u500B**\u3092\u3001kSQL \u4EE5\u5916\u306E\u88FD\u54C1\u30FB\u4ED6\u30D7\u30ED\u30BB\u30B9\u3082\u542B\u3081\u3066\u5171\u6709\u3057\u307E\u3059\u3002kSQL \u306F\u81EA\u5236\u306E\u305F\u3081\u540C\u6642\u30AB\u30FC\u30BD\u30EB\u3092\u65E2\u5B9A 2\u30FB\u6700\u5927 5 \u306B\u5236\u9650\u3057\u307E\u3059\u3002\u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u7A7A\u304D\u67A0\u306F\u4FDD\u8A3C\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u5185\u90E8\u4E0A\u9650\u4EE5\u4E0B\u3067\u3082\u4F5C\u6210\u304C\u5931\u6557\u3059\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\n> - **\u6709\u52B9\u671F\u9650\u306F\u4F5C\u6210\u304B\u3089 10 \u5206**\uFF08\u6B8B\u4EF6\u53D6\u5F97\u3067\u5EF6\u9577\uFF09\u3002\u5168\u4EF6\u53D6\u5F97\u307E\u305F\u306F\u660E\u793A\u524A\u9664\u3067\u89E3\u653E\u3055\u308C\u307E\u3059\u3002kSQL \u306F\u5FC5\u8981\u306A\u7A93\u3078\u5230\u9054\u3057\u305F\u6642\u70B9\u3067\u30AB\u30FC\u30BD\u30EB\u3092\u5373\u6642\u524A\u9664\u3057\u307E\u3059\u304C\u3001\u7570\u5E38\u7D42\u4E86\u6642\u306F\u6700\u5927 10 \u5206\u7A0B\u5EA6\u3001\u30C9\u30E1\u30A4\u30F3\u306E\u67A0\u3092 1 \u3064\u5360\u6709\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\n> - **\u53D6\u5F97\u306F 500 \u4EF6\u305A\u3064**\u306E\u9010\u6B21\u30DA\u30FC\u30B8\u3067\u3001kintone \u304C\u8FD4\u3057\u305F\u9806\u5E8F\u3092\u305D\u306E\u307E\u307E\u7D50\u679C\u306B\u3057\u307E\u3059\uFF08\u30ED\u30FC\u30AB\u30EB\u518D\u30BD\u30FC\u30C8\u30FB`$id` \u306E\u81EA\u52D5\u8FFD\u88DC\u306A\u3057\uFF09\u3002\u540C\u5024\u7FA4\u306E\u6C7A\u5B9A\u6027\u304C\u5FC5\u8981\u306A\u3089\u5358\u767AGET\u3068\u540C\u69D8\u306B `$id` \u3092\u6700\u5F8C\u306E\u30AD\u30FC\u3078\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\n> - **\u30AB\u30FC\u30BD\u30EB\u306E\u4F5C\u6210\u30FB\u53D6\u5F97\u306F\u81EA\u52D5\u518D\u8A66\u884C\u3057\u307E\u305B\u3093**\u3002\u5FDC\u7B54\u55AA\u5931\u6642\u306B\u518D\u8A66\u884C\u3059\u308B\u3068\u3001\u5B64\u5150\u30AB\u30FC\u30BD\u30EB\uFF08\u4F5C\u6210\uFF09\u3084\u30DA\u30FC\u30B8\u6B20\u843D\uFF08\u53D6\u5F97\uFF09\u304C\u8D77\u304D\u5F97\u308B\u305F\u3081\u3067\u3059\u3002\u4F5C\u6210\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u6642\u306F\u30AF\u30A8\u30EA\u306E\u7D5E\u308A\u8FBC\u307F\u30FB\u5358\u7D14\u5316\u3092\u6848\u5185\u3059\u308B\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\n\n\u540C\u6642\u30AB\u30FC\u30BD\u30EB\u4E0A\u9650\u306FCLI\u306E`--cursor-max-active`\u3001\u74B0\u5883\u5909\u6570`KSQL_CURSOR_MAX_ACTIVE`\u3001profile\u306E`query.cursorMaxActive`\u3001MCP\u5165\u529B`cursorMaxActive`\u3001plugin\u306E\u53D6\u5F97\u30AA\u30D7\u30B7\u30E7\u30F3\u30671..5\u3078\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002\u65E2\u5B9A\u306F2\u3067\u3059\u3002\u540C\u4E00process\u30FB\u540C\u4E00host\u3067\u5F8C\u304B\u3089\u5909\u66F4\u3057\u305F\u5834\u5408\u3082\u6B21\u306E\u53D6\u5F97\u304B\u3089\u53CD\u6620\u3055\u308C\u307E\u3059\u3002\u4E0A\u9650\u3092\u4E0B\u3052\u3066\u3082\u65E2\u5B58Cursor\u306F\u5F37\u5236\u7D42\u4E86\u305B\u305A\u3001active\u6570\u304C\u65B0\u4E0A\u9650\u3092\u4E0B\u56DE\u308B\u307E\u3067\u65B0\u898F\u4F5C\u6210\u3092\u5F85\u6A5F\u3055\u305B\u307E\u3059\u3002\n\n`KORDER`\u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F`` `KORDER` ``\u3068\u8A18\u8FF0\u3057\u307E\u3059\u3002\n\n\n\n---', uri: "ksql://language-reference/10-order-by" }, "10-1-window-functions": { heading: "10.1 \u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570", text: "## 10.1 \u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\n\n\u9806\u4F4D\u4ED8\u3051\u30FB\u30B0\u30EB\u30FC\u30D7\u5185\u9023\u756A\u3001`SUM` / `COUNT` / `AVG` / `MIN` / `MAX` \u306E\u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u306B\u52A0\u3048\u3001\u524D\u5F8C\u306E\u884C\u3092\u53C2\u7167\u3059\u308B `LAG` / `LEAD` \u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u3092\u542B\u3080SELECT\u306F\u5168\u4EF6\u3092\u53D6\u5F97\u3057\u3066JS\u3067\u8A55\u4FA1\u3059\u308B\u305F\u3081\u3001\u5E38\u306BFULL_SCAN\u30E2\u30FC\u30C9\u3067\u3059\u3002\u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u3068 `LAG` / `LEAD` \u306F\u5B8C\u5168\u5165\u529B\u3092\u8981\u6C42\u3057\u3001\u53D6\u5F97\u4E0A\u9650\u3067\u306E truncate \u306F\u90E8\u5206\u7D50\u679C\u3092\u8FD4\u3055\u305A\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n\n```sql\nROW_NUMBER() OVER ([PARTITION BY \u30D5\u30A3\u30FC\u30EB\u30C9 [, ...]] [ORDER BY \u30AD\u30FC [ASC|DESC] [, ...]]) AS alias\nRANK() OVER ([PARTITION BY \u30D5\u30A3\u30FC\u30EB\u30C9 [, ...]] [ORDER BY \u30AD\u30FC [ASC|DESC] [, ...]]) AS alias\nDENSE_RANK() OVER ([PARTITION BY \u30D5\u30A3\u30FC\u30EB\u30C9 [, ...]] [ORDER BY \u30AD\u30FC [ASC|DESC] [, ...]]) AS alias\n\n{SUM|COUNT|AVG|MIN|MAX}(\u5F15\u6570) OVER (\n [PARTITION BY \u30D5\u30A3\u30FC\u30EB\u30C9 [, ...]]\n [ORDER BY \u30AD\u30FC [ASC|DESC] [, ...]\n [{ROWS|RANGE} BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]]\n) AS alias\n\n{LAG|LEAD}(\u5024\u5F0F [, offset]) OVER (\n [PARTITION BY \u30D5\u30A3\u30FC\u30EB\u30C9 [, ...]]\n ORDER BY \u30AD\u30FC [ASC|DESC] [, ...]\n) AS alias\n```\n\n- `ROW_NUMBER` \u2014 \u540C\u9806\u4F4D\u3092\u4F5C\u3089\u305A\u30011\u304B\u3089\u9023\u756A\u3092\u4ED8\u3051\u308B\n- `RANK` \u2014 \u540C\u5024\u306F\u540C\u9806\u4F4D\u3002\u6B21\u306E\u9806\u4F4D\u3092\u98DB\u3070\u3059\uFF08`1, 1, 3`\uFF09\n- `DENSE_RANK` \u2014 \u540C\u5024\u306F\u540C\u9806\u4F4D\u3002\u6B21\u306E\u9806\u4F4D\u3092\u98DB\u3070\u3055\u306A\u3044\uFF08`1, 1, 2`\uFF09\n- `PARTITION BY` \u7701\u7565\u6642\u306F\u5168\u884C\u30921\u30B0\u30EB\u30FC\u30D7\u3068\u3057\u3066\u6271\u3046\n- `ORDER BY` \u7701\u7565\u6642\u3001`RANK` / `DENSE_RANK` \u306F\u5168\u884C1\u3002`ROW_NUMBER` \u306F\u53D6\u5F97\u9806\u3067\u63A1\u756A\u3059\u308B\n- `AS alias` \u306F\u5FC5\u9808\n- \u96C6\u8A08\u5F15\u6570\u306F\u901A\u5E38\u96C6\u8A08\u3068\u540C\u3058\u304F\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u7B97\u8853\u5F0F\u30FB\u95A2\u6570\u30FB`CASE`\u30FB`||`\u30FB`@var` \u3092\u6307\u5B9A\u3067\u304D\u308B\u3002`COUNT(*)` \u3082\u4F7F\u7528\u3067\u304D\u308B\n- `SUM(DISTINCT x) OVER (...)` \u306E\u3088\u3046\u306A\u5F15\u6570\u306E `DISTINCT`\u3001`GROUP_CONCAT`\u30FB\u7D71\u8A08\u96C6\u8A08\u306E `OVER`\u3001\u30A6\u30A3\u30F3\u30C9\u30A6\u7D50\u679C\u3092\u540C\u3058 SELECT \u5185\u306E\u5F0F\u3078\u5165\u308C\u308B\u5F62\u306F\u672A\u5BFE\u5FDC\u3002CTE\u3067\u4E00\u5EA6\u5B9F\u4F53\u5316\u3059\u308B\n- `SELECT DISTINCT` \u3068\u30A6\u30A3\u30F3\u30C9\u30A6\u5217\u306E\u4F75\u7528\u306F\u53EF\u80FD\u3002\u30A6\u30A3\u30F3\u30C9\u30A6\u8A55\u4FA1\u5F8C\u306B DISTINCT \u3092\u9069\u7528\u3059\u308B\n- `LAG(expr, n)` \u306F\u30BD\u30FC\u30C8\u5F8C\u306E\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067 `n` \u884C\u524D\u3001`LEAD(expr, n)` \u306F `n` \u884C\u5F8C\u306E\u5024\u3092\u8FD4\u3059\u3002\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5916\u306F\u7A7A\u6587\u5B57\n- `offset` \u306F\u7701\u7565\u6642 `1`\u3002\u975E\u8CA0\u306E safe integer \u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3092\u6307\u5B9A\u3067\u304D\u3001`0` \u306F\u73FE\u5728\u884C\u3092\u8FD4\u3059\u3002\u5909\u6570\u30FB\u5F0F\u30FB\u5C0F\u6570\u30FB\u8CA0\u6570\u306F\u4F7F\u7528\u3067\u304D\u306A\u3044\n- `LAG` / `LEAD` \u306E\u7B2C3\u5F15\u6570\uFF08\u65E2\u5B9A\u5024\uFF09\u306F\u672A\u5BFE\u5FDC\u3002\u5FC5\u8981\u306A\u3089\u6B21\u306E\u6BB5\u306E `CASE` \u3067\u7A7A\u6587\u5B57\u3092\u7F6E\u304D\u63DB\u3048\u308B\n- `LAG` / `LEAD` \u306F `ORDER BY` \u5FC5\u9808\u3002\u5168\u9806\u5E8F\u3067\u306A\u3044\u5834\u5408\u306F\u540C\u9806\u5185\u306E\u524D\u5F8C\u95A2\u4FC2\u304C\u672A\u898F\u5B9A\u306B\u306A\u308B\u305F\u3081\u3001\u7269\u7406 APP \u3067\u306F\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u306A\u3069\u306E\u30BF\u30A4\u30D6\u30EC\u30FC\u30AF\u30AD\u30FC\u3092\u52A0\u3048\u308B\n- **CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306A\u3069\u306E\u6D3E\u751F relation \u3067\u306F\u3001\u5404\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067 `ORDER BY` \u306E\u5024\u306E\u7D44\u304C\u5165\u529B\u884C\u3092\u4E00\u610F\u306B\u8B58\u5225\u3059\u308B\u3068\u3001\u30AF\u30A8\u30EA\u69CB\u9020\u307E\u305F\u306F\u4FDD\u8A3C\u6E08\u307F\u306E\u30C7\u30FC\u30BF\u5236\u7D04\u304B\u3089\u78BA\u8A8D\u3067\u304D\u308B\u5834\u5408\u306B\u9650\u308A\u8B66\u544A\u3092\u7121\u8996\u3067\u304D\u308B\u3002** \u5143\u306E\u96C6\u7D04\u30AD\u30FC\u3092\u3059\u3079\u3066\u542B\u3080\u5F62\u3084\u3001JOIN \u5F8C\u3082\u540C\u3058\u7CFB\u5217\u5024\u304C\u5404\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067\u9AD8\u30051\u884C\u3068\u4FDD\u8A3C\u3067\u304D\u308B\u5F62\u304C\u8A72\u5F53\u3059\u308B\n- \u751F\u6210\u5217\u3001\u518D\u5E30\u306E\u6DF1\u3055\u5217\u3001\u307E\u305F\u306F `$id` \u306B\u7531\u6765\u3059\u308B\u5217\u3067\u3042\u308B\u3068\u3044\u3046\u7406\u7531\u3060\u3051\u3067\u306F\u8B66\u544A\u3092\u7121\u8996\u3067\u304D\u306A\u3044\u3002\u30A8\u30F3\u30B8\u30F3\u304C\u6D3E\u751F relation \u306E\u4E00\u610F\u6027\u3092\u9759\u7684\u306B\u8A3C\u660E\u3067\u304D\u306A\u3044\u5834\u5408\u306F\u3001\u5B9F\u969B\u306B\u306F\u4E00\u610F\u3067\u3082\u8B66\u544A\u304C\u6B8B\u308B\uFF08`ksql_docs` \u306E `recipes/r16` \u306B\u4F8B\u304C\u3042\u308B\uFF09\n- `LAG` / `LEAD` \u306F soft keyword\u3002\u540C\u540D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u5F93\u6765\u3069\u304A\u308A\u53C2\u7167\u3067\u304D\u308B\n\n```sql\n-- \u9867\u5BA2\u3054\u3068\u306E\u53D7\u6CE8\u3092\u65B0\u3057\u3044\u9806\u306B\u63A1\u756A\nSELECT \u9867\u5BA2ID, \u53D7\u6CE8\u65E5, \u91D1\u984D,\n ROW_NUMBER() OVER (PARTITION BY \u9867\u5BA2ID ORDER BY \u53D7\u6CE8\u65E5 DESC) AS rn\nFROM APP300\n```\n\n### \u524D\u5F8C\u306E\u884C\u3092\u53C2\u7167\u3059\u308B `LAG` / `LEAD`\n\n\u524D\u6708\u6BD4\u306E\u3088\u3046\u306B\u30A6\u30A3\u30F3\u30C9\u30A6\u7D50\u679C\u3092\u8A08\u7B97\u3078\u4F7F\u3046\u5834\u5408\u306F\u3001\u96C6\u7D04\u3001`LAG`\u3001\u6BD4\u7387\u8A08\u7B97\u306E3\u6BB5\u306B\u5206\u3051\u307E\u3059\u3002\u30A6\u30A3\u30F3\u30C9\u30A6\u7D50\u679C\u3092\u540C\u3058SELECT\u306E\u5F0F\u3078\u76F4\u63A5\u5165\u308C\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\n\n```sql\nWITH \u6708\u6B21 AS (\n SELECT DATE_FORMAT(\u65E5\u4ED8, '%Y-%m') AS \u5E74\u6708, SUM(\u500B\u6570) AS \u51FA\u5EAB\u6570\n FROM APP4228 WHERE \u5165\u51FA\u5EAB\u533A\u5206 = '\u51FA\u5EAB' GROUP BY \u5E74\u6708\n), \u524D\u6708\u4ED8\u304D AS (\n SELECT \u5E74\u6708, \u51FA\u5EAB\u6570,\n LAG(\u51FA\u5EAB\u6570) OVER (ORDER BY \u5E74\u6708) AS \u524D\u6708\n FROM \u6708\u6B21\n)\nSELECT \u5E74\u6708, \u51FA\u5EAB\u6570, \u524D\u6708,\n CASE WHEN \u524D\u6708 = '' THEN ''\n ELSE ROUND((\u51FA\u5EAB\u6570 - \u524D\u6708) * 100.0 / \u524D\u6708, 1) END AS \u524D\u6708\u6BD4\nFROM \u524D\u6708\u4ED8\u304D\nORDER BY \u5E74\u6708\n```\n\n\u53C2\u7167\u5148\u306E\u30BB\u30EB\u304C\u7A7A\u306A\u3089\u7A7A\u6587\u5B57\u3092\u305D\u306E\u307E\u307E\u8FD4\u3057\u307E\u3059\u3002\u5F15\u6570\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3067\u306A\u304F\u3001\u7B97\u8853\u30FB\u6587\u5B57\u5217\u95A2\u6570\u30FB`CASE`\u30FB\u9023\u7D50\u3092\u542B\u3080\u5024\u5F0F\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u51FA\u529B\u5217\u306F\u5F15\u6570\u306E\u578B\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u5F15\u304D\u7D99\u3050\u305F\u3081\u3001\u6B21\u306E\u6BB5\u306E `ORDER BY` \u3084 `MIN` / `MAX` \u3082\u6570\u5024\u9806\u30FB\u65E5\u4ED8\u9806\u30FB\u9078\u629E\u80A2\u306E\u5B9A\u7FA9\u9806\u306A\u3069\u5143\u306E\u5217\u306E\u6BD4\u8F03\u898F\u5247\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\n\n### \u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u30D5\u30EC\u30FC\u30E0\n\n`ORDER BY` \u304C\u7121\u3044\u5834\u5408\u306F\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5168\u4F53\u3092\u96C6\u8A08\u3057\u3001\u5168\u884C\u3078\u540C\u3058\u5024\u3092\u8F09\u305B\u307E\u3059\u3002`ORDER BY` \u304C\u3042\u308B\u5834\u5408\u306E\u65E2\u5B9A\u306F\u6A19\u6E96\u3069\u304A\u308A `RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW` \u3067\u3059\u3002\u660E\u793A\u3067\u304D\u308B\u30D5\u30EC\u30FC\u30E0\u306F `ROWS` \u307E\u305F\u306F `RANGE` \u306E\u540C\u3058\u56FA\u5B9A\u5883\u754C\u3060\u3051\u3067\u3059\u3002\n\n\u524D\u65E5\u307E\u3067\u306E\u6B8B\u9AD8\u304C60\u3067\u3001\u540C\u3058\u65E5\u306B3\u4EF6\u306E\u5897\u6E1B\u304C\u3042\u308B\u5834\u5408\u3001`RANGE` \u306F\u540C\u9806\u30B0\u30EB\u30FC\u30D7\u672B\u5C3E\u306E\u5024\u3092\u5168peer\u884C\u3078\u66F8\u304D\u623B\u3057\u3001`ROWS` \u306F\u884C\u3054\u3068\u306E\u9014\u4E2D\u5024\u3092\u8FD4\u3057\u307E\u3059\u3002\n\n| \u65E5\u4ED8 | \u5897\u6E1B | `ROWS`\uFF08\u660E\u793A\uFF09 | `RANGE`\uFF08\u65E2\u5B9A\uFF09 |\n|---|---:|---:|---:|\n| 2026-03-18 | +100 | 160 | 110 |\n| 2026-03-18 | -30 | 130 | 110 |\n| 2026-03-18 | -20 | 110 | 110 |\n\n\u65E5\u6B21\u6B8B\u9AD8\u3067\u306F\u65E2\u5B9A `RANGE`\u3001\u53D6\u5F15\u3054\u3068\u306E\u6B8B\u9AD8\u3067\u306F `ROWS` \u3092\u660E\u793A\u3057\u307E\u3059\u3002\u5168\u9806\u5E8F\u306B\u3057\u305F\u3044\u5834\u5408\u306F\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u306A\u3069\u306E\u30BF\u30A4\u30D6\u30EC\u30FC\u30AF\u30AD\u30FC\u3082 `ORDER BY` \u306B\u52A0\u3048\u307E\u3059\u3002**CTE \u3084\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u8AAD\u3080\u5834\u5408\u306F\u305D\u306E\u8868\u306B `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7` \u304C\u7121\u3044**\u306E\u3067\u3001\u5143\u306B\u306A\u3063\u305F\u96C6\u7D04\u306E\u30AD\u30FC\u306A\u3069\u3001\u305D\u306E\u8868\u306E\u4E2D\u3067\u4E00\u610F\u306B\u306A\u308B\u5217\u3092\u4F7F\u3044\u307E\u3059\u3002`EXPLAIN` \u306F\u5B9F\u52B9\u30D5\u30EC\u30FC\u30E0\u3092\u8868\u793A\u3057\u3001\u65E2\u5B9A `RANGE` \u3060\u3051 `(\u65E2\u5B9A)` \u3092\u4ED8\u3051\u307E\u3059\u3002\n\n```sql\nSELECT \u88FD\u54C1\u540D, \u65E5\u4ED8, \u500B\u6570_\u5728\u5EAB\u8A08\u7B97\u7528,\n SUM(\u500B\u6570_\u5728\u5EAB\u8A08\u7B97\u7528) OVER (\n PARTITION BY \u88FD\u54C1\u540D ORDER BY \u65E5\u4ED8, \u30EC\u30B3\u30FC\u30C9\u756A\u53F7\n ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW\n ) AS \u7D2F\u7A4D\u5728\u5EAB\nFROM APP4228\n```\n\n\u7A7A\u5024\u30FBNaN \u306E\u30B9\u30AD\u30C3\u30D7\u3068\u6BD4\u8F03\u898F\u5247\u306F\u901A\u5E38\u96C6\u8A08\u3068\u5171\u901A\u3067\u3059\u3002\u5C0F\u6570\u3092\u542B\u3080 `SUM` / `AVG` \u306F\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u4E26\u3073\u9806\u3067\u52A0\u7B97\u3059\u308B\u305F\u3081\u3001\u901A\u5E38\u96C6\u8A08\u3068\u306E\u6BD4\u8F03\u306F\u76F8\u5BFE\u8AA4\u5DEE `1e-12` \u3092\u76EE\u5B89\u306B\u3057\u307E\u3059\u3002`MIN` / `MAX` \u306F canonical \u540C\u5024\u306E\u5024\uFF08\u4F8B: \u6570\u5024\u578B\u306E `\"1\"` \u3068 `\"01\"`\uFF09\u3067\u306F\u5148\u306B\u8D70\u67FB\u3057\u305F raw \u8868\u8A18\u3092\u4FDD\u6301\u3059\u308B\u305F\u3081\u3001raw \u8868\u8A18\u306F\u4E0D\u5B9A\u3067\u3059\u3002\n\n`WHERE` \u306F\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u3088\u308A\u5148\u306B\u8A55\u4FA1\u3055\u308C\u308B\u305F\u3081\u3001\u540C\u3058SELECT\u306E `WHERE rn = 1` \u3067\u306F\u7D5E\u308A\u8FBC\u3081\u307E\u305B\u3093\u3002CTE\u3067\u30B9\u30B3\u30FC\u30D7\u3092\u5206\u3051\u308B\u3068\u3001\u5404\u9867\u5BA2\u306E\u6700\u65B0\u884C\u3092\u5168\u5217\u4ED8\u304D\u30671\u6587\u53D6\u5F97\u3067\u304D\u307E\u3059\u3002\n\n```sql\nWITH ranked AS (\n SELECT \u9867\u5BA2ID, \u53D7\u6CE8\u65E5, \u91D1\u984D,\n ROW_NUMBER() OVER (PARTITION BY \u9867\u5BA2ID ORDER BY \u53D7\u6CE8\u65E5 DESC) AS rn\n FROM APP300\n)\nSELECT \u9867\u5BA2ID, \u53D7\u6CE8\u65E5, \u91D1\u984D\nFROM ranked\nWHERE rn = 1\n```\n\n\u30A6\u30A3\u30F3\u30C9\u30A6\u5185\u306E `ORDER BY` \u306F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u901A\u5E38`ORDER BY`\u3068\u540C\u3058canonical\u6BD4\u8F03\u898F\u5247\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002CTE\uFF0F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7531\u6765\u3067\u3082\u4F1D\u64AD\u3057\u305F\u578B\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u4F7F\u3044\u3001\u578B\u3092\u78BA\u5B9A\u3067\u304D\u306A\u3044\u5217\u306F\u6587\u5B57\u5217\u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002\u5024\u306E\u898B\u305F\u76EE\u306B\u3088\u308B\u6570\u5024\uFF0F\u6587\u5B57\u5217\u306E\u30DA\u30A2\u5358\u4F4D\u5207\u66FF\u306F\u884C\u3044\u307E\u305B\u3093\u3002`KORDER BY`\u306F\u30A6\u30A3\u30F3\u30C9\u30A6\u5185\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\n\u540C\u3058SELECT\u5185\u3067\u306E `GROUP BY`\uFF0F\u96C6\u8A08\u95A2\u6570\u3068\u306E\u4F75\u7528\u306F\u672A\u5BFE\u5FDC\u3067\u3059\u3002\u96C6\u7D04\u7D50\u679C\u3078\u9806\u4F4D\u3092\u4ED8\u3051\u308B\u5834\u5408\u306FCTE\u3067\u30B9\u30B3\u30FC\u30D7\u3092\u5206\u3051\u307E\u3059\u3002\n\n```sql\nWITH agg AS (\n SELECT \u90E8\u7F72, SUM(\u58F2\u4E0A) AS \u5408\u8A08 FROM APP300 GROUP BY \u90E8\u7F72\n)\nSELECT \u90E8\u7F72, \u5408\u8A08, RANK() OVER (ORDER BY \u5408\u8A08 DESC) AS \u9806\u4F4D\nFROM agg\n```\n\n---", uri: "ksql://language-reference/10-1-window-functions" }, "11-limit-offset": { heading: "11. LIMIT / OFFSET", text: "## 11. LIMIT / OFFSET\n\n\u53D6\u5F97\u4EF6\u6570\u306E\u4E0A\u9650\u3068\u30B9\u30AD\u30C3\u30D7\u4EF6\u6570\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n\n```sql\nSELECT * FROM APP100 LIMIT 10\nSELECT * FROM APP100 ORDER BY \u4F5C\u6210\u65E5\u6642 DESC LIMIT 50\nSELECT * FROM APP100 ORDER BY \u4F5C\u6210\u65E5\u6642 DESC LIMIT 20 OFFSET 40\n```\n\n- `LIMIT n` \u2014 \u6700\u5927 n \u4EF6\u3092\u8FD4\u3059\n- `OFFSET m` \u2014 \u5148\u982D m \u4EF6\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u304B\u3089\u8FD4\u3059\uFF08\u30DA\u30FC\u30B8\u30F3\u30B0\u7528\uFF09\n\n### v3.0.0 \u5236\u9650\u5024\u4E00\u89A7\n\n| \u5BFE\u8C61 | \u5236\u9650\u5024 | \u8D85\u904E\u30FB\u6761\u4EF6\u4E0D\u6210\u7ACB\u6642\u306E\u52D5\u4F5C |\n|---|---:|---|\n| \u901A\u5E38`ORDER BY`\u306E`LIMIT` | SQL\u69CB\u6587\u4E0A\u306E\u56FA\u5B9A\u4E0A\u9650\u306A\u3057 | REST top-N\u306E\u6761\u4EF6\u3092\u6E80\u305F\u3055\u306A\u3044\u5024\uFF08\u521D\u671F\u7248\u3067\u306F`LIMIT > 500`\u7B49\uFF09\u306F\u7981\u6B62\u305B\u305A\u3001\u5B8C\u5168\u5019\u88DC\u53D6\u5F97\u5F8C\u306Elocal sort\u3078\u5207\u308A\u66FF\u3048\u308B |\n| \u901A\u5E38`ORDER BY`\u306E`OFFSET` | SQL\u69CB\u6587\u4E0A\u306E\u56FA\u5B9A\u4E0A\u9650\u306A\u3057 | REST top-N\u306E\u6761\u4EF6\u3092\u6E80\u305F\u3055\u306A\u3044\u5024\uFF08\u521D\u671F\u7248\u3067\u306F`OFFSET > 10000`\u7B49\uFF09\u306F\u7981\u6B62\u305B\u305A\u3001local\u8A55\u4FA1\u3078\u5207\u308A\u66FF\u3048\u308B |\n| local `ORDER BY`\u306E\u5019\u88DC\u53D6\u5F97 | \u5B9F\u884C\u6642`maxRecords`\u672A\u6E80\u3067\u5B8C\u4E86\u3059\u308B\u3053\u3068 | \u4E0A\u9650\u3078\u5230\u9054\u3059\u308B\u3068\u3001`LIMIT 1`\u3084`onLimit=truncate`\u3067\u3082`FetchAllLimitError`\u3002\u90E8\u5206\u5019\u88DC\u306Etop-N\u306F\u8FD4\u3055\u306A\u3044 |\n| `CANONICAL_REST_TOP_N`\u306E\u7A93 | `LIMIT 0..500`\u304B\u3064`LIMIT <= maxRecords`\u3001`OFFSET 0..10000` | \u5229\u7528\u8005\u30A8\u30E9\u30FC\u306B\u306F\u305B\u305A`CANONICAL_LOCAL`\u3078\u5207\u308A\u66FF\u3048\u308B\u3002\u521D\u671F\u30AD\u30FCallowlist\u306F`$id`\u306E\u307F |\n| `KORDER BY`\u306E`LIMIT` | **\u5FC5\u9808**\u3002`0..500`\u304B\u3064`LIMIT <= maxRecords` | planning error\u3002\u901A\u5E38`ORDER BY`\u3078\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3057\u306A\u3044 |\n| `KORDER BY`\u306E`OFFSET` | \u7701\u7565\u307E\u305F\u306F`0..10000` | `10001`\u4EE5\u4E0A\u306Fplanning error\u3002API\u304C\u53D7\u7406\u3059\u308B\u5834\u5408\u3067\u3082\u8A31\u53EF\u3057\u306A\u3044 |\n\n`KORDER BY` \u306E\u7A93\u5236\u9650\u306F **v3.1.0** \u3067\u7DE9\u548C\u3055\u308C\u3001\u5358\u767AGET\u306B\u53CE\u307E\u3089\u306A\u3044\u7A93\u3092 Cursor API \u3067\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF08\u6761\u4EF6: \u8D70\u67FB\u4EF6\u6570 `OFFSET + LIMIT` \u2264 `maxRecords`\uFF09\u3002\u8A73\u7D30\u3068\u6CE8\u610F\u70B9\u306F \xA710\u300C\u5927\u304D\u3044\u7A93\u3068 Cursor API\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n`maxRecords`\u306FSQL\u306E\u8FD4\u5374\u884C\u6570\u3067\u306F\u306A\u304F\u3001REST\u304B\u3089\u53D6\u5F97\u3057\u3066\u4FDD\u6301\u3059\u308B\u5019\u88DC\u884C\u6570\u306E\u4E0A\u9650\u3067\u3059\u3002\u5165\u53E3\u3054\u3068\u306E\u65E2\u5B9A\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059\u3002\n\n| \u5B9F\u884C\u9762 | `maxRecords`\u65E2\u5B9A\u5024 | \u5909\u66F4\u65B9\u6CD5 |\n|---|---:|---|\n| \u30A8\u30F3\u30B8\u30F3API\u3092\u76F4\u63A5\u5229\u7528 | 10,000\u4EF6 | `ExecuteOptions.maxRecords` |\n| CLI | 500\u4EF6 | `--max-records`\uFF0F`KSQL_MAX_RECORDS`\uFF0Fprofile `query.maxRecords` |\n| MCP | 500\u4EF6 | `ksql_query`\u30FB`ksql_explain`\u7B49\u306Etool\u5165\u529B`maxRecords`\uFF0F`KSQL_MAX_RECORDS`\uFF0Fprofile `query.maxRecords` |\n| \u30D7\u30E9\u30B0\u30A4\u30F3 | 3,000\u4EF6 | \u5B9F\u884C\u753B\u9762\u306E\u300C\u6700\u5927\u53D6\u5F97\u4EF6\u6570\u300D |\n| \u516C\u5F0F API `/flow` | 10,000\u4EF6 | `createExecutionContext`\uFF0F`explainScript` \u306E options `maxRecords`\uFF08`executeStatement`\u30FB`previewStatement` \u306F\u5B9F\u884C\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306E\u5024\u3092\u5171\u6709\u30FBv3.69.0\u301C\u3002\u2192 \xA727.9\uFF09 |\n\n\u5024\u3092\u5F15\u304D\u4E0A\u3052\u308B\u3068API\u547C\u51FA\u3057\u56DE\u6570\u3001\u30E1\u30E2\u30EA\u4F7F\u7528\u91CF\u3001\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u30EA\u30B9\u30AF\u3082\u5897\u3048\u307E\u3059\u3002`CREATE TEMP TABLE`\u306E\u5B9F\u4F53\u5316\u306B\u306F\u5225\u306E`tempTableMaxRows`\uFF08\u65E2\u5B9A10,000\u4EF6\uFF09\u304C\u9069\u7528\u3055\u308C\u3001`maxRecords`\u3068\u306F\u72EC\u7ACB\u3067\u3059\u3002**`maxRecords`\u3060\u3051\u5F15\u304D\u4E0A\u3052\u3066\u3082\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u307810,000\u884C\u8D85\u3092\u5B9F\u4F53\u5316\u3059\u308B\u6587\u306F`tempTableMaxRows`\u3067\u505C\u6B62\u3057\u307E\u3059**\u3002\u5B9F\u4F53\u5316\u3092\u4F34\u3046\u30D0\u30C3\u30C1\u3067\u306F\u4E21\u65B9\u3092\u4F75\u305B\u3066\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5B9F\u6E2C\u30FBv3.72.0\uFF09\u3002\n\n> **`LIMIT`\u3068`maxRecords`\u306F\u5225\u306E\u5024\u3067\u3059:** `LIMIT`\u306F\u8FD4\u5374\u884C\u6570\u3001`maxRecords`\u306F\u5019\u88DC\u53D6\u5F97\u6570\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002`LIMIT`\u3092\u7701\u7565\u3057\u3066\u3082\u7121\u5236\u9650\u306B\u306F\u306A\u3089\u305A\u3001\u4E0A\u8868\u306E\u5165\u53E3\u5225`maxRecords`\u304C\u9069\u7528\u3055\u308C\u307E\u3059\u3002\n\n> **`LIMIT > 500` \u306E\u65E9\u671F\u505C\u6B62:** `ORDER BY`\u304C\u306A\u304FKLIKE\u3092\u542B\u307E\u306A\u3044\u5B89\u5168\u306A\u7D4C\u8DEF\u3067\u306F\u3001`OFFSET + LIMIT`\u4EF6\u3092\u53D6\u5F97\u3057\u305F\u6642\u70B9\u3067\u6B63\u5E38\u7D42\u4E86\u3057\u307E\u3059\u3002`maxRecords`\u306F\u5B9F\u969B\u306B\u53D6\u5F97\u3059\u308B\u884C\u6570\u306E\u4E0A\u9650\u3067\u3059\u3002\n\n> **ORDER BY\u3068\u53D6\u5F97\u4E0A\u9650\uFF08v3.0.0\uFF09:** \u30ED\u30FC\u30AB\u30EB`ORDER BY`\u306F\u6B63\u3057\u3044top-N\u306E\u305F\u3081\u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u3092\u5FC5\u8981\u3068\u3057\u307E\u3059\u3002\u4E0A\u9650\u5230\u9054\u6642\u306B`onLimit=truncate`\u3067\u90E8\u5206\u5019\u88DC\u3092\u4E26\u3079\u66FF\u3048\u3066\u8FD4\u3055\u305A\u3001\u30A8\u30E9\u30FC\u306B\u3057\u307E\u3059\u3002`CANONICAL_REST_TOP_N`\uFF08\u521D\u671Fallowlist\u306F`$id`\u306E\u307F\uFF09\u3068`KORDER_NATIVE`\u306F\u5358\u767AREST\u7A93\u306A\u306E\u3067\u3001\u3053\u306E\u5B8C\u5168\u5165\u529B\u30A8\u30E9\u30FC\u306E\u5BFE\u8C61\u5916\u3067\u3059\u3002\n\n> **\u96C6\u8A08\u30FB\u91CD\u8907\u6392\u9664\u3068\u53D6\u5F97\u4E0A\u9650:** \u901A\u5E38\u96C6\u8A08\uFF08`COUNT` / `SUM` / `AVG` / `MIN` / `MAX` \u306A\u3069\uFF09\u3001plain `GROUP BY`\u3001`SELECT DISTINCT`\u3001`UNION`\uFF08`ALL` \u306A\u3057\uFF09\u306F\u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u3092\u5FC5\u8981\u3068\u3057\u307E\u3059\u3002\u4E0A\u9650\u5230\u9054\u6642\u306F`onLimit=truncate`\u3067\u3082\u90E8\u5206\u96C6\u5408\u3092\u7573\u3093\u3060\u5024\u3092\u8FD4\u3055\u305A\u3001\u30A8\u30E9\u30FC\u306B\u3057\u307E\u3059\u3002\u5F93\u6765\u6210\u529F\u3057\u3066\u898B\u3048\u305F\u5834\u5408\u3082\u7D50\u679C\u306F\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\uFF08\u5B9F\u6E2C\u3067\u306F\u3001\u771F\u306E\u4EF6\u6570\u304C3\u306Elocal `LIKE` + `COUNT(*)`\u304C`maxRecords=3`\u3067`0`\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF09\u3002\u7D20\u306E\u660E\u7D30\u3068`UNION ALL`\u306F\u5F93\u6765\u3069\u304A\u308A\u53D6\u5F97\u884C\u3068\u8B66\u544A\u3092\u8FD4\u3057\u307E\u3059\u3002\u5B8C\u5168\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A`COUNT(*)`\u306E\u5358\u767A`totalCount`\u53D6\u5F97\u306F\u30EC\u30B3\u30FC\u30C9\u672C\u4F53\u3092\u6253\u3061\u5207\u3089\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u5236\u9650\u306E\u5BFE\u8C61\u5916\u3067\u3059\u3002\n\n> **SIMPLE \u30E2\u30FC\u30C9\uFF08JOIN \u306A\u3057\uFF09:** `ORDER BY`\u306EREST\u62BC\u3057\u4E0B\u3052\u306FLIMIT\u5024\u3060\u3051\u3067\u6C7A\u3081\u305A\u3001schema-aware planner\u304CWHERE\u30FB\u578B\u30FBquery\u5F62\u72B6\u30FB\u7A93\u5168\u4F53\u3092\u691C\u67FB\u3057\u307E\u3059\u3002\u305D\u308C\u4EE5\u5916\u306F\u5168\u5019\u88DC\u53D6\u5F97\u5F8C\u306Bcanonical\u9806\u3092\u9069\u7528\u3057\u307E\u3059\u3002\n> **FULL_SCAN \u30E2\u30FC\u30C9\uFF08JOIN \u3042\u308A\u7B49\uFF09:** JS \u5074\u3067\u30B9\u30E9\u30A4\u30B9\u51E6\u7406\u3057\u307E\u3059\u3002\n\n---", uri: "ksql://language-reference/11-limit-offset" }, "12-union": { heading: "12. UNION / UNION ALL", text: "## 12. UNION / UNION ALL\n\n\u8907\u6570\u306E SELECT \u7D50\u679C\u3092\u7E26\u306B\u7D50\u5408\u3057\u307E\u3059\u3002\n\n```sql\nSELECT \u30AB\u30E9\u30E0\u30EA\u30B9\u30C8 FROM \u30C6\u30FC\u30D6\u30EB1\nUNION [ALL]\nSELECT \u30AB\u30E9\u30E0\u30EA\u30B9\u30C8 FROM \u30C6\u30FC\u30D6\u30EB2\n```\n\n- `UNION` \u2014 \u91CD\u8907\u884C\u3092\u9664\u53BB\uFF08DISTINCT\uFF09\n- `UNION ALL` \u2014 \u91CD\u8907\u884C\u3092\u305D\u306E\u307E\u307E\u4FDD\u6301\uFF08\u9AD8\u901F\uFF09\n- \u4E21\u8FBA\u306F\u540C\u3058\u5217\u6570\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u5B9F\u4F53\u5316\u5F8C\u306E\u5217\u6570\u304C\u4E00\u81F4\u3057\u306A\u3044\u5834\u5408\u306F\u3001\u5DE6\u53F3\u306E\u5217\u6570\u3092\u793A\u3059\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\u8DB3\u308A\u306A\u3044\u5074\u306B\u306F `''` \u306A\u3069\u306E\u30EA\u30C6\u30E9\u30EB\u3092\u8FFD\u52A0\u3057\u3066\u5217\u6570\u3092\u63C3\u3048\u3066\u304F\u3060\u3055\u3044\n- \u53F3\u8FBA\u306E\u5217\u540D\u306F\u5DE6\u8FBA\u306E\u5217\u540D\u306B\u4F4D\u7F6E\u5BFE\u5FDC\u3067\u30EA\u30DE\u30C3\u30D7\u3055\u308C\u307E\u3059\n\n```sql\n-- 2\u30A2\u30D7\u30EA\u306E\u30C7\u30FC\u30BF\u3092\u91CD\u8907\u9664\u53BB\u3057\u3066\u7D50\u5408\nSELECT \u9867\u5BA2\u540D, \u91D1\u984D FROM APP100\nUNION\nSELECT \u9867\u5BA2\u540D, \u91D1\u984D FROM APP200\n\n-- \u91CD\u8907\u3092\u4FDD\u6301\u3057\u3066\u5168\u4EF6\u7D50\u5408\nSELECT \u9867\u5BA2\u540D FROM APP100\nUNION ALL\nSELECT \u9867\u5BA2\u540D FROM APP200\n\n-- 3\u3064\u4EE5\u4E0A\u306E\u9023\u9396\uFF08\u5DE6\u7D50\u5408\uFF09\nSELECT \u540D\u524D FROM APP100\nUNION\nSELECT \u540D\u524D FROM APP200\nUNION\nSELECT \u540D\u524D FROM APP300\n```\n\n> UNION \u306F\u5E38\u306B FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002\n\n---", uri: "ksql://language-reference/12-union" }, "13-with-cte": { heading: "13. WITH \u53E5\uFF08CTE\uFF09", text: "## 13. WITH \u53E5\uFF08CTE\uFF09\n\n\u30AF\u30A8\u30EA\u306E\u5192\u982D\u3067\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\uFF08CTE: Common Table Expression\uFF09\u3092\u5B9A\u7FA9\u3057\u3001\u5F8C\u7D9A\u306E SELECT / JOIN \u3067\u53C2\u7167\u3067\u304D\u307E\u3059\u3002\n\n```sql\nWITH CTE\u540D AS (\n \u30B5\u30D6\u30AF\u30A8\u30EA\n)\nSELECT ...\nFROM CTE\u540D\n```\n\n### \u57FA\u672C\u4F8B\n\n```sql\n-- GROUP BY \u96C6\u8A08\u7D50\u679C\u3092 CTE \u306B\u5165\u308C\u3066\u4E0A\u4F4D N \u4EF6\u3092\u53D6\u5F97\nWITH \u6708\u5225\u96C6\u8A08 AS (\n SELECT \u6708, SUM(\u91D1\u984D) AS \u5408\u8A08\n FROM APP100\n GROUP BY \u6708\n)\nSELECT \u6708, \u5408\u8A08\nFROM \u6708\u5225\u96C6\u8A08\nORDER BY \u5408\u8A08 DESC\nLIMIT 5\n```\n\n### CTE \u3092 JOIN \u3067\u4F7F\u3046\n\n```sql\nWITH \u53D7\u6CE8\u96C6\u8A08 AS (\n SELECT \u9867\u5BA2ID, SUM(\u91D1\u984D) AS \u5408\u8A08\n FROM APP100\n GROUP BY \u9867\u5BA2ID\n)\nSELECT c.\u9867\u5BA2\u540D, r.\u5408\u8A08\nFROM APP200 AS c\nINNER JOIN \u53D7\u6CE8\u96C6\u8A08 AS r ON c.\u9867\u5BA2ID = r.\u9867\u5BA2ID\nWHERE r.\u5408\u8A08 > 100000\n```\n\n### \u8907\u6570 CTE\n\n```sql\nWITH\n A\u985E AS (SELECT \u7A2E\u5225, SUM(\u91D1\u984D) AS \u5408\u8A08 FROM APP100 WHERE \u7A2E\u5225 = 'A' GROUP BY \u7A2E\u5225),\n B\u985E AS (SELECT \u7A2E\u5225, SUM(\u91D1\u984D) AS \u5408\u8A08 FROM APP100 WHERE \u7A2E\u5225 = 'B' GROUP BY \u7A2E\u5225)\nSELECT \u7A2E\u5225, \u5408\u8A08 FROM A\u985E\nUNION ALL\nSELECT \u7A2E\u5225, \u5408\u8A08 FROM B\u985E\n```\n\n### CTE \u5185\u3067 UNION\n\n```sql\nWITH \u7D71\u5408 AS (\n SELECT \u9867\u5BA2\u540D FROM APP100\n UNION ALL\n SELECT \u9867\u5BA2\u540D FROM APP200\n)\nSELECT \u9867\u5BA2\u540D FROM \u7D71\u5408\nWHERE \u9867\u5BA2\u540D LIKE '\u7530%'\n```\n\n### CTE \u30A4\u30F3\u30E9\u30A4\u30F3\u5316\uFF08\u81EA\u52D5\u6700\u9069\u5316\uFF09\n\n\u5358\u7D14\u306A CTE\uFF08GROUP BY\u30FB\u96C6\u8A08\u30FBJOIN \u306A\u3057\uFF09\u306F\u81EA\u52D5\u7684\u306B\u30A4\u30F3\u30E9\u30A4\u30F3\u5316\u3055\u308C\u3001CTE \u306E WHERE \u3068\u6700\u7D42\u30AF\u30A8\u30EA\u306E WHERE \u304C\u5408\u6210\u3055\u308C\u3066 kintone REST API \u306B\u9001\u3089\u308C\u307E\u3059\u3002\n\n```sql\n-- \u66F8\u3044\u305F\u30AF\u30A8\u30EA\nWITH \u5BFE\u8C61 AS (SELECT * FROM APP100 WHERE \u533A\u5206 = 'A')\nSELECT * FROM \u5BFE\u8C61 WHERE \u91D1\u984D > 1000\n\n-- \u5B9F\u884C\u3055\u308C\u308B\u30AF\u30A8\u30EA\uFF08\u30A4\u30F3\u30E9\u30A4\u30F3\u5316\uFF09\n-- kintone \u30AF\u30A8\u30EA: \u533A\u5206 = \"A\" and \u91D1\u984D > 1000\n```\n\n\u30A4\u30F3\u30E9\u30A4\u30F3\u5316\u3055\u308C\u306A\u3044\u5834\u5408\uFF08FULL_SCAN \u306E\u307E\u307E\uFF09:\n- CTE \u304C\u8907\u6570\u3042\u308B\n- CTE \u672C\u4F53\u306B GROUP BY / \u96C6\u8A08\u95A2\u6570\u304C\u3042\u308B\n- \u6700\u7D42\u30AF\u30A8\u30EA\u3067 CTE \u3092 JOIN \u3057\u3066\u3044\u308B\n\n### CTE \u3068\u76F8\u5BFE\u65E5\u4ED8\n\n\u5B9F\u4F53\u5316 CTE \u306E\u672C\u4F53\u3001`WITH` \u306E\u6700\u7D42 SELECT\u3001\u5358\u4E00 CTE \u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u5C55\u958B\u3067\u306F\u3001\u305D\u306E SELECT \u306E `WHERE` \u5168\u4F53\u3092 kintone \u30AF\u30A8\u30EA\u3078 exact \u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u5834\u5408\u306B\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u3053\u308C\u3089\u3092 JOIN \u5165\u529B\u306B\u3059\u308B\u5F62\u3001`KORDER BY`\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u3001\u5165\u308C\u5B50 SELECT\u3001\u672C\u4F53\u305D\u306E\u3082\u306E\u304C `UNION` \u306E\u5834\u5408\u3001\u307E\u305F\u306F `WHERE` \u5168\u4F53\u304C exact \u306B\u306A\u3089\u306A\u3044\u5F62\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002JOIN \u3067\u4F7F\u3048\u308B\u7B2C5-W / \u7B2C5-L \u306F\u3001JOIN \u306E\u5168\u5165\u529B\u304C alias \u4ED8\u304D\u7269\u7406 APP \u306E\u5834\u5408\u306B\u9650\u308A\u307E\u3059\u3002\n\n```sql\nWITH \u6708\u5225 AS (\n SELECT \u533A\u5206, COUNT(*) AS \u4EF6\u6570\n FROM APP100\n WHERE \u65E5\u4ED8 = THIS_MONTH()\n GROUP BY \u533A\u5206\n)\nSELECT * FROM \u6708\u5225\n```\n\n`WHERE \u65E5\u4ED8 = THIS_MONTH() AND LENGTH(\u4EF6\u540D) > 1` \u306E\u3088\u3046\u306A prefilter\uFF0Bclient \u6B8B\u4F59\u306E\u5F62\u306F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u3067\u306F\u4F7F\u3048\u307E\u3059\u304C\u3001CTE \u672C\u4F53\u3084 `WITH` \u306E\u6700\u7D42 SELECT\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002\u305D\u306E\u5834\u5408\u306F CTE \u306B\u5207\u308A\u51FA\u3055\u305A\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u3067\u66F8\u304D\u307E\u3059\u3002\n\n### CTE \u5185\u3067\u306E SHOW APPS / DESCRIBE\n\n`SHOW APPS` \u3068 `DESCRIBE` / `DESC` \u306E\u7D50\u679C\u3082 CTE \u3068\u3057\u3066\u5B9A\u7FA9\u3057\u3001\u5F8C\u7D9A\u30AF\u30A8\u30EA\u3067\u30D5\u30A3\u30EB\u30BF\u30FB\u52A0\u5DE5\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- \u540D\u524D\u3067\u30A2\u30D7\u30EA\u4E00\u89A7\u3092\u7D5E\u308A\u8FBC\u3080\nWITH \u30A2\u30D7\u30EA\u4E00\u89A7 AS (SHOW APPS)\nSELECT * FROM \u30A2\u30D7\u30EA\u4E00\u89A7\nWHERE \u30A2\u30D7\u30EA\u540D LIKE '\u53D7\u6CE8%'\n\n-- \u30C6\u30AD\u30B9\u30C8\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u62BD\u51FA\nWITH \u30D5\u30A3\u30FC\u30EB\u30C9 AS (DESCRIBE APP100)\nSELECT * FROM \u30D5\u30A3\u30FC\u30EB\u30C9\nWHERE \u30BF\u30A4\u30D7 IN ('SINGLE_LINE_TEXT', 'MULTI_LINE_TEXT')\n\n-- DESC \u3082\u4F7F\u7528\u53EF\u80FD\nWITH \u30D5\u30A3\u30FC\u30EB\u30C9 AS (DESC APP100)\nSELECT \u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9, \u30E9\u30D9\u30EB FROM \u30D5\u30A3\u30FC\u30EB\u30C9\nORDER BY \u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9 ASC\n```\n\n### GENERATE_SERIES \u2014 \u6574\u6570\u30FB\u65E5\u4ED8\u7CFB\u5217\n\n\u5165\u529B\u30EC\u30B3\u30FC\u30C9\u3092\u4F7F\u308F\u305A\u3001\u6574\u6570\u307E\u305F\u306F `DATE` \u306E\u7CFB\u5217\u3092\u4F5C\u308C\u307E\u3059\u3002`GENERATE_SERIES` \u3092\u76F4\u63A5\u66F8\u3051\u308B\u306E\u306F `WITH` \u306E CTE \u672C\u4F53\u3060\u3051\u3067\u3059\u3002`FROM GENERATE_SERIES(...)`\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u76F4\u66F8\u304D\u3001SELECT \u5217\u306E\u30B9\u30AB\u30E9\u30FC\u95A2\u6570\u3068\u3057\u3066\u306E\u4F7F\u7528\u306B\u306F\u5BFE\u5FDC\u3057\u307E\u305B\u3093\u3002\n\n```text\nWITH CTE\u540D AS (\n GENERATE_SERIES(start, stop [, step]) [AS \u5217\u540D]\n)\nSELECT ... FROM CTE\u540D\n```\n\n\u5217\u540D\u3092\u7701\u7565\u3057\u305F\u5834\u5408\u306F `generate_series` \u3067\u3059\u3002\u6574\u6570\u306E\u65E2\u5B9A step \u306F `1`\u3001\u65E5\u4ED8\u306E\u65E2\u5B9A step \u306F `'1 day'` \u3067\u3059\u3002DATE step \u306F `day(s)`\u3001`month(s)`\u3001`year(s)` \u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002\u6B63\u8CA0\u306E\u5B89\u5168\u306A\u6574\u6570\u4FC2\u6570\u3068\u660E\u793A\u7684\u306A `+`\uFF08`+2` / `'+2 months'`\uFF09\u3092\u4F7F\u7528\u3067\u304D\u3001`stop` \u306B\u3061\u3087\u3046\u3069\u5230\u9054\u3059\u308B\u5024\u306F\u542B\u307F\u307E\u3059\u3002\u7BC4\u56F2\u3068 step \u306E\u5411\u304D\u304C\u9006\u306A\u30890\u884C\uFF08\u5217\u5B9A\u7FA9\u306F\u7DAD\u6301\uFF09\u3001step 0\u306F `ArgumentError` \u3067\u3059\u3002\n\n```sql\nWITH n AS (GENERATE_SERIES(2, 100, 49) AS number)\nSELECT number FROM n ORDER BY number;\n-- 2, 51, 100\uFF08\u6587\u5B57\u5217\u9806\u3067\u306F\u306A\u304F\u6570\u5024\u9806\uFF09\n\nWITH d AS (GENERATE_SERIES('2026-08-05', '2026-08-01', '-2 days') AS \u65E5\u4ED8)\nSELECT \u65E5\u4ED8 FROM d;\n-- 2026-08-05, 2026-08-03, 2026-08-01\n\nWITH m AS (GENERATE_SERIES('2025-08-01', '2026-08-01', '1 month') AS \u6708)\nSELECT \u6708 FROM m ORDER BY \u6708;\n-- 2025-08-01 ... 2026-08-01\uFF0813\u884C\uFF09\n\nWITH y AS (GENERATE_SERIES('2026-01-01', '2022-06-30', '-1 year') AS \u5E74)\nSELECT \u5E74 FROM y;\n-- 2026-01-01, 2025-01-01, 2024-01-01, 2023-01-01\n```\n\n\u65E5\u4ED8\u306F\u5B9F\u5728\u3059\u308B `YYYY-MM-DD` \u3060\u3051\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002month step \u306E start \u306F\u6708\u521D\uFF08`YYYY-MM-01`\uFF09\u3001year step \u306E start \u306F\u5E74\u521D\uFF08`YYYY-01-01`\uFF09\u306B\u9650\u308A\u307E\u3059\u3002stop \u306F\u6708\u521D\u30FB\u5E74\u521D\u3067\u306A\u304F\u3066\u3082\u5305\u542B\u5883\u754C\u3068\u3057\u3066\u4F7F\u3048\u3001\u6B63\u65B9\u5411\u3067\u306F stop \u304C\u5C5E\u3059\u308B\u671F\u9593\u306E\u30A2\u30F3\u30AB\u30FC\u307E\u3067\u3001\u8CA0\u65B9\u5411\u3067\u306F stop \u4EE5\u4E0A\u306E\u671F\u9593\u30A2\u30F3\u30AB\u30FC\u307E\u3067\u3092\u8FD4\u3057\u307E\u3059\u3002\u5404\u6708\u30FB\u5E74\u306F start \u30A2\u30F3\u30AB\u30FC\u30680\u59CB\u307E\u308A\u306E\u884C\u756A\u53F7\u304B\u3089\u76F4\u63A5\u7B97\u51FA\u3057\u3001\u6708\u672B\u4E38\u3081\u3092\u7D2F\u7A4D\u3057\u307E\u305B\u3093\u3002\u5C0F\u6570\u3001`DATETIME`\u3001`TIME`\u3001`week` \u306B\u306F\u5BFE\u5FDC\u3057\u307E\u305B\u3093\u3002\u516C\u958B\u884C\u306E\u5024\u306F\u6587\u5B57\u5217\u3067\u3059\u304C\u3001\u751F\u6210\u6642\u306B\u78BA\u5B9A\u3057\u305F NUMBER / DATE \u306E\u5217\u30E1\u30BF\u304C CTE\u3001JOIN\u3001\u5F8C\u7D9A CTE\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u4F1D\u64AD\u3057\u3001\u6BD4\u8F03\u30FB\u30BD\u30FC\u30C8\u306B\u4F7F\u308F\u308C\u307E\u3059\u3002\n\n\u6708\u672B\u306F\u6708\u521D\u7CFB\u5217\u3092 `LAST_DAY` \u3067\u5909\u63DB\u3057\u3001\u6587\u5B57\u5217\u306E\u6708\u30AD\u30FC\u306F `DATE_FORMAT(\u6708, '%Y-%m')` \u3067\u4F5C\u308A\u307E\u3059\u3002\u3046\u308B\u3046\u5E74\u3082 DATE \u610F\u5473\u8AD6\u306B\u5F93\u3046\u305F\u3081\u3001`LAST_DAY('2024-02-01')` \u306F `2024-02-29` \u3067\u3059\u3002\n\n```sql\nWITH m AS (\n GENERATE_SERIES('2024-01-01', '2024-03-01', '1 month') AS \u6708\u521D\n)\nSELECT \u6708\u521D, LAST_DAY(\u6708\u521D) AS \u6708\u672B, DATE_FORMAT(\u6708\u521D, '%Y-%m') AS \u6708\u30AD\u30FC\nFROM m ORDER BY \u6708\u521D;\n```\n\n\u540C\u3058 `WITH` \u6587\u306B\u3042\u308B\u5168\u751F\u6210 CTE\u306E\u751F\u6210\u4EF6\u6570\u5408\u8A08\u306F10,000\u884C\u307E\u3067\u3067\u3059\u3002\u4E0A\u9650\u306F\u5168\u884C\u3092\u4F5C\u308B\u524D\u306B\u691C\u67FB\u3055\u308C\u3001`LIMIT`\u3001`WHERE`\u3001\u5F8C\u6BB5\u96C6\u8A08\u3067\u306F\u56DE\u907F\u3067\u304D\u307E\u305B\u3093\u3002\u540C\u3058\u751F\u6210 CTE\u3092\u8907\u6570\u56DE\u53C2\u7167\u3057\u3066\u3082\u518D\u751F\u6210\u3057\u307E\u305B\u3093\u3002\n\n```sql\nDECLARE @from = '2026-08-01';\nDECLARE @today = TODAY();\nWITH d AS (GENERATE_SERIES(@from, @today) AS \u65E5\u4ED8)\nSELECT \u65E5\u4ED8 FROM d ORDER BY \u65E5\u4ED8;\n```\n\n\u901A\u5E38\u306E\u30B9\u30AB\u30E9\u30FC\u5909\u6570\u304C\u5177\u4F53\u7684\u306A\u65E5\u4ED8\u306B\u306A\u308C\u3070 DATE \u5F15\u6570\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002`ksql_validate` \u306F\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u78BA\u5B9A\u3059\u308B\u578B\u3001step 0\u3001\u4E0D\u6B63\u65E5\u4ED8\u3001\u672A\u5BFE\u5FDC\u5358\u4F4D\u3001\u5B89\u5168\u6574\u6570\u3001\u5358\u4E00\u30FB\u5408\u8A08\u4E0A\u9650\u3092 API 0\u56DE\u3067\u691C\u67FB\u3057\u307E\u3059\u3002\u5909\u6570\u5024\u306B\u4F9D\u5B58\u3059\u308B\u578B\u30FBstep\u30FB\u4EF6\u6570\u306F\u4FDD\u7559\u3057\u3001\u5B9F\u884C\u6642\u306B\u5909\u6570\u89E3\u6C7A\u5F8C\u306E\u5024\u3067\u6700\u7D42\u5224\u5B9A\u3057\u307E\u3059\u3002\u751F\u6210 `WITH` \u306F read-only \u3067\u3001read-only \u4FDD\u5B58\u30AF\u30A8\u30EA\u3068 `ksql_run_saved_query` \u304B\u3089\u5229\u7528\u3067\u304D\u307E\u3059\u3002\n\n\u751F\u6210 CTE\u3092 JOIN \u306A\u3057\u3067\u76F4\u63A5\u8AAD\u3080\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u3001`OVER (ORDER BY \u751F\u6210\u5217)` \u304C\u751F\u6210\u5217\u305D\u306E\u3082\u306E\u3092\u53C2\u7167\u3059\u308B\u5834\u5408\u3001\u305D\u306E\u5217\u306F\u4E00\u610F\u306A\u306E\u3067\u65E2\u5B9A `RANGE` \u3068 `LAG` / `LEAD` \u306E\u5168\u9806\u5E8F\u8B66\u544A\u3092\u6291\u6B62\u3057\u307E\u3059\u3002JOIN\u3001\u81EA\u5DF1 JOIN\u3001`UNION`\u3001\u901A\u5E38 CTE\u306B\u3088\u308B\u518D\u5B9F\u4F53\u5316\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5C55\u958B\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3001`ORDER BY n + 0` \u7B49\u3067\u306F\u65E2\u5B58\u8B66\u544A\u3092\u7DAD\u6301\u3057\u307E\u3059\u3002\n\n\u5B58\u5728\u3057\u306A\u3044\u65E5\u30920\u3067\u88DC\u3046\u5B8C\u5168\u4F8B:\n\n```sql\nWITH \u65E5\u4ED8\u7CFB\u5217 AS (\n GENERATE_SERIES('2026-08-01', '2026-08-04', '1 day') AS \u65E5\u4ED8\n),\n\u65E5\u5225 AS (\n SELECT \u65E5\u4ED8, SUM(\u91D1\u984D) AS \u5408\u8A08\n FROM APP100\n GROUP BY \u65E5\u4ED8\n)\nSELECT s.\u65E5\u4ED8,\n CASE WHEN d.\u5408\u8A08 = '' THEN 0 ELSE d.\u5408\u8A08 END AS \u5408\u8A08\nFROM \u65E5\u4ED8\u7CFB\u5217 AS s\nLEFT JOIN \u65E5\u5225 AS d ON s.\u65E5\u4ED8 = d.\u65E5\u4ED8\nORDER BY s.\u65E5\u4ED8\n```\n\n\u540C\u3058\u5F62\u3092\u6708\u521D\u7CFB\u5217\u306B\u4F7F\u3046\u3068\u3001\u53D6\u5F15\u306E\u306A\u3044\u6708\u30820\u884C\u3067\u306F\u306A\u304F\u5B9F\u7E3E0\u306E\u884C\u306B\u306A\u308A\u307E\u3059\u30020\u57CB\u3081\u5F8C\u306E CTE \u306B `LAG(\u5B9F\u7E3E) OVER (ORDER BY \u6708)` \u3092\u9069\u7528\u3059\u308C\u3070\u3001\u7A7A\u6708\u76F4\u5F8C\u306F2\u304B\u6708\u524D\u306E\u5B9F\u7E3E\u3067\u306F\u306A\u304F\u3001\u76F4\u524D\u306E\u7A7A\u6708\u306E0\u3092\u8FD4\u3057\u307E\u3059\u3002\n\n`EXPLAIN WITH ... GENERATE_SERIES ...` \u306F source\u3001\u5217\u540D\u3001INTEGER / DATE\u3001start\u3001stop\u3001\u6B63\u898F\u5316\u3057\u305F step\u3001\u751F\u6210\u4EF6\u6570\u300110,000\u884C\u30AC\u30FC\u30C9\u3001records API \u304C `none` \u3067\u3042\u308B\u3053\u3068\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u7D14\u7C8B\u306A\u751F\u6210\u7CFB\u5217\u306E\u5B9F\u884C\u3068 EXPLAIN \u306F\u30EC\u30B3\u30FC\u30C9\u3001Cursor\u3001\u66F8\u8FBC\u3001\u30D5\u30A9\u30FC\u30E0\u30FB\u30A2\u30D7\u30EA\u60C5\u5831 API \u3092\u547C\u3073\u307E\u305B\u3093\u3002\n\n### WITH RECURSIVE / CYCLE\uFF08\u518D\u5E30 CTE\uFF09\n\n\u6DF1\u3055\u304C\u30C7\u30FC\u30BF\u6B21\u7B2C\u3067\u5909\u308F\u308B\u968E\u5C64\u306F\u3001read-only \u306E `WITH RECURSIVE` \u3067\u5C55\u958B\u3067\u304D\u307E\u3059\u3002\u518D\u5E30 CTE \u672C\u4F53\u306F `seed SELECT UNION ALL recursive SELECT` \u306E2\u679D\u3068\u3057\u3001\u518D\u5E30\u9805\u306F\u81EA\u5DF1\u53C2\u7167\u30921\u56DE\u3060\u3051 `INNER JOIN` \u306E\u7247\u5074\u306B\u7F6E\u304D\u307E\u3059\u3002\u518D\u5E30 CTE \u306F1\u3064\u306E `WITH` \u306B1\u500B\u307E\u3067\u3067\u3059\u3002CTE \u5217\u540D\u30EA\u30B9\u30C8\u306F\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u3001seed \u3068\u518D\u5E30\u9805\u306E\u5217\u6570\u30FB\u4F4D\u7F6E\u3054\u3068\u306E\u578B\u304C\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u5F8C\u65B9\u53C2\u7167\u3001\u76F8\u4E92\u30FB\u591A\u91CD\u518D\u5E30\u3001\u518D\u5E30\u9805\u306E OUTER JOIN\u30012\u3064\u76EE\u306E JOIN\u3001\u96C6\u8A08\u3001window\u3001`DISTINCT`\u3001subquery\u3001`GROUP BY`\u3001`ORDER BY`\u3001`LIMIT` / `OFFSET`\u3001DML source\u3001\u5165\u308C\u5B50\u306E\u518D\u5E30 CTE \u306F\u975E\u5BFE\u5FDC\u3067\u3059\uFF08\u5C06\u6765\u62E1\u5F35\u306E\u5019\u88DC\uFF09\u3002\n\n```sql\nWITH RECURSIVE \u90E8\u54C1\u5C55\u958B\n (\u89AA\u54C1\u76EE, \u5B50\u54C1\u76EE, \u6DF1\u3055, \u7D2F\u8A08\u54E1\u6570) AS (\n SELECT \u89AA\u54C1\u76EE, \u5B50\u54C1\u76EE, 1, \u54E1\u6570\n FROM APP100\n WHERE \u89AA\u54C1\u76EE = 'P001'\n UNION ALL\n SELECT c.\u89AA\u54C1\u76EE, c.\u5B50\u54C1\u76EE, r.\u6DF1\u3055 + 1, r.\u7D2F\u8A08\u54E1\u6570 * c.\u54E1\u6570\n FROM APP100 AS c\n INNER JOIN \u90E8\u54C1\u5C55\u958B AS r ON c.\u89AA\u54C1\u76EE = r.\u5B50\u54C1\u76EE\n)\nCYCLE \u5B50\u54C1\u76EE SET is_cycle TO 'Y' DEFAULT 'N'\nSELECT \u5B50\u54C1\u76EE, \u6DF1\u3055, \u7D2F\u8A08\u54E1\u6570, is_cycle\nFROM \u90E8\u54C1\u5C55\u958B\nORDER BY \u6DF1\u3055, \u5B50\u54C1\u76EE;\n```\n\n`CYCLE` \u306F\u5358\u4E00\u5217\u3060\u3051\u3092\u53D7\u3051\u4ED8\u3051\u3001`TO` / `DEFAULT` \u306F\u7570\u306A\u308B\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u306B\u3057\u307E\u3059\u3002\u5FAA\u74B0\u5224\u5B9A\u306F\u5404\u884C\u306E\u73FE\u5728 path \u5185\u3060\u3051\u3067\u884C\u3044\u3001global visited \u96C6\u5408\u306F\u4F7F\u3044\u307E\u305B\u3093\u3002\u540C\u3058\u30CE\u30FC\u30C9\u3078\u5225 path \u3067\u5230\u9054\u3057\u305F\u884C\u306F\u5225\u306E\u51FA\u73FE\u3068\u3057\u3066\u6B8B\u308A\u3001\u305D\u308C\u305E\u308C\u518D\u5C55\u958B\u3055\u308C\u307E\u3059\u3002path \u306F\u5185\u90E8\u72B6\u614B\u3067\u3042\u308A\u3001\u51FA\u529B\u5217\u306B\u306F\u3067\u304D\u307E\u305B\u3093\uFF08\u5C06\u6765\u62E1\u5F35\u306E\u5019\u88DC\uFF09\u3002\u5FAA\u74B0\u884C\u306F `TO` \u5024\u3092\u4ED8\u3051\u3066\u7D50\u679C\u30781\u56DE\u542B\u3081\u307E\u3059\u304C\u3001\u6B21\u306E frontier \u306B\u306F\u5165\u308C\u307E\u305B\u3093\u3002\n\n`CYCLE` \u306F\u73FE\u5728 path \u4E0A\u306E\u5FAA\u74B0\u3092\u6B62\u3081\u308B\u3060\u3051\u3067\u3001\u5FAA\u74B0\u306E\u306A\u3044 DAG \u3084\u591A\u7D4C\u8DEF\u5408\u6D41\u306B\u3088\u308B\u7D44\u307F\u5408\u308F\u305B\u7206\u767A\u306E\u5883\u754C\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u305D\u306E\u305F\u3081\u6B21\u306E\u4E09\u5883\u754C\u306F `CYCLE` \u306E\u6709\u7121\u306B\u304B\u304B\u308F\u3089\u305A\u5E38\u306B\u6709\u52B9\u3067\u3001\u5916\u5074 `LIMIT` \u3068 `onLimit=truncate` \u3067\u306F\u7DE9\u548C\u3067\u304D\u307E\u305B\u3093\u3002\u4E0A\u9650\u8D85\u904E\u6642\u306F\u90E8\u5206\u7D50\u679C\u3092\u8FD4\u3055\u305A fail-closed \u3057\u307E\u3059\u3002engine library \u306E\u516C\u958B\u30A8\u30E9\u30FC `code` \u306F\u5F53\u9762 `EXECUTION_ERROR` \u3067\u3059\u3002\n\n#### \u518D\u5E30 CTE \u306E\u5883\u754C\u65E2\u5B9A\u5024\n\n| \u8A2D\u5B9A | \u65E2\u5B9A\u5024 | \u8A08\u6E2C\u5BFE\u8C61 |\n|---|---:|---|\n| `recursiveCteMaxDepth` | 100 | \u751F\u6210\u3055\u308C\u305F\u5019\u88DC\u306E\u518D\u5E30\u6DF1\u3055 |\n| `recursiveCteMaxRows` | 10,000 | seed\u3001\u975E\u5FAA\u74B0\u884C\u3001\u5FAA\u74B0 mark \u884C\u3092\u542B\u3080\u7D2F\u7A4D\u7D50\u679C\u884C\u6570 |\n| `recursiveCteMaxExpansions` | 100,000 | JOIN \u6210\u7ACB\u5F8C\u3001\u518D\u5E30\u9805\u306E WHERE / CYCLE \u9664\u5916\u524D\u306E\u7D2F\u7A4D\u5019\u88DC\u30DA\u30A2\u6570 |\n\n\u4E09\u5024\u306F positive safe integer \u3067\u3059\u3002Node \u7CFB\u3067\u306F\u660E\u793A input / CLI\u3001env\u3001profile\u3001engine default \u306E\u9806\u3001plugin \u3067\u306F UI / \u4FDD\u5B58\u5024\u3001engine default \u306E\u9806\u306B\u89E3\u6C7A\u3057\u307E\u3059\u3002\u518D\u5E30 query \u306F\u53C2\u7167\u30A2\u30D7\u30EA\u306E\u5B8C\u5168\u6027\u306B\u3082\u65E2\u5B58 `maxRecords` \u3092\u4F7F\u3044\u3001\u5E38\u306B `onLimit=error` \u3067\u3059\u3002\n\n### \u5B9F\u4F53\u5316\u5F8C\u306E\u5217\u5B9F\u5728\u30C1\u30A7\u30C3\u30AF\n\nCTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FB`SHOW APPS` / `DESCRIBE` \u306E\u7D50\u679C\u306F\u3001\u5B9F\u4F53\u5316\u3057\u305F SELECT \u306E**\u51FA\u529B\u5217\u3060\u3051**\u3092\u5F8C\u6BB5\u304B\u3089\u53C2\u7167\u3067\u304D\u307E\u3059\u3002\u5B58\u5728\u3057\u306A\u3044\u5217\u306F\u7A7A\u6587\u5B57\u3068\u3057\u3066\u8A55\u4FA1\u305B\u305A\u3001\u4E0B\u6D41\u306E records GET\u3001DML \u78BA\u8A8D\u3001POST / PUT \u3088\u308A\u524D\u306B `ArgumentError: unknown field code(s)` \u3067\u62D2\u5426\u3057\u307E\u3059\u3002SELECT\u3001WHERE\uFF08`=` / `LIKE` \u3092\u542B\u3080\u5168\u6F14\u7B97\u5B50\uFF09\u3001\u5F0F\u3001CASE\u3001\u96C6\u8A08\u3001GROUP BY / HAVING / ORDER BY\u3001window\u3001JOIN\u3001subquery\u3001UNION\u3001`INSERT` / `UPSERT ... SELECT` \u306E source \u3067\u5171\u901A\u3067\u3059\u3002\u7269\u7406 APP \u3068\u5B9F\u4F53\u5316 source \u3092\u6DF7\u5728 JOIN \u3057\u305F\u5834\u5408\u3082\u4E21\u65B9\u3092\u691C\u8A3C\u3057\u307E\u3059\u3002\n\n\u3053\u308C\u306F\u3001\u5F93\u6765\u306E\u8AA4\u7D50\u679C\u30FB\u8AA4\u66F8\u304D\u8FBC\u307F\u3092\u30A8\u30E9\u30FC\u3078\u5909\u3048\u308B\u7834\u58CA\u7684\u306A\u6B63\u3057\u3055\u4FEE\u6B63\u3067\u3059\uFF08v3.30.0\u30FBB86\uFF09\u3002\u7279\u306B\u3001\u5024\u306E\u3064\u3082\u308A\u3067\u88F8\u306E\u8B58\u5225\u5B50\u3092\u66F8\u304F\u3068\u5217\u53C2\u7167\u306B\u306A\u308A\u307E\u3059\u3002\u6587\u5B57\u5217\u5024\u306F\u5F15\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n```sql\n-- NG: \u9867\u5BA2 \u306F\u5217\u53C2\u7167\u3002\u5B9F\u4F53\u5316\u7D50\u679C\u306B\u305D\u306E\u5217\u304C\u306A\u3051\u308C\u3070 ArgumentError\nWITH \u30A2\u30D7\u30EA\u4E00\u89A7 AS (SHOW APPS)\nSELECT * FROM \u30A2\u30D7\u30EA\u4E00\u89A7 WHERE \u30A2\u30D7\u30EA\u540D LIKE \u9867\u5BA2;\n\n-- OK: \u5024\u3092\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u3068\u3057\u3066\u5F15\u7528\nWITH \u30A2\u30D7\u30EA\u4E00\u89A7 AS (SHOW APPS)\nSELECT * FROM \u30A2\u30D7\u30EA\u4E00\u89A7 WHERE \u30A2\u30D7\u30EA\u540D LIKE '\u9867\u5BA2';\n```\n\n`SELECT x AS y` \u3092\u5B9F\u4F53\u5316\u3057\u305F\u5F8C\u6BB5\u3067\u306F `x` \u3067\u306F\u306A\u304F\u51FA\u529B\u540D `y` \u3092\u4F7F\u3044\u307E\u3059\u3002UNION \u306E\u5B9F\u4F53\u5316\u7D50\u679C\u3067\u306F\u5DE6\u679D\u306E\u5217\u540D\uFF0Falias \u304C\u51FA\u529B schema \u3067\u3059\u3002`rows=[] && columns=[]` \u3067 schema \u81EA\u4F53\u3092\u5FA9\u5143\u3067\u304D\u306A\u30440\u884C wildcard source \u306F\u3001JOIN \u306A\u3057\u306E\u8AAD\u51FA\u3057\u306B\u9650\u308A\u65E2\u5B58\u306E0\u884C\u6319\u52D5\u3092\u7DAD\u6301\u3057\u307E\u3059\u3002JOIN \u5165\u529B\u3067\u306F\u6709\u52B9\u306A JOIN key \u3092\u8A3C\u660E\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u7269\u7406\u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u524D\u306B schema-unavailable error \u306B\u306A\u308A\u307E\u3059\u3002\n\n**\u6CE8\u610F\u4E8B\u9805:**\n- \u975E\u518D\u5E30 CTE \u672C\u4F53\u306E\u30B5\u30D6\u30AF\u30A8\u30EA\u306F SIMPLE / FULL_SCAN \u3092\u81EA\u52D5\u5224\u5B9A\n- \u518D\u5E30 CTE \u306F read-only \u3067\u3001\u5B8C\u5168\u5B9F\u4F53\u5316\u3057\u3066\u304B\u3089\u5916\u5074 SELECT \u3092\u8A55\u4FA1\n\n---", uri: "ksql://language-reference/13-with-cte" }, "14-show-apps-describe": { heading: "14. SHOW APPS / DESCRIBE", text: "## 14. SHOW APPS / DESCRIBE\n\n### SHOW APPS \u2014 \u30A2\u30D7\u30EA\u4E00\u89A7\u53D6\u5F97\n\nkintone \u4E0A\u306E\u3059\u3079\u3066\u306E\u30A2\u30D7\u30EA\uFF08\u6700\u5927 1,000 \u4EF6\uFF09\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002\n\n```sql\nSHOW APPS\n```\n\n| \u30AB\u30E9\u30E0 | \u5185\u5BB9 |\n|--------|------|\n| `\u30A2\u30D7\u30EAID` | \u30A2\u30D7\u30EA ID |\n| `\u30A2\u30D7\u30EA\u540D` | \u30A2\u30D7\u30EA\u540D |\n| `\u8AAC\u660E` | \u8AAC\u660E |\n\n> 100 \u4EF6\u5358\u4F4D\u3067\u81EA\u52D5\u30DA\u30FC\u30B8\u30F3\u30B0\u3057\u3001\u6700\u5927 1,000 \u4EF6\u307E\u3067\u53D6\u5F97\u3057\u307E\u3059\u3002\n\n### DESCRIBE / DESC \u2014 \u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u53D6\u5F97\n\n\u6307\u5B9A\u3057\u305F\u30A2\u30D7\u30EA\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u5B9A\u7FA9\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002\n\n```sql\nDESCRIBE APP100\nDESC APP100 -- \u7701\u7565\u5F62\uFF08DESCRIBE \u3068\u540C\u7B49\uFF09\n```\n\n| \u30AB\u30E9\u30E0 | \u5185\u5BB9 |\n|--------|------|\n| `\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9` | \u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9 |\n| `\u30E9\u30D9\u30EB` | \u30D5\u30A3\u30FC\u30EB\u30C9\u30E9\u30D9\u30EB |\n| `\u30BF\u30A4\u30D7` | \u30D5\u30A3\u30FC\u30EB\u30C9\u30BF\u30A4\u30D7\uFF08`SINGLE_LINE_TEXT`\u3001`NUMBER` \u7B49\uFF09 |\n| `\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB` | \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u4E2D\u306E\u9805\u76EE\u306A\u3089\u3001\u305D\u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u3002\u89AA\u9805\u76EE\u306A\u3089\u7A7A\u6587\u5B57 |\n| `\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7` | \u30EB\u30C3\u30AF\u30A2\u30C3\u30D7\u30D5\u30A3\u30FC\u30EB\u30C9\u306A\u3089 `YES`\u3001\u305D\u308C\u4EE5\u5916\u306F\u7A7A\u6587\u5B57 |\n| `\u30B3\u30D4\u30FC\u5143` | \u30EB\u30C3\u30AF\u30A2\u30C3\u30D7\u304B\u3089\u30B3\u30D4\u30FC\u3055\u308C\u305F\u5024\u306A\u3089 `YES`\u3001\u305D\u308C\u4EE5\u5916\u306F\u7A7A\u6587\u5B57 |\n| `\u91CD\u8907\u7981\u6B62` | \u5024\u306E\u91CD\u8907\u304C\u7981\u6B62\u3055\u308C\u3066\u3044\u308C\u3070 `YES`\u3001\u305D\u308C\u4EE5\u5916\u306F\u7A7A\u6587\u5B57 |\n| `\u8A08\u7B97\u5F0F` | \u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F\u975E\u7A7A\u306E\u8A08\u7B97\u5F0F\u3092\u6301\u3064\u30D5\u30A3\u30FC\u30EB\u30C9\u306A\u3089 `YES`\u3001\u305D\u308C\u4EE5\u5916\u306F\u7A7A\u6587\u5B57 |\n\n\u5024\u306E\u7531\u6765\u3092\u793A\u30594\u5217\uFF08`\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7` / `\u30B3\u30D4\u30FC\u5143` / `\u91CD\u8907\u7981\u6B62` / `\u8A08\u7B97\u5F0F`\uFF09\u306F\u3001\u8A72\u5F53\u3059\u308B\u3068\u304D\u3060\u3051\u6587\u5B57\u5217 `YES` \u3092\u8FD4\u3057\u307E\u3059\u30024\u5217\u304C\u3059\u3079\u3066\u7A7A\u3067\u3082\u3001\u5B8C\u5168\u306A\u5236\u7D04\u3084\u8A2D\u5B9A\u306E\u78BA\u8A8D\u304C\u4E0D\u8981\u3068\u306F\u9650\u308A\u307E\u305B\u3093\u3002\u5FC5\u8981\u306B\u5FDC\u3058\u3066 `ksql_app_metadata` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n> **`DESCRIBE` \u306F\u89AA\u9805\u76EE\u3068\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u4E2D\u306E\u9805\u76EE\u3092\u4E21\u65B9\u8FD4\u3057\u307E\u3059**\uFF08v3.56.0 \u3067 `\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB` \u5217\u3092\u8FFD\u52A0\uFF09\u3002\n> **\u3069\u3061\u3089\u304B\u3089\u9078\u3076\u304B\u3092\u9593\u9055\u3048\u308B\u3068\u3001\u30A8\u30E9\u30FC\u306B\u306A\u3089\u305A\u5168\u884C\u304C\u7A7A\u306B\u306A\u308A\u307E\u3059\u3002**\n>\n> ```sql\n> -- \u2717 \u660E\u7D30\u9805\u76EE\u3092\u89AA\u304B\u3089\u9078\u3076\u3068\u3001\u8B66\u544A\u306F\u51FA\u308B\u304C\u5024\u306F\u5168\u884C\u7A7A\n> SELECT $id, \u6570\u91CF FROM APP100\n>\n> -- \u25CB \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u304B\u3089\u9078\u3076\n> SELECT _pid, \u6570\u91CF FROM APP100$\u660E\u7D30\n> ```\n>\n> **`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB` \u5217\u304C\u7A7A\u3067\u306A\u3044\u9805\u76EE\u306F\u3001`APP100$<\u305D\u306E\u5024>` \u304B\u3089\u9078\u3093\u3067\u304F\u3060\u3055\u3044\u3002**\n> \u89AA\u304B\u3089\u9078\u3093\u3060\u5834\u5408\u306F\u5B9F\u884C\u6642\u306B\u8B66\u544A\u3092\u51FA\u3057\u307E\u3059\u304C\u3001**\u5024\u306F\u5909\u3048\u307E\u305B\u3093**\uFF08\u65E2\u5B58\u306E SQL \u3092\u58CA\u3055\u306A\u3044\u305F\u3081\uFF09\u3002\n\n```sql\n-- WITH \u53E5\u3068\u7D44\u307F\u5408\u308F\u305B\u3066\u30D5\u30A3\u30EB\u30BF\nWITH \u30A2\u30D7\u30EA AS (SHOW APPS)\nSELECT * FROM \u30A2\u30D7\u30EA WHERE \u30A2\u30D7\u30EA\u540D LIKE '\u53D7\u6CE8%'\n\nWITH \u30D5\u30A3\u30FC\u30EB\u30C9 AS (DESC APP100)\nSELECT * FROM \u30D5\u30A3\u30FC\u30EB\u30C9 WHERE \u30BF\u30A4\u30D7 = 'NUMBER'\n```\n\n---", uri: "ksql://language-reference/14-show-apps-describe" }, "15-insert": { heading: "15. INSERT", text: "## 15. INSERT\n\n### \u89AA\u30EC\u30B3\u30FC\u30C9 DML \u306E\u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u691C\u67FB\n\n\u89AA\u30EC\u30B3\u30FC\u30C9\u3092\u5BFE\u8C61\u3068\u3059\u308B `INSERT` / `UPDATE` / `UPSERT` \u306F\u3001\u66F8\u304D\u8FBC\u307F\u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u5BFE\u8C61\u30A2\u30D7\u30EA\u306B\u5B58\u5728\u3057\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306B\u3042\u308A\u3001\u66F8\u304D\u8FBC\u307F\u53EF\u80FD\u3067\u3042\u308B\u3053\u3068\u3092\u5B9F\u884C\u524D\u306B\u691C\u67FB\u3057\u307E\u3059\u3002\u4E0D\u5B58\u5728\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u306E\u8AA4\u8A18\u3092\u542B\u3080\uFF09\u3068\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3001\u884C\u5358\u4F4D\u3067\u7121\u8996\u30FB\u9694\u96E2\u305B\u305A\u6587\u5358\u4F4D\u306E `ArgumentError` \u306B\u306A\u308A\u307E\u3059\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u3092\u66F4\u65B0\u3059\u308B\u5834\u5408\u306F `APP100$\u660E\u7D30` \u306E\u3088\u3046\u306A[\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DML](#\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB-dml)\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n\u3053\u306E\u691C\u67FB\u306F `VALIDATE ONLY` / `ON ERROR SKIP` \u3092\u542B\u3080\u5168\u7D4C\u8DEF\u3067\u3001\u30BD\u30FC\u30B9 SELECT\u3001\u66F4\u65B0\u30FBUPSERT\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u306E\u53D6\u5F97\u3001\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\u3001POST / PUT \u3088\u308A\u524D\u306B\u5B8C\u4E86\u3057\u307E\u3059\u3002\u4E0D\u6B63\u306A\u66F8\u304D\u8FBC\u307F\u5148\u3067\u306F\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u306E\u53D6\u5F97\u4EE5\u5916\u306E\u30EC\u30B3\u30FC\u30C9 API \u3084\u78BA\u8A8D\u51E6\u7406\u3092\u547C\u3073\u307E\u305B\u3093\u3002\n\n### VALUES \u306B\u3088\u308B\u767B\u9332\n\n```sql\nINSERT INTO APP100 (\u30D5\u30A3\u30FC\u30EB\u30C91, \u30D5\u30A3\u30FC\u30EB\u30C92, ...)\nVALUES (\u50241, \u50242, ...)\n```\n\nVALUES \u306E\u6570\u5024\u306B\u306F\u5358\u9805\u7B26\u53F7\u4ED8\u304D\u30EA\u30C6\u30E9\u30EB\uFF08`-5` / `+5` / `-0.5` / `+0.5`\uFF09\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u7B26\u53F7\u306E\u76F4\u5F8C\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u306B\u9650\u3089\u308C\u3001`--5` / `+-5` / `-+5` / `++5`\u3001\u7B97\u8853\u5F0F\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3001\u95A2\u6570\u547C\u3073\u51FA\u3057\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u5F15\u7528\u7B26\u4ED8\u304D\u306E `'-5'` \u306F\u6570\u5024\u3067\u306F\u306A\u304F\u6587\u5B57\u5217\u3067\u3059\u3002\u3053\u306E\u898F\u5247\u306F\u89AA\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E INSERT VALUES \u3068 UPSERT VALUES \u3067\u5171\u901A\u3067\u3059\u3002\n\n#### \u5358\u4E00\u30EC\u30B3\u30FC\u30C9\n\n```sql\nINSERT INTO APP100 (\u6C0F\u540D, \u91D1\u984D, \u30B9\u30C6\u30FC\u30BF\u30B9)\nVALUES ('\u7530\u4E2D \u592A\u90CE', 50000, '\u9032\u884C\u4E2D')\n```\n\n#### \u8907\u6570\u30EC\u30B3\u30FC\u30C9\uFF08\u4E00\u62EC\u767B\u9332\uFF09\n\n```sql\nINSERT INTO APP100 (\u6C0F\u540D, \u91D1\u984D)\nVALUES ('\u7530\u4E2D \u592A\u90CE', 50000),\n ('\u9234\u6728 \u82B1\u5B50', 30000),\n ('\u4F50\u85E4 \u4E00\u90CE', 80000)\n```\n\n> **\u30D0\u30C3\u30C1\u51E6\u7406:** 100\u4EF6\u3054\u3068\u306B API \u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u5206\u5272\u3057\u3066\u9001\u4FE1\u3057\u307E\u3059\u3002\n\n> **\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\uFF08\u30D7\u30E9\u30B0\u30A4\u30F3\uFF09:** `INSERT INTO ... VALUES` \u3082\u5B9F\u884C\u524D\u306B\u767B\u9332\u4EF6\u6570\u3092\u8868\u793A\u3057\u3066\u78BA\u8A8D\u3092\u6C42\u3081\u307E\u3059\u3002 \n> \u30AD\u30E3\u30F3\u30BB\u30EB\u3059\u308B\u3068\u767B\u9332\u306F\u884C\u308F\u308C\u307E\u305B\u3093\u3002\n\n### INSERT INTO ... SELECT\n\n\u5225\u30A2\u30D7\u30EA\u306E\u30C7\u30FC\u30BF\u3092\u30B3\u30D4\u30FC\u767B\u9332\u3057\u307E\u3059\u3002\n\n```sql\nINSERT INTO APP100 (\u30D5\u30A3\u30FC\u30EB\u30C91, \u30D5\u30A3\u30FC\u30EB\u30C92, ...)\nSELECT \u52171, \u52172, ...\nFROM APP200\n[WHERE \u6761\u4EF6]\n```\n\n```sql\n-- \u5225\u30A2\u30D7\u30EA\u304B\u3089\u6761\u4EF6\u4ED8\u304D\u3067\u30B3\u30D4\u30FC\nINSERT INTO APP100 (\u9867\u5BA2\u540D, \u91D1\u984D)\nSELECT \u9867\u5BA2\u540D, \u5408\u8A08\u91D1\u984D\nFROM APP200\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u78BA\u5B9A'\n\n-- \u95A2\u6570\u30FB\u7B97\u8853\u5F0F\u3092\u4F7F\u3063\u3066\u52A0\u5DE5\u3057\u306A\u304C\u3089\u30B3\u30D4\u30FC\nINSERT INTO APP100 (\u9867\u5BA2\u540D, \u7A0E\u8FBC\u91D1\u984D)\nSELECT UPPER(\u9867\u5BA2\u540D), ROUND(\u91D1\u984D * 1.1)\nFROM APP200\nWHERE \u91D1\u984D > 0\n```\n\n- SELECT \u306E\u5217\u6570\u3068 INSERT \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\u304C\u4E00\u81F4\u3057\u306A\u3044\u5834\u5408\u306F\u30A8\u30E9\u30FC\n- SELECT \u5074\u306F SIMPLE / FULL_SCAN \u81EA\u52D5\u5224\u5B9A\uFF08JOIN\u30FBGROUP BY\u30FB\u95A2\u6570\u3082\u4F7F\u7528\u53EF\uFF09\n- \u7D50\u679C\u3092 100 \u4EF6\u30D0\u30C3\u30C1\u3067 POST\n\n### INSERT \u3067\u306E\u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\n\n\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u30FB\u7D44\u7E54\u9078\u629E\u30FB\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u30FB\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30FB\u8907\u6570\u9078\u629E\u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u66F8\u304D\u8FBC\u307F\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002 \n\u5B9F\u884C\u524D\u306B\u5BFE\u8C61\u30A2\u30D7\u30EA\u306E `getFields()` \u3067\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3092\u81EA\u52D5\u53D6\u5F97\u3057\u3001\u578B\u306B\u5FDC\u3058\u305F API \u5F62\u5F0F\u306B\u5909\u63DB\u3057\u307E\u3059\u3002\n\n#### \u30AB\u30F3\u30DE\u533A\u5207\u308A\u6587\u5B57\u5217\uFF08\u901A\u5E38\u30B1\u30FC\u30B9\uFF09\n\n```sql\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E\uFF08\u5358\u4E00\uFF09\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005) VALUES ('A\u793E', 'user1')\n\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E\uFF08\u8907\u6570\uFF09\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005) VALUES ('A\u793E', 'user1,user2')\n\n-- \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 / \u8907\u6570\u9078\u629E\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u30BF\u30B0) VALUES ('A\u793E', '\u91CD\u8981,VIP')\n\n-- \u7A7A\u306B\u3059\u308B\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005) VALUES ('A\u793E', '')\n```\n\n| SQL \u5024 | \u30D5\u30A3\u30FC\u30EB\u30C9\u578B | kintone API \u9001\u4FE1\u5024 |\n|---|---|---|\n| `'user1'` | USER_SELECT \u7B49 | `[{\"code\":\"user1\"}]` |\n| `'user1,user2'` | USER_SELECT \u7B49 | `[{\"code\":\"user1\"},{\"code\":\"user2\"}]` |\n| `'\u9078\u629E\u80A2A,\u9078\u629E\u80A2B'` | CHECK_BOX \u7B49 | `[\"\u9078\u629E\u80A2A\",\"\u9078\u629E\u80A2B\"]` |\n| `''` | \u30E6\u30FC\u30B6\u30FC\u7CFB / \u914D\u5217\u7CFB | `[]` |\n\n#### \u914D\u5217\u30EA\u30C6\u30E9\u30EB `[...]`\uFF08\u30AB\u30F3\u30DE\u3092\u542B\u3080\u9078\u629E\u80A2\u306A\u3069\u660E\u793A\u6307\u5B9A\uFF09\n\n```sql\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E\uFF08\u8907\u6570\uFF09\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005) VALUES ('A\u793E', ['user1', 'user2'])\n\n-- \u30AB\u30F3\u30DE\u3092\u542B\u3080\u9078\u629E\u80A2\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u30BF\u30B0) VALUES ('A\u793E', ['\u9078\u629E\u80A2A', '\u9078\u629E\u80A2B,C'])\n-- \u2191 '\u9078\u629E\u80A2B,C' \u306F 1 \u3064\u306E\u5024\n```\n\n#### CASE WHEN / IF \u3067\u914D\u5217\u3092\u6307\u5B9A\n\n```sql\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E: IF() \u3067\u62C5\u5F53\u8005\u3092\u5206\u5C90\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005)\nVALUES ('A\u793E', IF(1 = 1, ['user1', 'user2'], 'user3'))\n\n-- CASE WHEN \u3067\u8907\u6570\u306E\u5206\u5C90\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u30BF\u30B0)\nVALUES ('B\u793E', CASE WHEN 1 = 0 THEN ['\u91CD\u8981', 'VIP'] ELSE '\u901A\u5E38' END)\n```\n\n> INSERT VALUES \u306E CASE WHEN / IF \u306F\u5B9A\u6570\u6761\u4EF6\u306E\u307F\u6709\u52B9\u3067\u3059\u3002 \n> \u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u73FE\u5728\u5024\u3092\u53C2\u7167\u3059\u308B\u6761\u4EF6\uFF08`\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5BFE\u8C61'` \u7B49\uFF09\u306F\u7A7A\u6587\u5B57\u3068\u3057\u3066\u8A55\u4FA1\u3055\u308C\u307E\u3059\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F UPDATE SET \u3067\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\n\n#### INSERT SELECT \u3067\u306E\u540C\u578B\u30D5\u30A3\u30FC\u30EB\u30C9\u81EA\u52D5\u8EE2\u9001\n\n\u8EE2\u9001\u5143\u30FB\u8EE2\u9001\u5148\u304C\u540C\u3058\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u306E\u5834\u5408\u3001JSON \u3092\u81EA\u52D5\u89E3\u6790\u3057\u3066 API \u5F62\u5F0F\u306B\u5909\u63DB\u3057\u307E\u3059\u3002\n\n```sql\n-- USER_SELECT \u2192 USER_SELECT: \u81EA\u52D5\u8EE2\u9001\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005) SELECT \u9867\u5BA2\u540D, \u62C5\u5F53\u8005 FROM APP88\n\n-- CHECK_BOX \u2192 CHECK_BOX: \u81EA\u52D5\u8EE2\u9001\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u30BF\u30B0) SELECT \u9867\u5BA2\u540D, \u30BF\u30B0 FROM APP88\n```\n\n### \u65E5\u6642\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u81EA\u52D5\u5909\u63DB\n\n\u65E5\u6642\uFF08DATETIME\uFF09\u30FB\u65E5\u4ED8\uFF08DATE\uFF09\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3001\u3088\u304F\u4F7F\u308F\u308C\u308B\u8868\u8A18\u3092 kintone \u306E\u8981\u6C42\u5F62\u5F0F\u306B\u81EA\u52D5\u5909\u63DB\u3057\u307E\u3059\u3002 \n\u5909\u63DB\u306F\u30D6\u30E9\u30A6\u30B6\u306E\u30ED\u30FC\u30AB\u30EB\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3092\u57FA\u6E96\u3068\u3057\u307E\u3059\u3002\n\n#### DATETIME \u30D5\u30A3\u30FC\u30EB\u30C9\n\nkintone \u306F `YYYY-MM-DDTHH:MM:SSZ`\uFF08UTC\uFF09\u5F62\u5F0F\u3092\u8981\u6C42\u3057\u307E\u3059\u3002 \n\u4EE5\u4E0B\u306E\u5F62\u5F0F\u3067\u6307\u5B9A\u3059\u308B\u3068\u81EA\u52D5\u5909\u63DB\u3055\u308C\u307E\u3059\u3002\n\n| SQL \u5024\uFF08\u5165\u529B\uFF09 | kintone API \u9001\u4FE1\u5024\uFF08JST \u74B0\u5883\u306E\u5834\u5408\uFF09 |\n|---|---|\n| `'2026-04-05 12:00'` | `'2026-04-05T03:00:00Z'` |\n| `'2026-04-05 12:00:00'` | `'2026-04-05T03:00:00Z'` |\n| `'2026/04/05 12:00'` | `'2026-04-05T03:00:00Z'` |\n| `'2026-04-05T12:00'` | `'2026-04-05T03:00:00Z'` |\n| `'2026-04-05T03:00:00Z'` | `'2026-04-05T03:00:00Z'`\uFF08\u5909\u63DB\u306A\u3057\uFF09 |\n\n```sql\nINSERT INTO APP15 (\u4EF6\u540D, \u65E5\u6642) VALUES ('\u4F1A\u8B70', '2026-04-05 12:00')\n```\n\n#### DATE \u30D5\u30A3\u30FC\u30EB\u30C9\n\nkintone \u306F `YYYY-MM-DD` \u5F62\u5F0F\u3092\u8981\u6C42\u3057\u307E\u3059\u3002 \n\u30B9\u30E9\u30C3\u30B7\u30E5\u533A\u5207\u308A\u3092\u81EA\u52D5\u5909\u63DB\u3057\u307E\u3059\u3002\n\n| SQL \u5024\uFF08\u5165\u529B\uFF09 | kintone API \u9001\u4FE1\u5024 |\n|---|---|\n| `'2026/04/05'` | `'2026-04-05'` |\n| `'2026-04-05'` | `'2026-04-05'`\uFF08\u5909\u63DB\u306A\u3057\uFF09 |\n\n```sql\nINSERT INTO APP15 (\u4EF6\u540D, \u65E5\u4ED8) VALUES ('\u4F1A\u8B70', '2026/04/05')\n```\n\n> **\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3:** DATETIME \u306E\u5909\u63DB\u306F\u30D6\u30E9\u30A6\u30B6\u306E\u30ED\u30FC\u30AB\u30EB\u6642\u523B\u3092 UTC \u306B\u5909\u63DB\u3057\u307E\u3059\u3002 \n> \u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u52D5\u4F5C\u3059\u308B kintone \u74B0\u5883\u306E\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u8A2D\u5B9A\u3068\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044\u3002\n\n---", uri: "ksql://language-reference/15-insert" }, "16-update": { heading: "16. UPDATE", text: "## 16. UPDATE\n\n```sql\nUPDATE APP100\nSET \u30D5\u30A3\u30FC\u30EB\u30C91 = \u50241, \u30D5\u30A3\u30FC\u30EB\u30C92 = \u50242 -- \u5024: \u30EA\u30C6\u30E9\u30EB / \u7B97\u8853\u5F0F / CASE WHEN / (SELECT ...) / \u30D0\u30C3\u30C1\u5909\u6570 @\u540D\u524D\nWHERE \u6761\u4EF6\n```\n\n\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u306B\u306F\u5358\u9805 `-` / `+` \u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u4F8B: `SET \u91D1\u984D = -5`\u3001`SET \u91D1\u984D = +0.5`\uFF09\u3002\u5358\u9805 `+` \u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u76F4\u524D\u3060\u3051\u306B\u9650\u3089\u308C\u3001`+\u30D5\u30A3\u30FC\u30EB\u30C9` \u3084 `+(\u5F0F)`\u3001\u7B26\u53F7\u306E\u30CD\u30B9\u30C8\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u65E2\u5B58\u306E\u5358\u9805 `-` \u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3084\u62EC\u5F27\u4ED8\u304D\u7B97\u8853\u5F0F\u306B\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nUPDATE APP100\nSET \u512A\u5148\u5EA6 = '\u9AD8', \u671F\u9650\u65E5 = '2025-03-31'\nWHERE \u62C5\u5F53\u8005 = '\u7530\u4E2D' AND \u5B8C\u4E86\u30D5\u30E9\u30B0 = '0'\n```\n\n### \u5225\u30C6\u30FC\u30D6\u30EB\u306E\u5024\u3067\u66F4\u65B0\uFF08UPDATE ... FROM\uFF09\n\n`#temp` \u307E\u305F\u306F\u5225\u30A2\u30D7\u30EA\u306E\u884C\u3092\u3001\u66F4\u65B0\u5148\u306E `$id` \u307E\u305F\u306F\u696D\u52D9\u30AD\u30FC\u3068\u5BFE\u5FDC\u4ED8\u3051\u3066\u8EE2\u8A18\u3067\u304D\u307E\u3059\u3002\n\n```sql\nUPDATE APP100\nSET \u8EE2\u8A18\u5024 = s.\u5143\u5024,\n \u51E6\u7406\u72B6\u614B = '\u5B8C\u4E86',\n \u91D1\u984D = \u91D1\u984D * 1.1\nFROM APP200 AS s\nWHERE APP100.$id = s.\u8EE2\u8A18\u5148ID\n AND APP100.\u6709\u52B9 = '1';\n```\n\n\u6587\u5B57\u5217\uFF081\u884C\uFF09\u307E\u305F\u306F\u6570\u5024\u306E\u696D\u52D9\u30AD\u30FC\u3067\u3082\u7D50\u5408\u3067\u304D\u307E\u3059\u3002\u30BD\u30FC\u30B91\u884C\u306B\u5BFE\u3057\u3066\u540C\u3058\u30AD\u30FC\u306E\u66F4\u65B0\u5148\u304C\u8907\u6570\u3042\u308B\u5834\u5408\u306F\u5168\u884C\u3092\u66F4\u65B0\u3057\u307E\u3059\u3002\n\n```sql\nUPDATE APP4220\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u30A8\u30E9\u30FC',\n \u30A8\u30E9\u30FC\u5185\u5BB9 = e.\u30A8\u30E9\u30FC\u5185\u5BB9\nFROM APP200 AS e\nWHERE APP4220.\u9867\u5BA2\u30B3\u30FC\u30C9 = e.\u9867\u5BA2\u30B3\u30FC\u30C9;\n```\n\n\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u4F7F\u3046\u5834\u5408\u306F\u540C\u3058\u30D0\u30C3\u30C1\u5185\u3067\u5148\u306B\u5B9F\u4F53\u5316\u3057\u307E\u3059\u3002\n\n```sql\nCREATE TEMP TABLE #src AS\nSELECT \u8EE2\u8A18\u5148ID, \u30A8\u30E9\u30FC\u5185\u5BB9 FROM APP200 WHERE \u51E6\u7406\u72B6\u614B = '\u30A8\u30E9\u30FC';\n\nUPDATE APP100\nSET \u30A8\u30E9\u30FC\u5185\u5BB9 = e.\u30A8\u30E9\u30FC\u5185\u5BB9\nFROM #src AS e\nWHERE APP100.$id = e.\u8EE2\u8A18\u5148ID;\n```\n\n> `REGEXP_REPLACE` / `REGEXP_SUBSTR` \u306A\u3069\u306E\u6B63\u898F\u8868\u73FE\u7D50\u679C\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\u306E `UPDATE ... FROM` \u3067\u66F8\u304D\u623B\u3059\u5834\u5408\u3001\u30D6\u30E9\u30A6\u30B6\uFF0FNode \u3068\u305D\u306E\u7248\u306B\u3088\u308B\u7D50\u679C\u5DEE\u304C\u4FDD\u5B58\u30C7\u30FC\u30BF\u306E\u5DEE\u306B\u306A\u308A\u307E\u3059\u3002\u66F8\u304D\u623B\u3057\u306B\u4F7F\u3046\u5B9F\u884C\u9762\u3068\u7248\u3092\u56FA\u5B9A\u3057\u3001\u4E8B\u524D\u306B SELECT \u3067\u7D50\u679C\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n- \u30BD\u30FC\u30B9\u306F `#temp` \u307E\u305F\u306F `APP<n>[@profile]`\u3002CTE\u30FB\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u975E\u5BFE\u5FDC\u3067\u3059\u3002\n- \u7D50\u5408\u6761\u4EF6\u306F\u66F4\u65B0\u5148\u3068\u30BD\u30FC\u30B9\u5217\u306E\u5358\u4E00\u7B49\u5024\u30921\u3064\u3060\u3051\u6307\u5B9A\u3057\u307E\u3059\u3002\u66F4\u65B0\u5148\u30AD\u30FC\u306F `$id`\u3001\u6587\u5B57\u5217\uFF081\u884C\uFF09\u3001\u6570\u5024\u306B\u5BFE\u5FDC\u3057\u307E\u3059\u3002\n- `$id` \u306E\u30BD\u30FC\u30B9\u30AD\u30FC\u306F\u6B63\u306E\u5B89\u5168\u6574\u6570\u3067\u3059\u3002\u696D\u52D9\u30AD\u30FC\u306E\u30BD\u30FC\u30B9\u5024\u306F\u7A7A\u306B\u3067\u304D\u305A\u3001\u6B63\u898F\u5316\u5F8C\u306B\u91CD\u8907\u3059\u308B\u5834\u5408\u306F\u66F8\u304D\u8FBC\u307F\u524D\u306B\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n- \u6587\u5B57\u5217\u30AD\u30FC\u306F\u524D\u5F8C\u7A7A\u767D\u30FB\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u5909\u63DB\u305B\u305A\u5B8C\u5168\u4E00\u81F4\u3057\u307E\u3059\u3002\u6570\u5024\u30AD\u30FC\u306F\u6D6E\u52D5\u5C0F\u6570\u70B9\u3078\u5909\u63DB\u305B\u305A\u3001\u7B26\u53F7\u30FB\u5148\u982D\u30BC\u30ED\u30FB\u5C0F\u6570\u672B\u5C3E\u30BC\u30ED\u309210\u9032\u6587\u5B57\u5217\u3068\u3057\u3066\u6B63\u898F\u5316\u3057\u307E\u3059\u3002\n- kintone\u306E\u6587\u5B57\u5217\uFF081\u884C\uFF09`in` \u306F\u5148\u982D64\u6587\u5B57\u304C\u540C\u3058\u884C\u3092\u904E\u5270\u53D6\u5F97\u3059\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u53D6\u5F97\u5F8C\u306B\u5168\u6587\u5B57\u3067\u518D\u7167\u5408\u3059\u308B\u305F\u3081\u8AA4\u66F4\u65B0\u3057\u307E\u305B\u3093\u3002\u904E\u5270\u53D6\u5F97\u884C\u3082 `maxRecords` \u306E\u8AAD\u307F\u53D6\u308A\u4EF6\u6570\u3078\u542B\u307E\u308C\u307E\u3059\u3002\n- \u30BD\u30FC\u30B9\u5074\u306E\u540C\u3058\u6B63\u898F\u5316\u30AD\u30FC\u306F\u975E\u6C7A\u5B9A\u306B\u306A\u308B\u305F\u3081\u30A8\u30E9\u30FC\u3067\u3059\u3002\u66F4\u65B0\u5148\u5074\u306E\u540C\u3058\u30AD\u30FC\u306F\u6C7A\u5B9A\u7684\u306B\u5168\u884C\u66F4\u65B0\u3057\u307E\u3059\u3002\n- \u30BD\u30FC\u30B9 alias \u306F\u7D50\u5408\u6761\u4EF6\u3068 `SET alias.field` \u4EE5\u5916\u3067\u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002\n- `SOURCE_FIELD` \u306F\u30B9\u30AB\u30E9\u30FC\u578B\u306E\u307F\u5BFE\u5FDC\u3057\u307E\u3059\u3002\u914D\u5217\u30FB\u30E6\u30FC\u30B6\u30FC/\u7D44\u7E54/\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u30FB\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u306F\u975E\u5BFE\u5FDC\u3067\u3059\u3002\n- \u5B9F\u30A2\u30D7\u30EA\u30BD\u30FC\u30B9\u306F `maxRecords` \u8D85\u904E\u6642\u306B\u5E38\u306B\u30A8\u30E9\u30FC\u3068\u306A\u308A\u3001\u6697\u9ED9\u306E\u4E00\u90E8\u66F4\u65B0\u3092\u884C\u3044\u307E\u305B\u3093\u3002\n- `SET` \u3084\u30D5\u30A3\u30EB\u30BF\u304C\u53C2\u7167\u3059\u308B\u30BD\u30FC\u30B9\u5217\u304C\u30BD\u30FC\u30B9\u306B\u5B58\u5728\u3057\u306A\u3044\u5834\u5408\u3001\u66F8\u304D\u8FBC\u307F\u524D\u306B\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n- \u7D50\u5408\u7B49\u5024\u306F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E `AND` \u9023\u9396\u306B\u7F6E\u304D\u307E\u3059\u3002`OR` / `NOT` \u306E\u914D\u4E0B\u306B\u7D50\u5408\u7B49\u5024\u3092\u66F8\u304F\u3068\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\uFF08\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u307F\u3092\u6761\u4EF6\u306B\u3057\u305F\u62EC\u5F27\u5185 `OR` \u306F\u4F7F\u3048\u307E\u3059\uFF09\u3002\n- **\u89AA\u30EC\u30B3\u30FC\u30C9\u306E `UPDATE` \u9650\u5B9A**\u3067\u3059\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u3059\u308B `UPDATE ... FROM` \u306F\u975E\u5BFE\u5FDC\u3067\u3059\u3002\n\n### SET \u3067\u306E\u6587\u5B57\u5217\u95A2\u6570\n\n\u89AA\u30EC\u30B3\u30FC\u30C9\u306E\u901A\u5E38\u306E `UPDATE` \u3067\u306F\u3001SET \u306E\u53F3\u8FBA\u306B\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u95A2\u6570\u306F\u66F4\u65B0\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u3054\u3068\u306B\u8A55\u4FA1\u3055\u308C\u3001SET \u5BFE\u8C61\u3068\u306F\u5225\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3082\u53C2\u7167\u3067\u304D\u307E\u3059\u3002\u623B\u308A\u5024\u306F\u95A2\u6570\u306E\u610F\u5473\u578B\u3092\u5F15\u304D\u7D99\u304E\u3001\u5024\u306E\u898B\u305F\u76EE\u304B\u3089\u6570\u5024\uFF0F\u6587\u5B57\u5217\u3092\u518D\u5224\u5B9A\u3057\u307E\u305B\u3093\u3002\n\n```sql\nUPDATE APP100\nSET \u6B63\u898F\u5316\u540D = UPPER(\u540D\u79F0),\n \u30B3\u30FC\u30C9 = LPAD(\u30B3\u30FC\u30C9, 5, '0')\nWHERE $id IN (1, 2, 3)\n```\n\n`UPPER` / `CONCAT` / `REPLACE` / `SUBSTRING` / `LEFT` / `RIGHT` / `TRANSLATE` / `REGEXP_LIKE` / `REGEXP_REPLACE` / `REGEXP_SUBSTR` \u306A\u3069\u306E\u6587\u5B57\u5217\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002`LPAD('7', 5, '0')` \u3068 `REGEXP_LIKE(...)` \u306E\u7D50\u679C\u306F\u3001\u898B\u305F\u76EE\u304C\u6570\u5024\u3067\u3082\u6587\u5B57\u5217\u306E\u307E\u307E\u66F8\u304D\u8FBC\u307E\u308C\u307E\u3059\u3002`VALIDATE ONLY` \u3068 `ON ERROR SKIP` \u306F\u3001\u95A2\u6570\u3092\u8A55\u4FA1\u3057\u305F\u5F8C\u306E\u5024\u3092\u691C\u8A3C\u3057\u307E\u3059\u3002\n\n\u3053\u308C\u306F\u66F8\u304D\u8FBC\u307F\u5019\u88DC\u306B\u5BFE\u3059\u308B\u7D44\u307F\u8FBC\u307F\u5236\u7D04\u691C\u8A3C\u3067\u3059\u3002CHECK \u306E\u8A55\u4FA1\u884C\u306F\u5225\u3067\u3001\u901A\u5E38 UPDATE \u306F\u66F4\u65B0\u524D\u306E\u65E2\u5B58\u5024\u3092\u53C2\u7167\u3057\u307E\u3059\u3002\u65B0\u5024\u3092\u691C\u67FB\u3059\u308B\u5834\u5408\u306F SET \u5F0F\u3092 CHECK \u306B\u518D\u63B2\u3057\u3066\u304F\u3060\u3055\u3044\u3002INSERT/UPSERT/UPDATE FROM \u3092\u542B\u3080\u6587\u7A2E\u5225\u306E\u8A55\u4FA1\u884C\u306F \xA717.3 \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n\u6B63\u898F\u8868\u73FE\u306E\u30DB\u30B9\u30C8\u5DEE\u306F\u4FDD\u5B58\u30C7\u30FC\u30BF\u306E\u5DEE\u306B\u306A\u308A\u5F97\u308B\u305F\u3081\u3001\u66F8\u304D\u8FBC\u307F\u306B\u4F7F\u3046\u5B9F\u884C\u9762\u3068\u7248\u3092\u56FA\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n\u6B21\u306E\u7BC4\u56F2\u306F\u975E\u5BFE\u5FDC\u3067\u3059\u3002\n\n- `SET n = LENGTH(s) * 1` \u306E\u3088\u3046\u306B\u7B97\u8853\u5F0F\u306E\u4E2D\u3078\u6587\u5B57\u5217\u95A2\u6570\u3092\u5165\u308C\u308B\u3053\u3068\n- `SET a = b` \u306E\u3088\u3046\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3060\u3051\u3092\u53F3\u8FBA\u3078\u6307\u5B9A\u3059\u308B\u3053\u3068\n- `UPDATE ... FROM` \u307E\u305F\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306E SET \u53F3\u8FBA\u3078\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u6307\u5B9A\u3059\u308B\u3053\u3068\uFF08`UPDATE ... FROM` \u306E `SET a = src.b` \u306F\u5F93\u6765\u3069\u304A\u308A\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF09\n\n\u307E\u305F\u3001\u89AA\u30EC\u30B3\u30FC\u30C9 DML \u306E WHERE \u53E5\u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002SET \u3067\u95A2\u6570\u3092\u4F7F\u3048\u308B\u3088\u3046\u306B\u306A\u3063\u3066\u3082\u3001`WHERE LEFT(\u90F5\u4FBF\u756A\u53F7, 3) = '100'` \u306E\u3088\u3046\u306A\u7D5E\u308A\u8FBC\u307F\u306F\u62D2\u5426\u3055\u308C\u307E\u3059\u3002\u4E0D\u6B63\u306A\u884C\u3060\u3051\u3092\u6B63\u898F\u5316\u3059\u308B\u5834\u5408\u306F\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3067\u5BFE\u8C61\u3068\u5909\u63DB\u5024\u3092\u4F5C\u308A\u3001`UPDATE ... FROM` \u3067\u66F8\u304D\u623B\u3057\u307E\u3059\u3002\n\n```sql\nCREATE TEMP TABLE #norm AS\nSELECT $id AS \u5BFE\u8C61id,\n REPLACE(REPLACE(\u96FB\u8A71\u756A\u53F7, '-', ''), ' ', '') AS \u6B63\u898F\u5316\nFROM APP100\nWHERE \u6761\u4EF6;\n\nUPDATE APP100\nSET \u96FB\u8A71\u756A\u53F7 = n.\u6B63\u898F\u5316\nFROM #norm AS n\nWHERE APP100.$id = n.\u5BFE\u8C61id;\n```\n\n### SET \u3067\u306E\u7B97\u8853\u5F0F\n\n```sql\nUPDATE APP100\nSET \u91D1\u984D = \u91D1\u984D * 1.1\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5BFE\u8C61'\n```\n\n### SET \u3067\u306E\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\n\nSET \u306E\u53F3\u8FBA\u306B `(SELECT ...)` \u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002 \n\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u5B9F\u884C\u524D\u306B 1 \u56DE\u3060\u3051\u8A55\u4FA1\u3055\u308C\u3001\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u5168\u4EF6\u306B\u540C\u3058\u5024\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002\n\n```sql\n-- \u540C\u30A2\u30D7\u30EA\u306E\u6700\u5927\u5024\u3067\u30BB\u30C3\u30C8\nUPDATE APP88 SET \u4E0A\u9650\u8CBB\u7528 = (SELECT MAX(\u5408\u8A08\u8CBB\u7528) FROM APP88)\nWHERE \u78BA\u5EA6 in ('80%', '100%')\n\n-- \u5225\u30A2\u30D7\u30EA\u306E\u5024\u3067\u30BB\u30C3\u30C8\nUPDATE APP89 SET \u57FA\u6E96\u91D1\u984D = (SELECT AVG(\u5408\u8A08\u8CBB\u7528) FROM APP88 WHERE \u78BA\u5EA6 in ('100%'))\nWHERE \u9867\u5BA2\u30E9\u30F3\u30AF in ('A')\n```\n\n\u8907\u6570\u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u6DF7\u5728\u6307\u5B9A\u3082\u53EF\u80FD\u3067\u3059\u3002\n\n```sql\nUPDATE APP88\nSET \u5408\u8A08\u8CBB\u7528 = \u5408\u8A08\u8CBB\u7528 * 1.1,\n \u4E0A\u9650\u8CBB\u7528 = (SELECT MAX(\u5408\u8A08\u8CBB\u7528) FROM APP88),\n \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u66F4\u65B0\u6E08\u307F'\nWHERE \u78BA\u5EA6 in ('80%', '100%')\n```\n\n**\u5236\u7D04:**\n\n| \u9805\u76EE | \u5185\u5BB9 |\n|---|---|\n| \u8FD4\u5374\u884C\u6570 | 1 \u884C 1 \u5217\u306E\u307F\uFF080 \u884C\u30FB2 \u884C\u4EE5\u4E0A\u306F\u30A8\u30E9\u30FC\u3002GROUP BY \u306A\u3057\u306E\u96C6\u8A08\u30B5\u30D6\u30AF\u30A8\u30EA\u306F 0 \u4EF6\u3067\u3082 1 \u884C\u3092\u8FD4\u3059\u305F\u3081\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u305B\u3093\u3002**\u623B\u308A\u5024\u306F\u95A2\u6570\u3054\u3068\u306B\u9055\u3044\u307E\u3059** \u2014 \xA78\uFF09 |\n| \u76F8\u95A2\u30B5\u30D6\u30AF\u30A8\u30EA | \u975E\u5BFE\u5FDC\uFF08\u5916\u5074\u30C6\u30FC\u30D6\u30EB\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u53C2\u7167\u4E0D\u53EF\uFF09 |\n| \u30B5\u30D6\u30AF\u30A8\u30EA\u5F8C\u306E\u7B97\u8853 | \u975E\u5BFE\u5FDC \u2014 \u7B97\u8853\u306F\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u884C\u3046 |\n\n```sql\n-- NG: \u30B5\u30D6\u30AF\u30A8\u30EA\u5F8C\u306E\u7B97\u8853\nUPDATE APP88 SET \u4E0A\u9650\u8CBB\u7528 = (SELECT AVG(\u5408\u8A08\u8CBB\u7528) FROM APP88) * 1.1 WHERE ...\n\n-- OK: \u7B97\u8853\u3092\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u5B9F\u884C\nUPDATE APP88 SET \u4E0A\u9650\u8CBB\u7528 = (SELECT AVG(\u5408\u8A08\u8CBB\u7528) * 1.1 FROM APP88) WHERE ...\n```\n\n---\n\n### SET \u3067\u306E CASE WHEN\n\nSET \u306E\u53F3\u8FBA\u306B CASE WHEN \u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nUPDATE APP100\nSET \u9867\u5BA2\u30E9\u30F3\u30AF = CASE\n WHEN \u91D1\u984D >= 100000 THEN 'S'\n WHEN \u91D1\u984D >= 10000 THEN 'A'\n ELSE 'B'\n END\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5BFE\u8C61'\n```\n\n\u7B97\u8853\u5F0F\u3068 CASE WHEN \u3092\u540C\u6642\u306B\u6307\u5B9A\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002\n\n```sql\nUPDATE APP100\nSET \u5408\u8A08 = \u5358\u4FA1 * \u6570\u91CF,\n \u30E9\u30F3\u30AF = CASE\n WHEN \u5358\u4FA1 >= 10000 THEN 'S'\n ELSE 'A'\n END\nWHERE \u62C5\u5F53\u8005 = '\u7530\u4E2D'\n```\n\n#### THEN / ELSE \u306B\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u3092\u6307\u5B9A\n\n\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u30FB\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u7B49\u306E\u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u5BFE\u3057\u3066\u3001\u6761\u4EF6\u306B\u5FDC\u3058\u305F\u5024\u3092\u66F8\u304D\u8FBC\u3081\u307E\u3059\u3002 \n\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u306F `getFields()` \u3067\u81EA\u52D5\u53D6\u5F97\u3055\u308C\u307E\u3059\u3002\n\n```sql\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E: \u512A\u5148\u5EA6\u306B\u5FDC\u3058\u3066\u62C5\u5F53\u8005\u3092\u5207\u308A\u66FF\u3048\nUPDATE APP89\nSET \u62C5\u5F53\u8005 = CASE\n WHEN \u512A\u5148\u5EA6 = '\u9AD8' THEN ['user1', 'user2']\n WHEN \u512A\u5148\u5EA6 = '\u4E2D' THEN 'user3'\n ELSE ''\n END\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u672A\u7740\u624B'\n\n-- IF() \u77ED\u7E2E\u8A18\u6CD5: \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u5206\u5C90\nUPDATE APP89\nSET \u30BF\u30B0 = IF(\u9867\u5BA2\u30E9\u30F3\u30AF = 'A', ['\u91CD\u8981', 'VIP'], '\u901A\u5E38')\nWHERE \u62C5\u5F53\u8005 = 'user1'\n\n-- \u6587\u5B57\u5217\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u6DF7\u5728\nUPDATE APP89\nSET \u9867\u5BA2\u30E9\u30F3\u30AF = CASE WHEN \u91D1\u984D >= 100000 THEN 'S' ELSE 'A' END,\n \u62C5\u5F53\u8005 = CASE WHEN \u91D1\u984D >= 100000 THEN ['user1', 'user2'] ELSE 'user3' END\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5BFE\u8C61'\n```\n\n> **WHERE \u53E5\u306F\u5FC5\u9808\u3067\u3059\u3002** \u5168\u4EF6\u66F4\u65B0\u3092\u9632\u3050\u305F\u3081\u3001WHERE \u306A\u3057\u306E UPDATE \u306F\u69CB\u6587\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002 \n> \u6CE8: CLI \u306B\u306F `--allow-without-where` \u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u73FE\u884C\u5B9F\u88C5\u3067\u306F UPDATE/DELETE \u306E\u6587\u6CD5\u4E0A WHERE \u304C\u5FC5\u9808\u3067\u3059\u3002\n\n> **\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0:** \u5B9F\u884C\u524D\u306B\u5BFE\u8C61\u4EF6\u6570\u3092\u8868\u793A\u3057\u3066\u78BA\u8A8D\u3092\u6C42\u3081\u307E\u3059\u3002 \n> \u30AD\u30E3\u30F3\u30BB\u30EB\u3059\u308B\u3068\u66F4\u65B0\u306F\u884C\u308F\u308C\u307E\u305B\u3093\u3002\n\n> **\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u30FB\u4F5C\u696D\u8005\u306F\u66F4\u65B0\u4E0D\u53EF\u3067\u3059\u3002** \n> \u3053\u308C\u3089\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306F kintone \u306E `/k/v1/records.json` \u3067\u306F\u5909\u66F4\u3067\u304D\u305A\u3001\u5C02\u7528\u306E `/k/v1/records/status.json` API \u304C\u5FC5\u8981\u3067\u3059\u3002 \n> kSQL \u306E UPDATE \u5BFE\u8C61\u5916\u3068\u306A\u308A\u307E\u3059\u3002\n\n### SET \u3067\u306E\u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\n\n\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u30FB\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u7B49\u306E\u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E SET \u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002 \n\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u306F\u5B9F\u884C\u524D\u306B `getFields()` \u3067\u81EA\u52D5\u53D6\u5F97\u3057\u307E\u3059\u3002\n\n#### \u30AB\u30F3\u30DE\u533A\u5207\u308A\u6587\u5B57\u5217\n\n```sql\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E\u3092\u66F4\u65B0\nUPDATE APP89 SET \u62C5\u5F53\u8005 = 'user1,user2' WHERE \u9867\u5BA2\u540D = 'A\u793E'\n\n-- \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u66F4\u65B0\nUPDATE APP89 SET \u30BF\u30B0 = '\u91CD\u8981,VIP' WHERE \u9867\u5BA2\u30E9\u30F3\u30AF = 'A'\n\n-- \u7A7A\u306B\u3059\u308B\nUPDATE APP89 SET \u62C5\u5F53\u8005 = '' WHERE \u9867\u5BA2\u540D = 'A\u793E'\n```\n\n#### \u914D\u5217\u30EA\u30C6\u30E9\u30EB `[...]`\n\n```sql\n-- \u30AB\u30F3\u30DE\u3092\u542B\u3080\u9078\u629E\u80A2\nUPDATE APP89 SET \u30BF\u30B0 = ['\u9078\u629E\u80A2A', '\u9078\u629E\u80A2B,C'] WHERE \u9867\u5BA2\u30E9\u30F3\u30AF = 'A'\n```\n\n#### \u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3068\u5909\u63DB\u30EB\u30FC\u30EB\n\n| \u30D5\u30A3\u30FC\u30EB\u30C9\u578B | SQL \u8A18\u8FF0\u4F8B | kintone API \u9001\u4FE1\u5024 |\n|---|---|---|\n| USER_SELECT / ORGANIZATION_SELECT / GROUP_SELECT | `'user1,user2'` | `[{\"code\":\"user1\"},{\"code\":\"user2\"}]` |\n| CHECK_BOX / MULTI_SELECT | `'\u9078\u629E\u80A2A,\u9078\u629E\u80A2B'` | `[\"\u9078\u629E\u80A2A\",\"\u9078\u629E\u80A2B\"]` |\n| \u7A7A\u306B\u3059\u308B\uFF08\u30E6\u30FC\u30B6\u30FC\u7CFB\u30FB\u914D\u5217\u7CFB\uFF09 | `''` | `[]` |\n| DATETIME | `'2026-04-05 12:00'` | `'2026-04-05T03:00:00Z'`\uFF08\u30ED\u30FC\u30AB\u30EB\u2192UTC\uFF09 |\n| DATE | `'2026/04/05'` | `'2026-04-05'` |\n| CREATOR / MODIFIER | \u2014 | **\u66F4\u65B0\u4E0D\u53EF**\uFF08kintone \u5236\u7D04\uFF09 |\n\n```sql\n-- \u65E5\u6642\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u66F4\u65B0\nUPDATE APP15 SET \u65E5\u6642 = '2026-04-05 12:00' WHERE $id = 9\nUPDATE APP15 SET \u65E5\u4ED8 = '2026/04/05' WHERE $id = 9\n```\n\n---", uri: "ksql://language-reference/16-update" }, "17-upsert": { heading: "17. UPSERT", text: "## 17. UPSERT\n\n\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u5024\u3067\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3092\u691C\u7D22\u3057\u3001\u4E00\u81F4\u3059\u308C\u3070\u66F4\u65B0\u30FB\u306A\u3051\u308C\u3070\u65B0\u898F\u767B\u9332\u3057\u307E\u3059\u3002\n\n```sql\nUPSERT INTO \u30C6\u30FC\u30D6\u30EB\u540D (\u30D5\u30A3\u30FC\u30EB\u30C91, \u30D5\u30A3\u30FC\u30EB\u30C92, ...)\nVALUES (\u50241, \u50242, ...)\nON DUPLICATE (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9)\n```\n\n### VALUES \u306B\u3088\u308B UPSERT\n\n```sql\nUPSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, \u91D1\u984D)\nVALUES ('C001', '\u7530\u4E2D\u5546\u5E97', 50000)\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\n```\n\n\u8907\u6570\u30EC\u30B3\u30FC\u30C9\u306E\u4E00\u62EC UPSERT:\n\n```sql\nUPSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, \u91D1\u984D)\nVALUES ('C001', '\u7530\u4E2D\u5546\u5E97', 50000),\n ('C002', '\u9234\u6728\u5546\u4E8B', 80000)\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\n```\n\n\u8907\u5408\u30AD\u30FC:\n\n```sql\nUPSERT INTO APP100 (\u5E74\u5EA6, \u6708, \u62C5\u5F53\u8005, \u58F2\u4E0A)\nVALUES ('2025', '4', '\u7530\u4E2D', 150000)\nON DUPLICATE (\u5E74\u5EA6, \u6708, \u62C5\u5F53\u8005)\n```\n\n### SELECT \u306B\u3088\u308B UPSERT\n\n\u5225\u30A2\u30D7\u30EA\u306E\u30C7\u30FC\u30BF\u3092\u30BD\u30FC\u30B9\u306B\u3057\u3066 UPSERT \u3057\u307E\u3059\u3002\n\n```sql\nUPSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, \u5408\u8A08\u91D1\u984D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, SUM(\u91D1\u984D)\nFROM APP200\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u78BA\u5B9A'\nGROUP BY \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\n```\n\n- SELECT \u306E\u5217\u6570\u3068 UPSERT \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\u304C\u4E00\u81F4\u3057\u306A\u3044\u5834\u5408\u306F\u30A8\u30E9\u30FC\n- SELECT \u5074\u306F SIMPLE / FULL_SCAN \u3092\u81EA\u52D5\u5224\u5B9A\uFF08JOIN\u30FBGROUP BY\u30FB\u95A2\u6570\u3082\u4F7F\u7528\u53EF\uFF09\n- USER_SELECT / CHECK_BOX \u7B49\u306E\u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3001\u8EE2\u9001\u5143\u30FB\u8EE2\u9001\u5148\u304C\u540C\u578B\u306E\u5834\u5408\u306B\u81EA\u52D5\u5909\u63DB\n\n### \u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u542B\u3080 UPSERT\n\nINSERT \u3068\u540C\u69D8\u306B\u3001\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u30FB\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u7B49\u3078\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u6587\u5B57\u5217\u30FB\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u6307\u5B9A\u304C\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- VALUES: \u30AB\u30F3\u30DE\u533A\u5207\u308A\u3067\u30E6\u30FC\u30B6\u30FC\u9078\u629E\nUPSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005, \u30BF\u30B0)\nVALUES ('A\u793E', 'user1,user2', '\u91CD\u8981,VIP')\nON DUPLICATE (\u9867\u5BA2\u540D)\n\n-- SELECT: \u540C\u578B\u30D5\u30A3\u30FC\u30EB\u30C9\u9593\u306F\u81EA\u52D5\u8EE2\u9001\nUPSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005)\nSELECT \u9867\u5BA2\u540D, \u62C5\u5F53\u8005 FROM APP88\nON DUPLICATE (\u9867\u5BA2\u540D)\n```\n\n### \u7D50\u679C\u8868\u793A\n\n| \u9805\u76EE | \u5185\u5BB9 |\n|------|------|\n| \u767B\u9332\u4EF6\u6570 | \u65B0\u898F\u767B\u9332\u3055\u308C\u305F\u30EC\u30B3\u30FC\u30C9\u6570 |\n| \u66F4\u65B0\u4EF6\u6570 | \u66F4\u65B0\u3055\u308C\u305F\u30EC\u30B3\u30FC\u30C9\u6570 |\n\n> \u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u4E00\u81F4\u3059\u308B\u30EC\u30B3\u30FC\u30C9\u304C\u8907\u6570\u3042\u308B\u5834\u5408\u306F\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n\n---\n\n## 17.1 VALIDATE ONLY\uFF08\u66F8\u304D\u8FBC\u307F\u524D\u691C\u8A3C\uFF09\n\n`INSERT` / `UPSERT` / `UPDATE` \u306E\u672B\u5C3E\u306B `VALIDATE ONLY` \u3092\u4ED8\u3051\u308B\u3068\u3001\u5019\u88DC\u884C\u3092\u5168\u4EF6\u691C\u8A3C\u3057\u3001kintone \u306E POST / PUT / DELETE API\u3092\u547C\u3070\u305A\u306B\u30A8\u30E9\u30FC\u4E00\u89A7\u3092\u8FD4\u3057\u307E\u3059\u3002\u89AA\u30EC\u30B3\u30FC\u30C9DML\u306E\u307F\u5BFE\u5FDC\u3057\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EBDML\u3001`DELETE`\u3001`REORDER`\u306B\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\n\n```sql\nINSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nVALUES ('C001', 100), ('', -1)\nVALIDATE ONLY;\n\nUPSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP200\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\nVALIDATE ONLY;\n\nUPDATE APP100 SET \u91D1\u984D = \u91D1\u984D * 1.1\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u6709\u52B9'\nVALIDATE ONLY;\n```\n\n\u691C\u8A3C\u5BFE\u8C61\u306F\u5FC5\u9808\u3001\u6570\u5024\u30FB\u65E5\u4ED8\u30FB\u6642\u523B\u30FB\u65E5\u6642\u3001\u6570\u5024\u7BC4\u56F2\u3001\u6587\u5B57\u5217\u9577\u3001\u9078\u629E\u80A2\u3001UPSERT\u30AD\u30FC\u306E\u7A7A\u5024\u30FB\u30BD\u30FC\u30B9\u5185\u91CD\u8907\u3067\u3059\uFF08`UPDATE`/`UPSERT` update \u5206\u5C90\u306F\u5F8C\u8FF0\u306E post-image \u306B\u3088\u308A\u30EC\u30B3\u30FC\u30C9\u5168\u4F53\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u884C\u3082\u5BFE\u8C61\uFF09\u30021\u884C\u306B\u8907\u6570\u306E\u554F\u984C\u304C\u3042\u308C\u3070\u30A8\u30E9\u30FC\u3082\u8907\u6570\u884C\u306B\u306A\u308A\u307E\u3059\u3002\u7D50\u679C\u306B\u306F `validatedRows` / `validRows` / `invalidRows` / `errorCount` \u3068\u3001\u5165\u529B\u30DA\u30A4\u30ED\u30FC\u30C9\u5217\u304A\u3088\u3073 `$err_*` \u8A3A\u65AD\u5217\uFF08`$err_statement` / `$err_operation` / `$err_row` / `$err_field` / `$err_code` / `$err_message` / `$err_value` / `$err_subtable` / `$err_subrow` / `$err_subrow_id` \u306E10\u5217\u3002v3.9.0 \u4EE5\u964D\uFF09\u304C\u542B\u307E\u308C\u307E\u3059\u3002\u5B50\u30BB\u30EB\u4EE5\u5916\u306E\u9055\u53CD\u3067\u306F\u672B\u5C3E4\u5217\uFF08`$err_value` / `$err_subtable` / `$err_subrow` / `$err_subrow_id`\uFF09\u306F\u7A7A\u6587\u5B57\u3067\u3059\u3002\n\n\u8907\u6587\u30D0\u30C3\u30C1\u3067\u306F `VALIDATE ONLY INTO #err` \u3068\u3059\u308B\u3068\u3001\u540C\u3058\u30A8\u30E9\u30FC\u884C\u3092\u5F8C\u7D9A\u6587\u304B\u3089\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3068\u3057\u3066\u53C2\u7167\u3067\u304D\u307E\u3059\u3002\u540C\u540D `#err` \u306F\u5165\u529B\u5217\u69CB\u6210\u304C\u540C\u3058\u5834\u5408\u3060\u3051\u8FFD\u8A18\u3067\u304D\u3001\u7570\u306A\u308Bschema\u307E\u305F\u306F `tempTableMaxRows` \u8D85\u904E\u306F\u65E2\u5B58\u884C\u3092\u5909\u66F4\u305B\u305A\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n\n```sql\nINSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D FROM #source\nVALIDATE ONLY INTO #err;\nSELECT * FROM #err;\n```\n\n- `VALIDATE ONLY` \u306Fread-only\u6271\u3044\u3067\u3001MCP\u3067\u306F `ksql_query`\u3001CLI\u3067\u306F `--allow-dml`\u306A\u3057\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u306F\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\u306A\u3057\u3067\u5B9F\u884C\u3067\u304D\u307E\u3059\n- \u66F8\u304D\u8FBC\u307F\u5148\u306B NUMBER \u5217\u304C\u3042\u308B\u5834\u5408\u3001\u901A\u5E38 DML \u3068\u540C\u3058\u304F\u904B\u7528\u74B0\u5883\u306E `app/settings.json` \u304B\u3089 `numberPrecision` \u3092\u53D6\u5F97\u3057\u3001**\u6574\u6570\u90E8**\u304C `digits - decimalPlaces` \u6841\u3092\u8D85\u3048\u308B\u5024\u3092\u66F8\u304D\u8FBC\u307F\u524D\u306B\u691C\u51FA\u3057\u307E\u3059\uFF08`ERR_NUMBER_INTEGER_DIGITS`\uFF09\u3002kintone \u3082\u6574\u6570\u8D85\u904E\u306F\u5168\u9762\u3067 `CB_VA01` \u62D2\u5426\u3059\u308B\u305F\u3081\u3001\u3053\u308C\u306F\u305D\u306E\u5224\u65AD\u306E\u524D\u5012\u3057\u3067\u3059\n- **\u5C0F\u6570\u90E8\u306F kSQL \u3067\u306F\u691C\u8A3C\u3057\u307E\u305B\u3093**\u3002`decimalPlaces` \u3092\u8D85\u3048\u308B\u5C0F\u6570\u306F\u305D\u306E\u307E\u307E kintone \u3078\u6E21\u3057\u3001kintone \u304C `roundingMode` \u3067\u81EA\u52D5\u4E38\u3081\u3057\u307E\u3059\uFF08REST API\u30FBCSV \u8AAD\u307F\u8FBC\u307F\u30FB\u7DE8\u96C6\u753B\u9762\u30FB\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u540C\u3058\u6319\u52D5\uFF09\u3002`1/3` \u306A\u3069\u306E\u7B97\u8853\u7D50\u679C\u306B `ROUND` \u3092\u5F37\u5236\u3057\u307E\u305B\u3093\n- \u4E00\u822C\u8A2D\u5B9A\u306F\u540C\u3058\u5B9F\u884C\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30A2\u30D7\u30EA\u3054\u3068\u306B\u6700\u59271\u56DE\u53D6\u5F97\u3057\u307E\u3059\u3002\u53D6\u5F97\u5931\u6557\u3001\u4E0D\u6B63\u30EC\u30B9\u30DD\u30F3\u30B9\u3001\u672A\u77E5\u306E\u4E38\u3081\u30E2\u30FC\u30C9\u3067\u306F\u65E2\u5B9A\u5024\u3092\u4EEE\u5B9A\u305B\u305A\u6587\u5168\u4F53\u3092fail-closed\u3057\u3001`ON ERROR SKIP` \u306E\u884C\u30A8\u30E9\u30FC\u306B\u306F\u5909\u63DB\u3057\u307E\u305B\u3093\n- \u65E2\u5B58 `ROUND` \u306E\u610F\u5473\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\u7B97\u8853\u3001\u96C6\u8A08\u3001\u6570\u5024\u95A2\u6570\u3001CASE\u3001CALC\u7531\u6765\u5024\u306E\u8A08\u7B97\u306F\u5F15\u304D\u7D9A\u304Dbinary64\u3067\u3059\n- \u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u304C\u5FC5\u8981\u306A\u305F\u3081\u3001`onLimit=truncate` / CLI `--on-limit truncate` / \u30D7\u30E9\u30B0\u30A4\u30F3\u306Etruncate\u8A2D\u5B9A\u306F\u7121\u8996\u3055\u308C\u3001\u5E38\u306Berror\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\n- \u30ED\u30FC\u30AB\u30EB\u691C\u8A3C\u306F\u901A\u5E38\u306E\u66F8\u304D\u8FBC\u307F\u7D4C\u8DEF\u3088\u308A\u53B3\u5BC6\u306A\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u691C\u8A3C\u30A8\u30E9\u30FC\u306FkSQL\u304C\u691C\u51FA\u3057\u305FTier 0\u554F\u984C\u3067\u3042\u308A\u3001\u540C\u3058\u5024\u3092kintone API\u304C\u5FC5\u305A\u62D2\u5426\u3059\u308B\u3068\u3044\u3046\u4E88\u6E2C\u3067\u306F\u3042\u308A\u307E\u305B\u3093\n- \u691C\u8A3C\u901A\u904E\u306F\u66F8\u304D\u8FBC\u307F\u6210\u529F\u3092\u4FDD\u8A3C\u3057\u307E\u305B\u3093\u3002\u6A29\u9650\u3001\u7AF6\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u5B9F\u5728\u6027\u3001\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3068\u306E\u4E00\u610F\u5236\u7D04\u885D\u7A81\u306A\u3069API\u5B9F\u884C\u6642\u306E\u554F\u984C\u306F\u5BFE\u8C61\u5916\u3067\u3059\n- **`UPDATE` / `UPSERT`\uFF08update \u5206\u5C90\uFF09\u306E `VALIDATE ONLY` \u306F\u3001SET \u5BFE\u8C61\u5217\u3060\u3051\u3067\u306A\u304F\u3001\u66F4\u65B0\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u306E\u53D6\u5F97\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u306B SET \u3092\u9069\u7528\u3057\u305F\u300Cpost-image\uFF08\u30EC\u30B3\u30FC\u30C9\u5168\u4F53\uFF09\u300D\u3092\u691C\u8A3C\u3057\u307E\u3059\uFF08v3.9.0\u30FBB43\uFF09\u3002** \u3053\u308C\u306B\u3088\u308A\u3001SET \u5BFE\u8C61\u5916\u306E\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u9805\u76EE\u3084**\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u884C\u306B\u6B8B\u308B\u65E2\u5B58\u9055\u53CD**\uFF08\u5FC5\u9808\u30FB\u6587\u5B57\u5217\u9577\u30FB\u6570\u5024\u7BC4\u56F2\u30FB\u9078\u629E\u80A2\u30FB\u6570\u5024\u7CBE\u5EA6\uFF09\u3082\u66F8\u304D\u8FBC\u307F\u524D\u306B\u691C\u51FA\u3057\u307E\u3059\u3002kintone \u306F PUT \u6642\u306B\u30EC\u30B3\u30FC\u30C9\u5168\u4F53\u3092\u518D\u691C\u8A3C\u3059\u308B\u305F\u3081\u3001\u3053\u306E\u691C\u8A3C\u306F\u672C\u5B9F\u884C\u6642\u306E `CB_VA01` \u3092\u524D\u5012\u3057\u3067\u6355\u6349\u3057\u307E\u3059\u3002\u5B50\u9055\u53CD\u306F `$err_subtable`\uFF08\u30C6\u30FC\u30D6\u30EB\u30B3\u30FC\u30C9\uFF09\u30FB`$err_subrow`\uFF081-based \u884C\u5E8F\u6570\uFF09\u30FB`$err_subrow_id`\uFF08\u6C38\u7D9A\u884C ID\uFF1D\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E `_rid`\uFF09\u3067\u4F4D\u7F6E\u3092\u793A\u3057\u307E\u3059\u3002\u30D7\u30EC\u30FC\u30F3\u306A `UPDATE`/`UPSERT` \u5B9F\u884C\uFF08`VALIDATE ONLY`/`ON ERROR SKIP` \u306A\u3057\uFF09\u306E\u53D6\u5F97\u6319\u52D5\u306F\u5909\u308F\u308A\u307E\u305B\u3093\n- \u3053\u306E\u691C\u8A3C\u306E\u305F\u3081\u3001`UPDATE`/`UPSERT` \u306E `VALIDATE ONLY` \u306F\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u306E\u5B8C\u5168\u306A\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\uFF08`$id`\uFF0B\u691C\u8A3C\u5BFE\u8C61\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\uFF0B\u5168\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\uFF09\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002`UPDATE` \u306F\u65E2\u5B58 GET \u306E\u53D6\u5F97\u5217\u3092\u62E1\u5F35\u3057\u3001`UPSERT` \u306F\u7167\u5408\u5F8C\u306B\u66F4\u65B0\u5BFE\u8C61 ID \u3092100\u4EF6\u305A\u3064\u307E\u3068\u3081\u3066\u8FFD\u52A0\u53D6\u5F97\u3057\u307E\u3059\uFF08\u5BFE\u8C611\u4EF6\u3054\u3068\u306E\u8FFD\u52A0 GET \u306F\u884C\u3044\u307E\u305B\u3093\uFF09\n\n## 17.2 ON ERROR SKIP\uFF08\u4E8B\u524D\u691C\u8A3C\u30A8\u30E9\u30FC\u884C\u306E\u9694\u96E2\uFF09\n\n\u8907\u6587\u30D0\u30C3\u30C1\u5185\u306E\u89AA\u30EC\u30B3\u30FC\u30C9 `INSERT` / `UPSERT` / `UPDATE` \u306B `ON ERROR SKIP INTO #err` \u3092\u4ED8\u3051\u308B\u3068\u3001`VALIDATE ONLY` \u3068\u540C\u3058Tier 0\u691C\u8A3C\u3067\u4E0D\u6B63\u306B\u306A\u3063\u305F\u884C\u3092 `#err` \u3078\u9694\u96E2\u3057\u3001\u5408\u683C\u884C\u3060\u3051\u3092\u66F8\u304D\u8FBC\u307F\u307E\u3059\u3002\u66F8\u304D\u8FBC\u307F\u3092\u884C\u3046\u305F\u3081\u3001MCP\u3067\u306F `ksql_mutate` \u3068DML\u627F\u8A8D\u3001CLI\u3067\u306F `--allow-dml` \u304C\u5FC5\u8981\u3067\u3059\u3002**`UPDATE` / `UPSERT`\uFF08update \u5206\u5C90\uFF09\u3067\u306F \xA717.1 \u306E post-image \u691C\u8A3C\u306B\u3088\u308A\u3001\u66F4\u65B0\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u3092\u542B\u3080\u65E2\u5B58\u9055\u53CD\u3092\u6301\u3064\u89AA\u3082\u9694\u96E2\u5BFE\u8C61\u306B\u306A\u308A\u307E\u3059\uFF08v3.9.0\u30FBB43\uFF09\u3002** \u3053\u308C\u306B\u3088\u308A\u3001\u65E2\u5B58\u9055\u53CD\u30EC\u30B3\u30FC\u30C91\u4EF6\u304C\u540C\u4E00\u30C1\u30E3\u30F3\u30AF\u306E\u5408\u683C\u884C\u307E\u3067\u5DFB\u304D\u6DFB\u3048\u306B\u3057\u3066 `CB_VA01` \u3067\u5931\u6557\u3059\u308B\u4E8B\u614B\u3092\u9632\u304E\u3001\u5408\u683C\u89AA\u3060\u3051\u3092\u78BA\u5B9F\u306B\u66F8\u304D\u8FBC\u307F\u307E\u3059\u3002\n\n```sql\nINSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D FROM #source\nON ERROR SKIP INTO #err REJECT LIMIT 100;\n\nSELECT * FROM #err;\n```\n\n- `REJECT LIMIT n` \u306F\u9694\u96E2\u3055\u308C\u305F\u30E6\u30CB\u30FC\u30AF\u5165\u529B\u884C\u6570\u3078\u9069\u7528\u3057\u307E\u3059\u3002n\u884C\u307E\u3067\u306F\u8A31\u5BB9\u3057\u3001n+1\u884C\u4EE5\u4E0A\u306A\u3089\u5168\u5019\u88DC\u306E\u691C\u8A3C\u5B8C\u4E86\u5F8C\u306B\u66F8\u304D\u8FBC\u307F\u30BC\u30ED\u3067\u505C\u6B62\u3057\u307E\u3059\u3002\u7701\u7565\u6642\u306F\u7121\u5236\u9650\u3067\u3059\n- \u8D85\u904E\u6587\u306F `RejectLimitExceededError` \u306B\u306A\u308A\u307E\u3059\u304C\u3001\u5168\u8A3A\u65AD\u884C\u306F\u5FDC\u7B54\u306E\u7D50\u679C\u30BB\u30C3\u30C8\u306B\u542B\u307E\u308C\u307E\u3059\u3002\u5F8C\u7D9A\u6587\u306Ffail-fast\u3067skip\u3055\u308C\u308B\u305F\u3081\u3001\u8D85\u904E\u6642\u306F\u5F8C\u7D9ASQL\u304B\u3089 `#err` \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\n- `ON ERROR SKIP` \u306F `INTO #err` \u5FC5\u9808\u306E\u30D0\u30C3\u30C1\u5C02\u7528\u69CB\u6587\u3067\u3059\u3002\u5358\u6587\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n- \u7D50\u679C\u306B\u306F\u65E2\u5B58\u306Eoperation\u5225\u4EF6\u6570\u306B\u52A0\u3048\u3066 `affectedRows` / `skippedRows` / `rejectLimit` / `errTable` \u304C\u542B\u307E\u308C\u307E\u3059\n- `dmlMaxRows` \u3068 `dmlTotalMaxRows` \u306F\u9694\u96E2\u5F8C\u306B\u5B9F\u969B\u306B\u66F8\u304D\u8FBC\u3080\u884C\u6570\u3078\u9069\u7528\u3055\u308C\u307E\u3059\u3002\u30BD\u30FC\u30B9\u53D6\u5F97\u306F\u901A\u5E38\u306E `maxRecords` \u3067\u5236\u5FA1\u3055\u308C\u307E\u3059\n- \u7D44\u307F\u8FBC\u307F\u5236\u7D04\uFF08\u5FC5\u9808\u30FB\u6587\u5B57\u5217\u9577\u30FB\u6570\u5024\u7BC4\u56F2\u30FB\u9078\u629E\u80A2\u30FB\u6570\u5024\u7CBE\u5EA6\uFF09\u306E\u65E2\u5B58\u9055\u53CD\u306F\u3001update \u5206\u5C90\u3067\u306F post-image \u691C\u8A3C\u3067\u4E8B\u524D\u306B\u691C\u51FA\u30FB\u9694\u96E2\u3055\u308C\u307E\u3059\uFF08v3.9.0\u30FBB43\uFF09\u3002\u4E00\u65B9\u3001kintone API\u304C\u66F8\u304D\u8FBC\u307F\u6642\u306B\u8FD4\u3059\u6A29\u9650\u30FB\u7AF6\u5408\u30FB\u4E00\u610F\u5236\u7D04\u30FB\u30E6\u30FC\u30B6\u30FC\u5B9F\u5728\u6027\u306A\u3069\u306E\u5B9F\u884C\u6642\u30A8\u30E9\u30FC\u306F\u9694\u96E2\u305B\u305A\u3001\u5F93\u6765\u3069\u304A\u308Afail-fast\u3067\u3059\n\n---\n\n## 17.3 CHECK\uFF08\u30AB\u30B9\u30BF\u30E0\u30C1\u30A7\u30C3\u30AF\u30FBv3.4.0\uFF09\n\n`INSERT` / `UPSERT` / `UPDATE` \u306E\u30BD\u30FC\u30B9\u306E\u5F8C\u3001\u51E6\u5206\u7BC0\uFF08`VALIDATE ONLY` / `ON ERROR SKIP`\uFF09\u306E\u524D\u306B `CHECK` \u30D6\u30ED\u30C3\u30AF\u3092\u7F6E\u304F\u3068\u3001\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u306E\u884C\u30EC\u30D9\u30EB\u696D\u52D9\u30EB\u30FC\u30EB\u3067\u4E0D\u6B63\u884C\u3092 `#err`\uFF08`$err_code = ERR_CHECK`\uFF09\u3078\u9694\u96E2\u3067\u304D\u307E\u3059\u3002\n\n```sql\nINSERT INTO APP123 (\u6570\u50241, \u6570\u50242, \u6570\u50243)\nSELECT \u6570\u50241, \u6570\u50242, \u6570\u50243 FROM APP999\nCHECK\n WHEN \u6570\u50241 IS NULL THEN '\u6570\u50241 \u672A\u5165\u529B\u30A8\u30E9\u30FC'\n WHEN \u6570\u50241 > \u6570\u50242 THEN '\u6570\u50241=' || \u6570\u50241 || ' \u304C \u6570\u50242=' || \u6570\u50242 || ' \u3092\u8D85\u904E'\nCHECK\n WHEN \u6570\u50243 > 100 THEN CONCAT('\u6570\u50243 \u304C\u4E0A\u9650\u8D85\u904E: ', \u6570\u50243)\nON ERROR SKIP INTO #err;\n```\n\n- **\u30B0\u30EB\u30FC\u30D7\uFF1D\u5148\u52DD\u3061**\uFF1A1 \u3064\u306E `CHECK` \u30D6\u30ED\u30C3\u30AF\u5185\u306F\u4E0A\u304B\u3089\u8A55\u4FA1\u3057\u3001\u6700\u521D\u306B\u8A72\u5F53\u3057\u305F `WHEN` \u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3060\u3051\u3092 1 \u4EF6\u51FA\u3057\u307E\u3059\u3002`CHECK` \u30D6\u30ED\u30C3\u30AF\u3092\u8907\u6570\u4E26\u3079\u308B\u3068\u4E92\u3044\u306B\u72EC\u7ACB\u306B\u8A55\u4FA1\u3057\u307E\u3059\uFF08\u95A2\u9023\u30C1\u30A7\u30C3\u30AF\u306F\u540C\u3058\u30D6\u30ED\u30C3\u30AF\uFF1D\u6700\u521D\u306E\u30A8\u30E9\u30FC\u306E\u307F\u3001\u7121\u95A2\u4FC2\u30C1\u30A7\u30C3\u30AF\u306F\u5225\u30D6\u30ED\u30C3\u30AF\uFF1D\u305D\u308C\u305E\u308C\uFF09\u3002\n- **\u53C2\u7167\u306F\u8AAD\u307F\u53D6\u308A\u884C**\uFF1A\n - `INSERT` / `UPSERT \u2026 SELECT` \u306F\u5143 SELECT \u306E\u51FA\u529B\u5217\uFF08\u5225\u540D\u53EF\uFF09\u3002**\u5148\u982D N \u5217\u304C\u66F8\u304D\u8FBC\u307F\u5BFE\u8C61\u3001\u6B8B\u308A\u306E\u672B\u5C3E\u5217\u306F CHECK \u5C02\u7528**\uFF08`CHECK` \u3092\u4ED8\u3051\u308B\u3068\u304D SELECT \u51FA\u529B\u540D\u306F\u4E00\u610F\u306B\u3059\u308B\uFF09\u3002\n - `\u2026 VALUES` \u306F\u633F\u5165\u5217\u3002\n - `UPDATE` \u306F**\u66F4\u65B0\u524D\u306E\u65E2\u5B58\u5024**\uFF08\u66F8\u304D\u8FBC\u3080\u65B0\u5024\u3092\u691C\u67FB\u3057\u305F\u3044\u3068\u304D\u306F SET \u5F0F\u3092\u66F8\u304F\uFF1A`SET \u6570\u91CF = \u6570\u91CF - \u51FA\u5EAB\u6570` \u306B\u5BFE\u3057 `WHEN \u6570\u91CF - \u51FA\u5EAB\u6570 < 0`\uFF09\u3002\n - `UPDATE \u2026 FROM` \u306F `APP<n>.\u5217`\uFF1D\u66F4\u65B0\u524D\u30BF\u30FC\u30B2\u30C3\u30C8\u30FB`<\u30BD\u30FC\u30B9\u5225\u540D>.\u5217`\uFF1D\u30BD\u30FC\u30B9\u65B0\u5024\u3067\u8B58\u5225\uFF08`WHEN s.\u91D1\u984D < APP100.\u91D1\u984D THEN '\u6E1B\u984D\u4E0D\u53EF'`\uFF09\u3002\u30BD\u30FC\u30B9\u5217\u3092\u4FEE\u98FE\u306A\u3057\u3067\u53C2\u7167\u3059\u308B\u3068\u30A8\u30E9\u30FC\u3002\n- \u30E1\u30C3\u30BB\u30FC\u30B8\u306F `||` / `CONCAT` \u3067\u30D5\u30A3\u30FC\u30EB\u30C9\u3084 `@var` \u3092\u88DC\u9593\u3067\u304D\u307E\u3059\u3002**\u6761\u4EF6\uFF08`WHEN`\uFF09\u3067\u306F `||` \u306F\u4F7F\u3048\u307E\u305B\u3093**\uFF08`CONCAT` \u3092\u4F7F\u3046\uFF09\u3002\n- \u51E6\u5206\uFF1A`ON ERROR SKIP INTO #err` \u306F\u8A72\u5F53\u884C\u3092\u9694\u96E2\u3057\u3066\u6B8B\u308A\u3092\u66F8\u304D\u8FBC\u307F\u3001`VALIDATE ONLY` \u306F\u66F8\u304B\u305A\u306B\u5831\u544A\u3001\u51E6\u5206\u7BC0\u306A\u3057\u306E\u7D20 DML \u306F\u66F8\u304D\u8FBC\u307F\u524D\u306B\u505C\u6B62\u3057\u307E\u3059\u3002\u7D44\u307F\u8FBC\u307F\u691C\u8A3C\uFF08\u5FC5\u9808\u30FB\u578B\u30FB\u7BC4\u56F2\u30FB\u6841\uFF09\u3068\u306F\u72EC\u7ACB\u306B\u8A55\u4FA1\u3057\u3001`#err` \u306F\u7D44\u307F\u8FBC\u307F\u30A8\u30E9\u30FC \u2192 \u30AB\u30B9\u30BF\u30E0\u30A8\u30E9\u30FC\u306E\u9806\u3067\u3059\u3002\u6BD4\u8F03\u975E\u5BFE\u5FDC\u306E\u8907\u5408\u578B\u3092\u6761\u4EF6\u306B\u4F7F\u3046\u7B49\u306E\u8A55\u4FA1\u4E0D\u80FD\u306F\u6587\u5168\u4F53\u30A8\u30E9\u30FC\uFF08\u884C\u9694\u96E2\u3057\u307E\u305B\u3093\uFF09\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DML \u306B\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`CHECK` \u306F `CHECK WHEN` \u306E\u4E26\u3073\u306E\u3068\u304D\u3060\u3051\u30AD\u30FC\u30EF\u30FC\u30C9\u306B\u306A\u308A\u307E\u3059\uFF08\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\uFF09\u3002\n\n## 17.4 VALIDATE\uFF08\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u306E\u8AAD\u307F\u53D6\u308A\u76E3\u67FB\uFF09\n\n\u5148\u982D\u306E `VALIDATE` \u6587\u306F\u3001\u4FDD\u5B58\u6E08\u307F\u30EC\u30B3\u30FC\u30C9\u3078\u30D5\u30A9\u30FC\u30E0\u306E\u7D44\u307F\u8FBC\u307F\u5236\u7D04\u3068\u4EFB\u610F\u306E `CHECK` \u3092\u9069\u7528\u3059\u308B read-only \u6587\u3067\u3059\u3002DML \u672B\u5C3E\u306E `VALIDATE ONLY` \u3068\u306F\u5225\u6587\u3067\u3001kintone \u306E POST / PUT / DELETE API \u306F\u547C\u3073\u307E\u305B\u3093\u3002\n\n```sql\nVALIDATE APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u660E\u7D30(\u6570\u91CF, \u5358\u4FA1))\nWHERE \u4F5C\u6210\u65E5\u6642 >= '2026-01-01'\nCHECK WHEN \u91D1\u984D < 0 THEN '\u91D1\u984D\u304C\u8CA0\u3067\u3059';\n\nVALIDATE APP100 INTO #err;\nSELECT $id, $err_field, $err_code, $err_message, $err_value,\n $err_subtable, $err_subrow, $err_subrow_id\nFROM #err;\n\n-- \u5927\u91CF\u9055\u53CD\u306F\u8A73\u7D30\u884C\u3092\u4F5C\u3089\u305A\u89AA\xD7\u30C6\u30FC\u30D6\u30EB\xD7\u30D5\u30A3\u30FC\u30EB\u30C9\xD7\u30B3\u30FC\u30C9\u3067\u96C6\u7D04\nVALIDATE APP100 SUMMARY INTO #summary;\n```\n\n- `(fields)` \u7701\u7565\u6642\u306F\u3001\u5236\u7D04\u3092\u6301\u3064\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\uFF0F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\uFF0F\u5B50\u306E\u5168 `NUMBER` \u304C\u5BFE\u8C61\u3067\u3059\u3002\u30C6\u30FC\u30D6\u30EB\u30B3\u30FC\u30C9\u5358\u72EC\u306F\u305D\u306E\u30C6\u30FC\u30D6\u30EB\u306E\u76E3\u67FB\u53EF\u80FD\u306A\u5B50\u3059\u3079\u3066\u3001`\u30C6\u30FC\u30D6\u30EB(\u5B501, \u5B502)` \u306F\u6307\u5B9A\u3057\u305F\u5B50\u3060\u3051\u3092\u9078\u3073\u307E\u3059\u3002\u88F8\u306E\u5B50\u30B3\u30FC\u30C9\u3001\u672A\u77E5\u30FB\u6240\u5C5E\u9055\u3044\u30FB\u91CD\u8907\u30FB\u76E3\u67FB\u5BFE\u8C61\u5916\u306F\u53D6\u5F97\u524D\u306B\u62D2\u5426\u3057\u307E\u3059\n- \u8A73\u7D30\u51FA\u529B\u306F\u56FA\u5B9A9\u5217 `$id`, `$err_field`, `$err_code`, `$err_message`, `$err_value`, `$err_subtable`, `$err_subrow`, `$err_subrow_id`, `$err_count` \u3067\u3059\u3002\u540C\u4E00\u30EC\u30B3\u30FC\u30C9\u306E\u9055\u53CD\u3092\u88C5\u98FE\u524D\u306E\u5143 message \u3092\u542B\u3080 `($id, $err_subtable, $err_field, $err_code, $err_message)` \u3067\u96C6\u7D04\u3057\u3001`$err_count` \u306B\u4EF6\u6570\u3092\u6587\u5B57\u5217\u5316\u3057\u3066\u683C\u7D0D\u3057\u307E\u3059\u3002\u7570\u306A\u308B\u5143 message \u306F\u5225\u884C\u3067\u3059\u3002\u51FA\u529B\u306F\u5148\u982D\u51FA\u73FE\u9806\u3067\u3001`$err_value` \u306F\u30B0\u30EB\u30FC\u30D7\u5148\u982D\u306E\u5024\u3092\u4FDD\u6301\u3057\u307E\u3059\u3002\u5B50\u9055\u53CD\u306E `$err_subrow` \u306F\u5168\u8A72\u5F53\u884C\u306E1-based\u8868\u793A\u5E8F\u6570\u3001`$err_subrow_id` \u306F\u540C\u9806\u306E\u5168\u6C38\u7D9A\u884CID\uFF08\u5404\u8981\u7D20\u304C\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E `_rid` \u3068\u540C\u5024\uFF09\u3092\u3001\u305D\u308C\u305E\u308C\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30FB\u5207\u308A\u6368\u3066\u306A\u3057\u3067\u683C\u7D0D\u3057\u307E\u3059\uFF08\u4F8B: `\"1,2\"` / `\"r10,r20\"`\uFF09\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u9055\u53CD\u304B\u3064 `$err_count >= 2` \u306E\u51FA\u529B message \u306B\u306F\u96C6\u7D04\u5F8C\u306B `\uFF08{count}\u884C: {subrow\u30EA\u30B9\u30C8}\uFF09` \u3092\u4ED8\u3051\u307E\u3059\uFF08\u4F8B: `\u6587\u5B57\u5217T2 \u306F 3 \u6587\u5B57\u4EE5\u4E0A\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF082\u884C: 1,2\uFF09`\uFF09\u3002\u30EA\u30B9\u30C8\u306F `$err_subrow` \u3068\u540C\u4E00\u3067\u3001\u5148\u982D\u51FA\u73FE\u9806\u30FB\u5207\u308A\u6368\u3066\u306A\u3057\u3067\u3059\u3002`$err_count=1` \u306E\u5B50\u9055\u53CD\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u9055\u53CD\u3001`CHECK` \u9055\u53CD\u306E message \u306F\u5F93\u6765\u3069\u304A\u308A\u3067\u3059\u3002`INTO #err` \u306B\u3082\u88C5\u98FE\u6E08\u307F message \u3092\u683C\u7D0D\u3057\u307E\u3059\u3002\u578B\u30E1\u30BF\u306F `$err_subrow=string`\u3001`$err_count=number` \u3067\u3059\u3002\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\uFF0F`CHECK` \u306E\u30ED\u30B1\u30FC\u30BF3\u5217\u306F\u7A7A\u3067\u3001\u901A\u5E38 `$err_count=1` \u3067\u3059\u30020\u884C\u30C6\u30FC\u30D6\u30EB\u3067\u306F\u5B50\u306E\u5FC5\u9808\u9055\u53CD\u306F\u767A\u706B\u3057\u307E\u305B\u3093\n- `SUMMARY` \u306F `(fields)` \u5F8C\u30FB`WHERE` \u524D\u306B\u7F6E\u304F soft keyword \u3067\u3059\u3002\u8A73\u7D30\u884C\u3092\u751F\u6210\u305B\u305A\u3001\u56FA\u5B9A5\u5217 `$id`, `$err_subtable`, `$err_field`, `$err_code`, `$err_count` \u3078\u76F4\u63A5\u96C6\u7D04\u3057\u307E\u3059\u3002SUMMARY \u306F\u30EC\u30B3\u30FC\u30C9\u6A2A\u65AD\u306E\u898F\u6A21\u628A\u63E1\u3001\u8A73\u7D309\u5217\u306F message \u5225\u306E\u30EC\u30B3\u30FC\u30C9\u5185\u8A33\u3068\u5168\u8A72\u5F53\u884C\u30ED\u30B1\u30FC\u30BF\u30EA\u30B9\u30C8\u306B\u4F7F\u3044\u307E\u3059\n- \u8A73\u7D30\uFF0F`SUMMARY` \u306E\u3069\u3061\u3089\u3082\u3001\u7D50\u679C\u30E1\u30BF\u30C7\u30FC\u30BF `validateStats` \u306B\u96C6\u7D04\u524D\u306E\u7D71\u8A08\u3092\u8FD4\u3057\u307E\u3059\u3002`errorRecords` \u306F\u9055\u53CD\u30921\u4EF6\u4EE5\u4E0A\u6301\u3064 distinct `$id` \u6570\u3001`errorCount` \u306F\u96C6\u7D04\u524D\u306E\u9055\u53CD\u7DCF\u6570\u3067\u3001\u7D50\u679C\u884C\u306E `$err_count` \u5408\u8A08\u3068\u4E00\u81F4\u3057\u307E\u3059\u3002\u9055\u53CD0\u4EF6\u3067\u3082\u4E21\u65B9\u30920\u3067\u8FD4\u3057\u307E\u3059\u3002\u3055\u3089\u306B\u4EFB\u610F\u30D5\u30A3\u30FC\u30EB\u30C9 `constraintMetadata` \u306F\u3001\u5B9F\u969B\u306E\u76E3\u67FB\u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u30E1\u30BF\u30C7\u30FC\u30BF\u306B\u542B\u307E\u308C\u3066\u3044\u305F\u30D5\u30A9\u30FC\u30E0\u5236\u7D04\u7A2E\u5225\u3092 `present`\u3001\u65E2\u77E54\u7A2E\u306E\u5DEE\u96C6\u5408\u3092 `absent` \u3067\u8FD4\u3057\u307E\u3059\u3002\u7A2E\u5225\u306F `required`\uFF08\u5FC5\u9808\uFF09\u3001`length`\uFF08`minLength` / `maxLength`\uFF09\u3001`range`\uFF08`minValue` / `maxValue`\uFF09\u3001`choice`\uFF08`optionOrder`\uFF09\u3067\u3001\u3053\u306E\u9806\u306B\u5B89\u5B9A\u3057\u307E\u3059\u3002\u305F\u3068\u3048\u3070\u9078\u629E\u80A2\u3060\u3051\u304C\u6E21\u3055\u308C\u305F0\u4EF6\u7D50\u679C\u306F `{ \"errorRecords\": 0, \"errorCount\": 0, \"constraintMetadata\": { \"present\": [\"choice\"], \"absent\": [\"required\", \"length\", \"range\"] } }` \u3067\u3059\u3002\u3053\u308C\u306F\u5165\u529B\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u89B3\u6E2C\u4E8B\u5B9F\u3067\u3042\u308A\u3001\u300C\u30A2\u30D7\u30EA\u306B\u5236\u7D04\u304C\u7121\u3044\u300D\u300Cclient \u304C\u5236\u7D04\u3092\u843D\u3068\u3057\u305F\u300D\u3068\u3044\u3046\u63A8\u6E2C\u3084\u8B66\u544A\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u51684\u7A2E\u304C `absent` \u3067\u3082\u8B66\u544A\u306F\u8FD4\u3057\u307E\u305B\u3093\u3002`CHECK` \u3068 NUMBER \u306E\u578B\u30FB\u7CBE\u5EA6\u691C\u8A3C\u306F\u3053\u306E4\u7A2E\u306B\u542B\u307F\u307E\u305B\u3093\u3002\u300C0\u4EF6\u300D\u3060\u3051\u3067\u306A\u304F\u300C\u9078\u629E\u80A2\u3060\u3051\u3092\u691C\u8A3C\u5BFE\u8C61\u306B\u3057\u30660\u4EF6\u300D\u3068\u691C\u8A3C\u7BC4\u56F2\u3092\u4F75\u8A18\u3059\u308B\u3053\u3068\u3067\u3001\u8AA4\u3063\u305F\u5B89\u5FC3\u3092\u907F\u3051\u3089\u308C\u307E\u3059\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306F `\u30A8\u30E9\u30FC {errorRecords} \u30EC\u30B3\u30FC\u30C9 / {errorCount} \u4EF6\uFF08\u8868\u793A {rowCount} \u884C\uFF09`\u3001CLI \u306E table\uFF0Fmarkdown \u306F\u672B\u5C3E\u30B5\u30DE\u30EA\u306B `errorRecords=\u2026 errorCount=\u2026` \u3092\u8868\u793A\u3057\u3001JSON\uFF0FMCP \u306F `validateStats` \u3092\u542B\u3081\u307E\u3059\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306E `INTO #err` \u306F\u30C6\u30FC\u30D6\u30EB\u306E\u4EE3\u308F\u308A\u306B `VALIDATE: \u30A8\u30E9\u30FC {errorRecords} \u30EC\u30B3\u30FC\u30C9 / {errorCount} \u4EF6\uFF08#err \u3078 {rowCount} \u884C\uFF09` \u3092\u6587\u4F4D\u7F6E\u3078\u8868\u793A\u3057\u307E\u3059\u3002`INTO #err` \u3092\u4F7F\u3046\u30D0\u30C3\u30C1\u3067\u3082\u7D71\u8A08\u306F VALIDATE \u6587\u81EA\u8EAB\u306E\u7D50\u679C\u3060\u3051\u306B\u4ED8\u304D\u3001\u5F8C\u7D9A\u306E\u6C4E\u7528 `SELECT` \u306B\u306F\u5F15\u304D\u7D99\u304E\u307E\u305B\u3093\n- `$err_code` \u5225\u306A\u3069\u306E\u5185\u8A33\u3092\u518D\u96C6\u8A08\u3059\u308B\u3068\u304D\u306F\u3001\u884C\u6570\u306E `COUNT(*)` \u3067\u306F\u306A\u304F\u9055\u53CD\u672C\u6570\u306E `SUM($err_count)` \u3092\u4F7F\u3044\u307E\u3059\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u540C\u4E00\u9055\u53CD\u306F1\u884C\u3078\u307E\u3068\u307E\u308A\u3001\u305D\u306E\u672C\u6570\u304C `$err_count` \u306B\u5165\u308B\u305F\u3081\u3067\u3059\u3002\u305F\u3068\u3048\u3070 KPI \u30AB\u30FC\u30C9\u306B `validateStats.errorCount`\u3001\u96A3\u306E\u68D2\u30B0\u30E9\u30D5\u306B `$err_code` \u5225\u306E `COUNT(*)` \u3092\u7F6E\u304F\u3068\u3001\u540C\u3058\u753B\u9762\u3067\u5408\u8A08\u304C\u98DF\u3044\u9055\u3063\u3066\u898B\u3048\u307E\u3059\u3002`VALIDATE APP100 INTO #err; SELECT $err_code, SUM($err_count) AS errorCount FROM #err GROUP BY $err_code;` \u306E\u3088\u3046\u306B\u96C6\u8A08\u3057\u3066\u304F\u3060\u3055\u3044\n- `INTO #err` \u306F\u8907\u6587\u30D0\u30C3\u30C1\u5C02\u7528\u3067\u3059\u3002\u8A73\u7D309\u5217\u3068 SUMMARY 5\u5217\u306F\u5225\u30B9\u30AD\u30FC\u30DE\u3067\u3001\u540C\u540D\u4E00\u6642\u8868\u3078\u306E\u6DF7\u5728\u8FFD\u8A18\u306F\u89E3\u6790\u6642\u306B\u62D2\u5426\u3057\u307E\u3059\u3002`tempTableMaxRows` \u306F\u3069\u3061\u3089\u3082\u96C6\u7D04\u5F8C\u884C\u6570\u3078\u9069\u7528\u3057\u3001\u8D85\u904E\u6642\u306F\u90E8\u5206\u7D50\u679C\u3092\u6B8B\u3055\u305A\u30A8\u30E9\u30FC\u306B\u3057\u307E\u3059\n- `WHERE` \u306F\u901A\u5E38\u6BD4\u8F03\u3001`BETWEEN`, \u30EA\u30C6\u30E9\u30EB `IN`, `IS NULL`, `LIKE` \u3092\u4F7F\u3048\u307E\u3059\u3002`KLIKE`, \u30B5\u30D6\u30AF\u30A8\u30EA, \u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u53C2\u7167\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002`CHECK` \u3082\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u53C2\u7167\u3060\u3051\u3067\u3059\u3002\u5B89\u5168\u306A\u6761\u4EF6\u3060\u3051\u3092\u53D6\u5F97\u6642\u306B\u62BC\u3057\u4E0B\u3052\u3001\u53D6\u5F97\u5F8C\u306B\u5143\u306E\u6761\u4EF6\u5168\u4F53\u3092\u518D\u8A55\u4FA1\u3057\u307E\u3059\n- \u5B8C\u5168\u306A\u76E3\u67FB\u96C6\u5408\u304C\u5FC5\u8981\u306A\u305F\u3081\u3001\u5168 surface \u3067 `onLimit=truncate` \u3092\u7121\u52B9\u5316\u3057\u3066 error \u306B\u3057\u307E\u3059\u3002\u53D6\u5F97\u306F\u901A\u5E38 records API \u306E offset + `$id` keyset paging \u3067\u3001Cursor API \u306F\u4F7F\u3044\u307E\u305B\u3093\n- `EXPLAIN VALIDATE` \u306F\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3068\u3001NUMBER \u5BFE\u8C61\u304C\u3042\u308B\u5834\u5408\u306E\u6570\u5024\u7CBE\u5EA6\u3060\u3051\u3092\u8AAD\u307F\u307E\u3059\u3002\u30EC\u30B3\u30FC\u30C9 API / mutation API \u306F\u547C\u3070\u305A\u3001\u9055\u53CD\u4EF6\u6570\u3082\u7B97\u51FA\u3057\u307E\u305B\u3093", uri: "ksql://language-reference/17-upsert" }, "18-delete": { heading: "18. DELETE", text: '## 18. DELETE\n\n```sql\nDELETE FROM APP100\nWHERE \u6761\u4EF6\n```\n\n```sql\nDELETE FROM APP100\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = \'\u30AD\u30E3\u30F3\u30BB\u30EB\'\n\nDELETE FROM APP100\nWHERE \u4F5C\u6210\u65E5\u6642 < \'2020-01-01\'\n```\n\n> **WHERE \u53E5\u306F\u5FC5\u9808\u3067\u3059\u3002** \u5168\u4EF6\u524A\u9664\u3092\u9632\u3050\u305F\u3081\u3001WHERE \u306A\u3057\u306E DELETE \u306F\u69CB\u6587\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002 \n> \u6CE8: CLI \u306B\u306F `--allow-without-where` \u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u73FE\u884C\u5B9F\u88C5\u3067\u306F UPDATE/DELETE \u306E\u6587\u6CD5\u4E0A WHERE \u304C\u5FC5\u9808\u3067\u3059\u3002\n\n> **\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0:** \u5B9F\u884C\u524D\u306B\u5BFE\u8C61\u4EF6\u6570\u3092\u8868\u793A\u3057\u3066\u78BA\u8A8D\u3092\u6C42\u3081\u307E\u3059\u3002 \n> \u30AD\u30E3\u30F3\u30BB\u30EB\u3059\u308B\u3068\u524A\u9664\u306F\u884C\u308F\u308C\u307E\u305B\u3093\u3002\n\n> **CLI \u62E1\u5F35\u306E\u5236\u7D04:** `DELETE` \u3067\u306E `APP@profile` \u6307\u5B9A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\u3002 \n> \u4F8B: `DELETE FROM APP100@guest WHERE ...` \u306F \n> `ArgumentError: @profile is not supported for DELETE yet.` \u3067\u7D42\u4E86\u3057\u307E\u3059\u3002\n\n---\n\n## 18.1 IMPORT\uFF08\u30D5\u30A1\u30A4\u30EB\u53D6\u8FBC\u30FBv3.6.0\uFF09\n\nCSV / JSON \u30D5\u30A1\u30A4\u30EB\u3092\u3001**\u5C04\u5F71\u30FB\u691C\u8A3C\u30FB\u4E0D\u826F\u884C\u9694\u96E2\u30FBcli-kintone \u4E92\u63DB**\u3092\u5099\u3048\u3066 kintone \u30A2\u30D7\u30EA\u3078\u4E00\u62EC\u767B\u9332\uFF0F\u66F4\u65B0\u3059\u308B\u81EA\u5DF1\u5B8C\u7D50\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u3067\u3059\u3002\u65E2\u5B9A\u3067\u306F\u7121\u52B9\uFF08capability gate off\uFF09\u3067\u3001**\u9762\u304C\u30BD\u30FC\u30B9\u3092\u540D\u524D\u3067\u4F9B\u7D66\u3057\u305F\u3068\u304D\u3060\u3051\u6709\u52B9**\u306B\u306A\u308A\u307E\u3059\u3002SQL \u672C\u6587\u306B\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u306F\u66F8\u304D\u307E\u305B\u3093\uFF08\u30A4\u30F3\u30B8\u30A7\u30AF\u30B7\u30E7\u30F3\u9632\u6B62\u30FB1 \u30BD\u30FC\u30B9\u6700\u5927 10 MiB\uFF09\u3002\n\n### \u69CB\u6587\n\n```\nIMPORT [UPDATE] INTO APP<n> ( <\u53D6\u8FBC\u5148> )\n FROM CSV|JSON <\u30BD\u30FC\u30B9\u540D>\n [ENCODING UTF8|SJIS] -- CSV \u306E\u307F\uFF08\u65E2\u5B9A UTF8\uFF09\n [NO HEADER [COLUMNS (col, ...)]] -- CSV \u306E\u307F\n [SELECT <\u5F0F>, ...] -- CSV \u306E\u307F\uFF08\u4F4D\u7F6E\u6307\u5B9A\u306E\u4EE3\u308F\u308A\u306B\u5C04\u5F71\uFF09\n [BY NAME [IGNORE UNKNOWN COLUMNS]] -- CSV \u306E\u307F\uFF08\u30D8\u30C3\u30C0\uFF1D\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\uFF09\n [MATCH RECORD NUMBER SOURCE <\u30D8\u30C3\u30C0>] -- IMPORT UPDATE \u5FC5\u9808\n [ON DUPLICATE (\u30AD\u30FC, ...)] -- UPSERT\n [REPLACE SUBTABLES (\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB, ...)] -- CSV \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u307F\n [CHECK WHEN ... THEN ...] -- \xA717.3\n [VALIDATE ONLY [INTO #err] | ON ERROR SKIP INTO #err [REJECT LIMIT n]] -- \xA717.1 / \xA717.2\n```\n\n`<\u53D6\u8FBC\u5148>` \u306F `\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9`\u3001\u307E\u305F\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB `\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30B3\u30FC\u30C9(\u5B501, \u5B502) [ROW ID SOURCE <\u30D8\u30C3\u30C0>]`\uFF08`ROW ID SOURCE` \u306F\u5B50\u5217\u30EA\u30B9\u30C8\u306E\u9589\u3058\u62EC\u5F27\u306E**\u5F8C**\uFF09\u3002\n\n### \u30BD\u30FC\u30B9\u306E\u4F9B\u7D66\uFF08\u9762\u3054\u3068\uFF09\n\n| \u9762 | \u4F9B\u7D66\u65B9\u6CD5 |\n|---|---|\n| CLI | `--import-csv <name>=<path>` / `--import-json <name>=<path>`\uFF08\u53CD\u5FA9\u53EF\u30FB\u6307\u5B9A\u3067 gate ON\uFF09 |\n| MCP | \u5F15\u6570 `importSources: [{ name, text \\| base64, encoding? }]`\uFF08inline\u30FB\u30D1\u30B9\u4E0D\u53EF\u30FB\u6307\u5B9A\u3067 gate ON\uFF09 |\n| \u30D7\u30E9\u30B0\u30A4\u30F3 | \u30D8\u30C3\u30C0\u30FC\u306E\u300C\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E\u300D\uFF08\u30BD\u30FC\u30B9\u540D\uFF1D\u62E1\u5F35\u5B50\u3092\u9664\u53BB\u3057\u3001\u8B58\u5225\u5B50\u306B\u4F7F\u3048\u306A\u3044\u6587\u5B57\u3092 `_` \u306B\u6B63\u898F\u5316\u3002`sales.csv` \u2192 `sales`\u3001`sales 2026.csv` \u2192 `sales_2026`\uFF09 |\n| `/flow` \u516C\u958B API | `enableImport: true` \u3068\u3001`createImportSourceResolver` \u307E\u305F\u306F `FlowImportSourceResolver` \u304C\u8FD4\u3059lazy loader\uFF08`Uint8Array`\u3001path\u4E0D\u53EF\uFF09 |\n\n`/flow` \u306E `enableImport` \u306F `parseScript` / `validateScript` / `explainScript` /\n`createExecutionContext` \u3067\u5171\u901A\u3067\u3059\u3002\u7701\u7565\u307E\u305F\u306F `false` \u306F `KSQL1202` \u306E\u65E2\u5B58fail-closed\u52D5\u4F5C\u3092\u7DAD\u6301\u3057\u3001\nresolver\u306E\u5B58\u5728\u3060\u3051\u3067\u306Fgate\u3092\u958B\u304D\u307E\u305B\u3093\u3002loader\u306Fparse\u30FBvalidate\u30FBEXPLAIN\u30FBcontext\u4F5C\u6210\u3067\u306F\u547C\u3070\u308C\u305A\u3001\n\u5BFE\u8C61IMPORT\u6587\u306E\u5B9F\u884C\u5230\u9054\u6642\u3060\u3051\u547C\u3070\u308C\u307E\u3059\u3002source\u540D\u306F\u5B8C\u5168\u4E00\u81F4\u30FBcase-sensitive\u3067\u3059\u3002\n\n`CreateExecutionContextOptions.onImportSourceMaterialized` \u3092\u6307\u5B9A\u3059\u308B\u3068\u3001source\u306Edecode\u3068raw\nmaterialize\u304C\u6210\u529F\u3057\u305F\u76F4\u5F8C\u3001projection\u30FBvalidation\u30FB`ON ERROR SKIP`\u9078\u5225\u30FB\u78BA\u8A8D\u30FBmutation\u3088\u308A\u524D\u306B\n\u6B21\u306E5 key\u3060\u3051\u3092\u6301\u3064receipt\u304C1\u56DEawait\u3055\u308C\u307E\u3059\u3002\n\n```ts\n{ statementIndex, name, kind, rows, encoding }\n```\n\n- `statementIndex` \u306F\u5BFE\u5FDC\u3059\u308B `StatementResult.index` \u3068\u540C\u30580\u59CB\u307E\u308A\u3067\u3059\u3002\u540C\u3058source\u3092\u8907\u6570\u6587\u3067\n \u4F7F\u3063\u305F\u5834\u5408\u3082\u6587\u3054\u3068\u306B\u901A\u77E5\u3057\u3001engine\u306Fdedupe\u3057\u307E\u305B\u3093\u3002\n- CSV\u306E `rows` \u306Fheader\u3092\u9664\u304FRFC 4180 data record\u6570\u3067\u3059\u3002quoted cell\u5185\u306E\u6539\u884C\u306F\u5897\u5206\u306B\u305B\u305A\u3001\n subtable CSV\u3067\u306F\u89AA\u884C\u3068\u7D99\u7D9A\u884C\u3092\u542B\u3080\u7269\u7406data record\u6570\u3067\u3059\u30021\u5217CSV\u306E\u7A7A\u884C\u306F\u7A7A\u5024record\u3068\u3057\u3066\n \u6570\u3048\u307E\u3059\u304C\u3001\u591A\u5217CSV\u306E\u7A7A\u884C\u306F\u5217\u6570\u4E0D\u4E00\u81F4error\u3068\u306A\u308A\u901A\u77E5\u3057\u307E\u305B\u3093\u3002\n- JSON\u306E `rows` \u306Ftop-level record\u6570\u3067\u3001subtable child\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n- CSV\u306E `encoding` \u306F `SQL ENCODING > loader metadata > "utf8"` \u306E\u89E3\u6C7A\u5F8C\u3001JSON\u306F `"utf8"` \u3067\u3059\u3002\n- source load\u3001payload\u691C\u67FB\u3001decode\u3001materializer\u5185\u691C\u67FB\u3001`maxRecords`\u8D85\u904E\u3067\u5931\u6557\u3057\u305F\u5834\u5408\u306F\u901A\u77E5\u3057\u307E\u305B\u3093\u3002\n callback\u306Ethrow/reject\u306F\u65E2\u5B58\u306Estatement error\u5909\u63DB\u3078\u305D\u306E\u307E\u307E\u6E21\u308A\u3001\u305D\u306E\u6587\u306Emutation API\u306F0\u56DE\u3067\u3059\u3002\n callback\u3092\u7701\u7565\u3057\u305F\u5834\u5408\u306E\u7D50\u679C\u3068API\u547C\u51FA\u3057\u56DE\u6570\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n\n### CSV \u306E\u53D6\u8FBC\n\n\u5217\u306E\u5BFE\u5FDC\u306F 3 \u901A\u308A:\n\n- **\u4F4D\u7F6E\u6307\u5B9A**\uFF08\u65E2\u5B9A\uFF09: CSV \u5217\u3092 `INTO (...)` \u306E\u9806\u3067\u5BFE\u5FDC\u3002\n- **\u5C04\u5F71 `SELECT`**: \u53D6\u8FBC\u524D\u306B\u5F0F\u5909\u63DB\uFF08`CAST` / \u95A2\u6570 / `||` / `@var`\uFF09\u3002`FROM` / `JOIN` / `WHERE` / `GROUP BY` / `ORDER BY` / `LIMIT` / \u30B5\u30D6\u30AF\u30A8\u30EA / \u4FEE\u98FE\u53C2\u7167\u306F\u4E0D\u53EF\uFF08\u7D14\u7C8B\u306A\u5F0F\u306E\u4E26\u3073\u306E\u307F\u30FB\u5217\u6570\u306F\u53D6\u8FBC\u5148\u3068\u4E00\u81F4\uFF09\u3002\n- **`BY NAME`**: \u30D8\u30C3\u30C0\u884C\u3092\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u3068\u3057\u3066\u5BFE\u5FDC\uFF08cli-kintone \u4E92\u63DB\uFF09\u3002\n\n```sql\n-- \u4F4D\u7F6E\u6307\u5B9A + UPSERT\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nFROM CSV sales\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9);\n\n-- \u5C04\u5F71\u3067\u6570\u5024\u5316\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nFROM CSV sales\nSELECT code, CAST(amount AS NUMBER) AS \u91D1\u984D;\n\n-- \u30D8\u30C3\u30C0\u7121\u3057\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nFROM CSV sales NO HEADER COLUMNS (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D);\n```\n\n- CSV \u306F RFC 4180 \u6E96\u62E0\u3002`ENCODING` \u3067 UTF-8 / Shift_JIS\u3001BOM \u8A31\u5BB9\u3002`/flow` \u306E\u6709\u52B9\u6587\u5B57\u30B3\u30FC\u30C9\u306F\n **SQL `ENCODING` > loader\u306E `encoding` > UTF-8** \u306E\u512A\u5148\u9806\u4F4D\u3067\u3059\u3002\n\n### JSON \u306E\u53D6\u8FBC\n\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D) FROM JSON payload;\n```\n\n- **\u53B3\u5BC6 10 \u9032\u30C7\u30B3\u30FC\u30C9**\uFF08\u5B57\u53E5\u3092\u4FDD\u6301\u3057\u3001\u5B89\u5168\u6574\u6570\u306E\u307F\u6570\u5024\u5316\u3002\u7CBE\u5EA6\u304C\u5FC5\u8981\u306A NUMBER \u306F JSON \u5074\u3067\u6587\u5B57\u5217\u3068\u3057\u3066\u6E21\u3059\uFF09\u3002\n- **\u5168\u968E\u5C64\u3067\u91CD\u8907\u30AD\u30FC\u3092\u62D2\u5426**\u3002`null` / \u6B20\u843D / \u5B58\u5728\u306E\u533A\u5225\u3042\u308A\u3002\n- JSON \u306F UTF-8 \u56FA\u5B9A\uFF08`ENCODING` \u4E0D\u53EF\uFF09\u3002\u5C04\u5F71\u30FB`BY NAME`\u30FB`NO HEADER` \u306F CSV \u5C02\u7528\u3002\n\n### cli-kintone \u4E92\u63DB\uFF08`BY NAME` \u30FB\u30EC\u30B3\u30FC\u30C9\u756A\u53F7 UPDATE\uFF09\n\n`cli-kintone record export` \u306E CSV \u3092\u305D\u306E\u307E\u307E\u623B\u305B\u307E\u3059\u3002\n\n- `BY NAME`: \u30D8\u30C3\u30C0\u3092\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u3068\u3057\u3066\u5BFE\u5FDC\u3002**\u66F8\u8FBC\u307F\u4E0D\u53EF\u306E\u65E2\u77E5\u5217**\uFF08`$id`\u30FB\u4F5C\u6210\u8005\u30FB\u66F4\u65B0\u65E5\u6642\u306A\u3069\uFF09\u306F\u76E3\u67FB\u30ED\u30B0\u3092\u6B8B\u3057\u3066\u7121\u8996\u3001**\u672A\u77E5\u5217**\u306F\u65E2\u5B9A\u3067\u62D2\u5426\uFF08`IGNORE UNKNOWN COLUMNS` \u3067\u7121\u8996\uFF09\u3002\u8907\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u30BB\u30EB\u5185\u6539\u884C\uFF08LF\uFF09\u3067\u5206\u5272\u3002\n- `IMPORT UPDATE \u2026 MATCH RECORD NUMBER SOURCE <\u30D8\u30C3\u30C0>`: \u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u3067\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3092**\u7D14 UPDATE**\uFF08INSERT 0\u30FB\u756A\u53F7\u306F\u7167\u5408\u5C02\u7528\u3067\u66F8\u304D\u63DB\u3048\u306A\u3044\uFF09\u3002`ON DUPLICATE` \u3068\u306F\u4F75\u7528\u4E0D\u53EF\u3002\n\n```sql\nIMPORT UPDATE INTO APP100 (\u91D1\u984D)\nFROM CSV exported BY NAME\nMATCH RECORD NUMBER SOURCE `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7`;\n```\n\n### \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u53D6\u8FBC\n\n\u610F\u5473\u8AD6\u306F\u30BD\u30FC\u30B9\u7A2E\u5225\u3067\u7570\u306A\u308A\u307E\u3059\u3002\n\n- **JSON\uFF08\u30CD\u30B9\u30C8\u914D\u5217\uFF09**: \u65B0\u898F INSERT / `ON DUPLICATE` UPSERT\u3002\u884C ID \u3092\u6301\u305F\u305A\u3001\u89AA\u5185\u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F**\u5168\u7F6E\u63DB**\uFF08\u518D\u63A1\u756A\uFF09\u3002`ROW ID SOURCE` \u306F\u4E0D\u53EF\u3002\n- **CSV `*` \u5F62\u5F0F**\uFF08cli-kintone export\uFF09: **`IMPORT UPDATE` \u5C02\u7528**\u3002`BY NAME` \uFF0B `MATCH RECORD NUMBER SOURCE` \uFF0B `REPLACE SUBTABLES (...)` \uFF0B \u5404\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E `ROW ID SOURCE <\u30D8\u30C3\u30C0>` \u304C\u5FC5\u9808\u3002\u884C ID \u3092\u4FDD\u6301\u3057\u3066\u66F4\u65B0\u3057\u3001\u30BD\u30FC\u30B9\u306B\u7121\u3044\u884C\u306F\u524A\u9664\u3002\n\n```sql\n-- JSON: \u660E\u7D30\u3092\u6301\u3064\u30EC\u30B3\u30FC\u30C9\u3092\u65B0\u898F\u767B\u9332\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u660E\u7D30(\u54C1\u540D, \u6570\u91CF)) FROM JSON payload;\n\n-- CSV *: \u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u306E\u660E\u7D30\u3092\u5168\u7F6E\u63DB\u66F4\u65B0\nIMPORT UPDATE INTO APP100 (\u660E\u7D30(\u54C1\u540D, \u6570\u91CF) ROW ID SOURCE `\u660E\u7D30_\u884CID`)\nFROM CSV exported BY NAME\nMATCH RECORD NUMBER SOURCE `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7`\nREPLACE SUBTABLES (\u660E\u7D30);\n```\n\n- **\u7834\u58CA\u7684\u5168\u7F6E\u63DB\uFF08JSON \u306E\u30CD\u30B9\u30C8\u914D\u5217\uFF0FCSV \u306E `REPLACE SUBTABLES`\uFF09\u306F\u3001\u524A\u9664\u5185\u8A33\u3092\u78BA\u8A8D\u8868\u793A\u3067\u304D\u308B\u9762\u3067\u306E\u307F\u5B9F\u884C**\uFF08fail-closed\uFF09\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\u306B\u5897\u6E1B\u30B5\u30DE\u30EA\u3092\u8868\u793A\u3057\u307E\u3059\u3002JSON UPSERT \u3082\u65E2\u5B58\u306E\u5B50\u884C\u3092\u524A\u9664\u3057\u3066\u5168\u7F6E\u63DB\u3057\u307E\u3059\uFF08`REPLACE SUBTABLES` \u306F\u66F8\u304B\u306A\u3044\u30FB\u66F8\u304F\u3068\u69CB\u6587\u30A8\u30E9\u30FC\uFF09\u3002\n- **MCP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB mutation \u3092\u5E38\u306B fail-closed**\uFF08\u524A\u9664\u5185\u8A33\u3092\u5BFE\u8A71\u627F\u8A8D\u3067\u304D\u306A\u3044\u305F\u3081\uFF09\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u66F8\u8FBC\u307F\u306F CLI / \u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u884C\u3044\u3001MCP \u306F `ksql_query` \u306E `VALIDATE ONLY`\uFF0F`ksql_explain` \u306E `EXPLAIN` \u307E\u3067\u3002\n\n### \u691C\u8A3C\u30FB\u30C1\u30A7\u30C3\u30AF\u30FB\u9694\u96E2\n\n`VALIDATE ONLY`\uFF08\xA717.1\uFF09\u30FB`ON ERROR SKIP INTO #err`\uFF08\xA717.2\uFF09\u30FB`CHECK`\uFF08\xA717.3\uFF09\u3092 DML \u3068\u540C\u3058\u610F\u5473\u8AD6\u3067\u5229\u7528\u3067\u304D\u307E\u3059\u3002\u306A\u304A \xA717.1 \u306F\u4E00\u822C DML \u3067\u306F\u300C\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DML \u975E\u5BFE\u5FDC\u300D\u3067\u3059\u304C\u3001**IMPORT \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F\u305D\u306E\u4F8B\u5916**\u3067 `VALIDATE ONLY` \u3092\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF08read-only \u306E\u305F\u3081\u5168\u9762\u3067\u53EF\uFF09\u3002\n\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D) FROM CSV sales BY NAME\nCHECK WHEN \u91D1\u984D < 0 THEN \'\u91D1\u984D\u304C\u8CA0\u3067\u3059\'\nON ERROR SKIP INTO #err REJECT LIMIT 100;\nSELECT * FROM #err;\n```\n\n**MCP \u306E\u632F\u308A\u5206\u3051**: \u30D5\u30E9\u30C3\u30C8\uFF08\u89AA\u306E\u307F\uFF09\u306E\u66F8\u8FBC\u307F IMPORT \u306F `ksql_mutate`\u3001`VALIDATE ONLY`\uFF08read-only\uFF09\u306F `ksql_query`\u3001`EXPLAIN` \u306F `ksql_explain`\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB mutation \u306F Unsupported\u3002\n\n### \u5236\u9650\n\n- **\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\uFF08FILE\uFF09\u306F\u975E\u5BFE\u5FDC**\uFF08cli-kintone \u3092\u4F7F\u3046\uFF09\u3002\n- source payload\u306F\u5B9Fbyte\u9577\u3067 **10 MiB\u4EE5\u4E0B**\u3002`/flow` engine\u306Fpath\u3001URL\u3001file handle\u3092\u53D7\u3051\u53D6\u3089\u305A\u3001\n path\u89E3\u6C7A\u3001`lstat` / `realpath`\u3001\u901A\u5E38\u30D5\u30A1\u30A4\u30EB\u30FBsymlink\u30FBallowlist\u30FBhash\u3001open/read\u306E\u691C\u67FB\u306F\u547C\u51FA\u5074\u304C\u884C\u3044\u307E\u3059\u3002\n- `/flow` source\u5883\u754C\u306E\u5B89\u5B9Acode\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059\u3002\u5B9F\u884C\u6642\u30A8\u30E9\u30FC\u306F\n `StatementResult { status: "error", error: { code, message } }` \u3067\u8FD4\u308A\u3001decode\u30FBschema/DML\u691C\u8A3C\u307E\u3067\n \u5168\u3066\u6210\u529F\u3059\u308B\u524D\u306Bmutation API\u3092\u547C\u3073\u307E\u305B\u3093\u3002\n\n | code | \u6761\u4EF6 |\n |---|---|\n | `ImportSourceDuplicateError` | named source\u306E\u5B8C\u5168\u4E00\u81F4\u91CD\u8907\uFF08resolver\u4F5C\u6210\u6642\u306B\u540C\u671Fthrow\uFF09 |\n | `ImportSourceNotSuppliedError` | resolver\u672A\u6307\u5B9A\u3001\u307E\u305F\u306Fsource\u540D\u672A\u767B\u9332 |\n | `ImportSourceReadError` | raw resolver\u95A2\u6570\u306Ethrow\u3001loader\u306Eread\u5931\u6557\u3001\u307E\u305F\u306F\u672A\u77E5\u306Ereject |\n | `ImportSourceNotRegularFileError` | \u547C\u51FA\u5074\u304C\u901A\u5E38\u30D5\u30A1\u30A4\u30EB\u4EE5\u5916\u3092\u62D2\u5426 |\n | `ImportSourceTooLargeError` | payload\u304C10 MiB\u8D85 |\n | `ImportSourceInvalidPayloadError` | handle\u306E`load`\u304C\u95A2\u6570\u3067\u306A\u3044\u3001bytes\u578B\u307E\u305F\u306Fencoding\u304C\u4E0D\u6B63 |\n- **\u53D6\u8FBC\u884C\u6570\u306E\u4E0A\u9650 `maxRecords` \u306F\u9762\u30FB\u7D4C\u8DEF\u3067\u7570\u306A\u308B**\uFF08\u8D85\u904E\u306F\u30B5\u30A4\u30EC\u30F3\u30C8\u5207\u308A\u6368\u3066\u305B\u305A fail-closed\uFF09:\n - CLI = \u65E2\u5B9A **500**\uFF08`--max-records` \u3067\u62E1\u5F35\uFF09\u3002\n - \u30D7\u30E9\u30B0\u30A4\u30F3 = \u521D\u671F\u5024 **3000**\uFF08UI \u3067\u5909\u66F4\u53EF\uFF09\u3002\n - MCP = \u901A\u5E38\u306E\u66F8\u8FBC\u307F mutation \u306F `dmlMaxRows`\uFF08\uFF0B1\uFF09\u3067\u89E3\u6C7A\u3001`ON ERROR SKIP` / `VALIDATE ONLY` \u306F\u901A\u5E38\u306E runtime `maxRecords` \u89E3\u6C7A\u306B\u623B\u308B\u3002\n - **CSV \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u7F6E\u63DB**\u3067\u306F\u3001\u540C\u3058 `maxRecords` \u304C\u53D6\u8FBC\u89AA\u4EF6\u6570\u3060\u3051\u3067\u306A\u304F**\u884C ID \u6240\u6709\u6A29\u691C\u67FB\u306E\u305F\u3081\u306E\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u5168\u4EF6\u8D70\u67FB**\u306B\u3082\u9069\u7528\u3055\u308C\u308B\u3002\u65E2\u5B9A\u3092\u8D85\u3048\u308B\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u304C\u3042\u308B\u3068\u3001\u53D6\u8FBC\u4EF6\u6570\u304C\u5C11\u306A\u304F\u3066\u3082 fail-closed \u306B\u306A\u308B\u3002\n- **CSV \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F UPDATE \u5C02\u7528**\u3002\u65B0\u898F\u767B\u9332\u306F JSON\u3002\n- \u6A19\u6E96\u30B9\u30DA\u30FC\u30B9\u30FB\u30B2\u30B9\u30C8\u30B9\u30DA\u30FC\u30B9\u306E\u4E21\u65B9\u3067\u52D5\u4F5C\u3002\n\n---\n\n## 18.2 CSV export\uFF08\u540D\u524D\u4ED8\u304D\u30B7\u30F3\u30AF\u30FBB179\uFF09\n\n\u7D50\u679C\u3092 CSV file \u3068\u3057\u3066\u66F8\u304D\u51FA\u3059\u4ED5\u7D44\u307F\u3067\u3059\u3002serializer \u306F engine \u5C64\u306B 1 \u5B9F\u88C5\u3067\u3001CLI \u3068 `/flow` \u304C\u540C\u3058\u65B9\u8A00\u3092\u4F7F\u3044\u307E\u3059\u3002\nengine \u306F path\u30FBURL\u30FBfile handle \u3092\u53D7\u3051\u53D6\u3089\u305A\u3001bytes \u3068 receipt \u3092\u8FD4\u3059\u3060\u3051\u3067\u3059\uFF08file \u66F8\u8FBC\u307F\u30FBsha256 \u306F\u547C\u51FA\u5074\uFF09\u3002\n\n| \u9762 | \u4F7F\u3044\u65B9 |\n|---|---|\n| CLI | `--export-csv <name>=<path>`\uFF08\u53CD\u5FA9\u53EF\u30FBtemp table `#<name>` \u3092\u66F8\u304D\u51FA\u3059\uFF09\uFF0F`--export-csv <path>`\uFF08\u5358\u6587 SELECT \u306E\u307F\u30FBpath \u306B `=` \u306F\u4F7F\u3048\u306A\u3044\uFF09\uFF0F`--export-encoding utf8\\|sjis`\uFF0F`--export-timezone <IANA zone>` |\n| `/flow` | `createExecutionContext({ exportSinks: [{ name }] })` \u2192 \u5168\u6587\u5B9F\u884C\u5F8C `exportSinkStatus(context, name)` \u2192 `materialized` \u306A\u3089 `serializeExportSink(context, name, options)`\u3002\u5358\u6587 SELECT \u306F `serializeSelectResultAsCsv(statementResult, options)`\u3001\u4EFB\u610F\u5165\u529B\u306F `serializeCsvExport({ columns, rows, columnMeta }, options)` |\n| MCP\u30FB\u30D7\u30E9\u30B0\u30A4\u30F3 | \u5BFE\u8C61\u5916 |\n\n**\u540D\u524D\u4ED8\u304D\u30B7\u30F3\u30AF**: sink \u540D\u306F temp table `#<name>` \u306B\u5B8C\u5168\u4E00\u81F4\uFF08case-sensitive\uFF09\u3067\u5BFE\u5FDC\u3057\u3001\u540C\u3058 script \u306B `CREATE TEMP TABLE #<name>` \u304C\n**\u3061\u3087\u3046\u3069 1 \u6587**\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002\u5BA3\u8A00\u91CD\u8907\u30FBCREATE \u4E0D\u5B58\u5728\uFF0F\u91CD\u8907\u30FB\u6700\u7D42\u72B6\u614B\u3067 DROP \u6E08\u307F\u30FBDML \u306E `INTO #name` \u306F\u3001\n`/flow` \u3067\u306F context \u4F5C\u6210\u6642\u306B\u3001CLI \u3067\u306F\u5B9F\u884C\u524D\u306B\u62D2\u5426\u3057\u307E\u3059\uFF08kintone API 0 \u56DE\uFF09\u3002\u300C\u6700\u5F8C\u306E SELECT\u300D\u3092\u6697\u9ED9\u306B\u9078\u3076\u3053\u3068\u306F\u3057\u307E\u305B\u3093\u3002\n\n**serialize \u306E\u6642\u70B9**: SQL \u5168\u6587\u304C\u6210\u529F\u3057\u305F\u5F8C\u3060\u3051\u3067\u3059\u3002`/flow` \u306E `exportSinkStatus` \u306F `materialized`\uFF08\u4F5C\u6210\u6E08\u307F\uFF09\uFF0F\n`not-created`\uFF08EXIT \u306B\u3088\u308A CREATE \u306B\u5230\u9054\u3057\u306A\u304B\u3063\u305F\uFF1Derror \u3067\u306F\u306A\u304F\u300C\u5BFE\u8C61\u306A\u3057\u300D\uFF09\uFF0F`failed`\uFF08error\u30FBtimeout\u30FBassertion\u30FB\u4F9D\u5B58\u5931\u6557\uFF09\uFF0F\n`incomplete`\uFF08\u672A\u51E6\u7406\u306E\u6587\u304C\u6B8B\u308B\uFF09\u3092\u8FD4\u3057\u307E\u3059\u3002CLI \u306F batch \u304C\u5931\u6557\u3059\u308B\u3068 file \u3092\u4F5C\u3089\u305A\u3001\u65E2\u5B58 file \u3082\u5909\u3048\u307E\u305B\u3093\u3002\n\n**CSV \u306E\u5F62**: RFC 4180\uFF08`"` `,` CR LF \u3092\u542B\u3080 cell \u3092 `"` \u3067\u56F2\u307F `"` \u306F `""`\uFF09\u30FBrecord \u533A\u5207\u308A CRLF\u30FB\u672B\u5C3E CRLF\u30FBheader \u884C\u3042\u308A\u30FBBOM \u306A\u3057\u3002\nheader \u306F result \u5217\u540D\u305D\u306E\u3082\u306E\uFF08\u76F4\u63A5 field \u53C2\u7167\u306F\u6B63\u5F0F field code\u3002\u660E\u793A alias \u306F\u65E2\u5B58\u3069\u304A\u308A\u5C0F\u6587\u5B57\u5316\uFF09\u3002\u5358\u6587 SELECT \u3067\u540C\u540D\u5217\u304C\u91CD\u8907\u3059\u308B\u3068\n`ExportSinkDuplicateHeaderError`\uFF08temp table \u306F\u5B9A\u7FA9\u6642\u306B\u91CD\u8907\u5217\u304C 1 \u5217\u3078\u7573\u307E\u308C\u308B\u306E\u3067\u6CE8\u610F\uFF09\u3002\n\n**\u5024\u306E\u8868\u73FE\uFF08cli-kintone \u4E92\u63DB\uFF09**:\n\n| \u5217\u306E\u578B | cell |\n|---|---|\n| \u6587\u5B57\u5217\u30FBNUMBER\u30FBDATE\u30FBTIME | \u751F\u5024\u305D\u306E\u307E\u307E |\n| CHECK_BOX / MULTI_SELECT / CATEGORY | \u8981\u7D20\u3092 LF \u3067\u9023\u7D50\uFF08\u7A7A\u914D\u5217\u306F\u7A7A cell\uFF09 |\n| USER_SELECT / ORGANIZATION_SELECT / GROUP_SELECT / STATUS_ASSIGNEE | `code` \u3092 LF \u3067\u9023\u7D50\uFF08name \u306F\u51FA\u529B\u3057\u306A\u3044\uFF09 |\n| \u8A08\u7B97\u5217\u306E\u6307\u6570\u8868\u8A18\uFF08`1.25e+22` \u7B49\uFF09 | \u4E38\u3081\u306A\u3057\u3067 10 \u9032\u5C55\u958B\uFF08`12500000000000000000000`\u30021,024 \u6587\u5B57\u8D85\u306F error\uFF09 |\n| DATETIME | \u65E2\u5B9A\u306F kintone \u4FDD\u6301\u5F62\u5F0F\uFF08UTC ISO\uFF09\u306E\u307E\u307E\u3002`timezone` \u6307\u5B9A\u6642\u3060\u3051 offset \u4ED8\u304D ISO\uFF08\u30DF\u30EA\u79D2\u306F\u4FDD\u6301\uFF09 |\n| \u7A7A\u30FBNULL\u30FB\u6B20\u843D | \u7A7A\u6587\u5B57\uFF08round-trip \u3067\u533A\u5225\u4E0D\u80FD\uFF09 |\n| SUBTABLE / FILE | `ExportSinkUnsupportedColumnError`\uFF08\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F `APP$\u660E\u7D30` \u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3092 SELECT \u3059\u308B\u3002\u6DFB\u4ED8\u306F\u5BFE\u8C61\u5916\uFF09 |\n| \u578B\u4E0D\u660E\u306E\u5F0F\u5217 | JSON \u306B\u898B\u3048\u3066\u3082\u89E3\u91C8\u305B\u305A\u751F\u6587\u5B57\u5217 |\n\n**\u6587\u5B57\u30B3\u30FC\u30C9**: \u65E2\u5B9A UTF-8\uFF08BOM \u306A\u3057\uFF09\u3002Shift_JIS \u306F `/flow` \u3067\u306F `encoder: { encoding: "sjis", encode(text): Uint8Array }` \u3092\u6CE8\u5165\u3057\u3001\nencoder \u306F\u8868\u73FE\u4E0D\u80FD\u6587\u5B57\u3067 **throw \u3059\u308B\u7FA9\u52D9**\u3092\u8CA0\u3044\u307E\u3059\uFF08encoding-japanese / iconv-lite \u306F\u9ED9\u3063\u3066 `?` \u7F6E\u63DB\u3059\u308B\u305F\u3081\u3001encode \u2192 decode \u2192\n\u5B8C\u5168\u4E00\u81F4\u306E\u691C\u67FB\u3092 wrapper \u3067\u884C\u3046\uFF09\u3002CLI \u306F encoding-japanese \u3092 bundle \u3057\u540C\u3058\u691C\u67FB\u3067 fail-closed\uFF08\u6CE2\u30C0\u30C3\u30B7\u30E5 U+301C\u30FB\u5186\u8A18\u53F7 U+00A5\u30FB\n\u30DE\u30A4\u30CA\u30B9 U+2212 \u306A\u3069\u306F Shift_JIS \u306B\u5199\u305B\u305A error\u3002message \u306B\u884C\u756A\u53F7\u30FB\u5217\u540D\u30FBcode point \u3092\u542B\u3081\u3001cell \u5168\u6587\u306F\u542B\u3081\u306A\u3044\uFF09\u3002\n\n**CLI \u306E\u66F8\u8FBC\u307F**: \u5168 sink \u3092\u30E1\u30E2\u30EA\u4E0A\u3067 serialize \u3057\u3066\u304B\u3089\u3001target \u3068\u540C\u4E00 directory \u306E\u4E00\u6642 file \u3078\u5168\u91CF write \u2192 fsync \u2192 close \u2192 rename\u3002\n\u5931\u6557\u6642\u306F\u65E7 file \u3092\u7DAD\u6301\u3057\u4E00\u6642 file \u3092\u524A\u9664\u3057\u307E\u3059\uFF08Windows \u3067\u65E2\u5B58 file \u3092\u4ED6\u30D7\u30ED\u30BB\u30B9\u304C\u958B\u3044\u3066\u3044\u308B\u3068 `EPERM` \u3067\u5931\u6557\uFF1D\u65E7 file \u306E\u307E\u307E\uFF09\u3002\n\u8907\u6570 sink \u306E rename \u9014\u4E2D\u3067 process \u304C\u843D\u3061\u305F\u5834\u5408\u3060\u3051\u3001\u66F4\u65B0\u6E08\u307F\u3068\u672A\u66F4\u65B0\u306E file \u304C\u6DF7\u5728\u3057\u5F97\u307E\u3059\u3002\n\n**\u5B89\u5B9A code**: `ExportSinkInvalidNameError` / `ExportSinkDuplicateError` / `ExportSinkNotFoundError` / `ExportSinkInvalidTargetError` /\n`ExportSinkNotMaterializedError` / `ExportSinkExecutionIncompleteError` / `ExportSinkExecutionFailedError` / `ExportSinkDuplicateHeaderError` /\n`ExportSinkUnsupportedColumnError` / `ExportSinkInvalidValueError` / `ExportSinkInvalidTimezoneError` / `ExportSinkEncoderRequiredError` /\n`ExportSinkEncodingError` / `ExportSinkInvalidEncoderResultError`\uFF08CLI \u306E file \u5931\u6557\u306F `ExportSinkWriteError`\uFF09\u3002', uri: "ksql://language-reference/18-delete" }, "19-subtable-virtual-table": { heading: "19. \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB", text: "## 19. \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\n\n\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F `APP100$\u660E\u7D30` \u5F62\u5F0F\u306E\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3068\u3057\u3066\u64CD\u4F5C\u3067\u304D\u307E\u3059\u3002\n\n> **\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E `SELECT` \u306F\u3001\u89AA\u30EC\u30B3\u30FC\u30C9\u3092\u53D6\u5F97\u3057\u3066\u304B\u3089\u884C\u3078\u5C55\u958B\u3057\u307E\u3059**\uFF08\u5B9F\u6E2C\u30FBv3.55.0\uFF09\u3002\n> **\u53D6\u5F97\u91CF\u306F `WHERE` \u306E\u5185\u5BB9\u3067\u6C7A\u307E\u308A\u307E\u3059\u3002**\n>\n> ```\n> SELECT COUNT(*) FROM APP100 \u2192 fetch: COUNT_ONLY \uFF081 \u30EA\u30AF\u30A8\u30B9\u30C8\uFF09\n> SELECT COUNT(*) FROM APP100$\u660E\u7D30 \u2192 fetch: ALL \uFF08\u89AA\u3092\u5168\u4EF6\u53D6\u5F97\uFF09\n> SELECT * FROM APP100$\u660E\u7D30 WHERE _pid = 1 \u2192 fetch: ALL \uFF08\u5F8C\u8FF0\uFF09\n> SELECT * FROM APP100$\u660E\u7D30 WHERE _p.$id in (1, 2) \u2192 fetch: EXACT \uFF08\u89AA 2 \u4EF6\u3060\u3051\u53D6\u5F97\uFF09\n> ```\n>\n> **\u89AA\u9805\u76EE\u3060\u3051\u3067\u66F8\u3044\u305F `WHERE`\uFF08`_p.` \u4FEE\u98FE\uFF09\u306F kintone \u3078\u62BC\u3057\u4E0B\u3052\u307E\u3059**\uFF08v3.55.0\uFF09\u3002\n> **\u62BC\u3057\u4E0B\u304C\u3089\u306A\u3044\u306E\u306F\u6B21\u306E 3 \u3064**\u3067\u3001\u3044\u305A\u308C\u3082\u89AA\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\u3002\n>\n> - **\u660E\u7D30\u9805\u76EE\u306E\u6761\u4EF6**\uFF08`\u6570\u91CF > 10` \u306A\u3069\uFF09\u2014\u2014\u884C\u5358\u4F4D\u306E\u6761\u4EF6\u3067\u3001\u89AA\u3092\u7D5E\u308B\u6839\u62E0\u306B\u3067\u304D\u307E\u305B\u3093\n> - **\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5074\u306E\u30B7\u30B9\u30C6\u30E0\u5217**\uFF08`_pid` / `_rid` / `_idx`\uFF09\n> - **\u89AA\u9805\u76EE\u3068\u660E\u7D30\u9805\u76EE\u306E\u6DF7\u5728**\uFF08`WHERE` \u5168\u4F53\u3092\u5909\u63DB\u3067\u304D\u306A\u3044\u305F\u3081\uFF09\n>\n> **`COUNT(*)` \u3060\u3051\u3067\u3082\u89AA\u306E\u53D6\u5F97\u304C\u8981\u308A\u307E\u3059\u3002** kintone \u306E `totalCount` \u306F**\u89AA\u30EC\u30B3\u30FC\u30C9\u306E\u4EF6\u6570**\u3067\u3001\n> **\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u884C\u3092\u6570\u3048\u308B\u624B\u6BB5\u304C API \u306B\u3042\u308A\u307E\u305B\u3093**\u3002\u884C\u306F\u30EC\u30B3\u30FC\u30C9\u3092\u53D6\u5F97\u3057\u3066\u304B\u3089\u5C55\u958B\u3057\u307E\u3059\u3002\n>\n> **\u5927\u304D\u306A\u30A2\u30D7\u30EA\u3067\u306F `maxRecords` \u306B\u9054\u3057\u3066\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002**\n> **`_p.` \u3067\u89AA\u3092\u7D5E\u308C\u308B\u6761\u4EF6\u304C\u3042\u308B\u306A\u3089\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002** \u7121\u3044\u5834\u5408\u306F\u3001\u89AA\u30A2\u30D7\u30EA\u5074\u306E `SELECT` \u3067\n> \u5BFE\u8C61\u3092\u7D5E\u3063\u3066\u304B\u3089\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u3092\u6271\u3046\u5F62\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\u306A\u3069\uFF09\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n> **\u660E\u7D30\u9805\u76EE\u3092\u89AA\u30A2\u30D7\u30EA\u304B\u3089\u53C2\u7167\u3057\u305F\u3068\u304D\u306E\u6319\u52D5**\uFF08\u5B9F\u6E2C\u30FBv3.56.1\uFF09\u3002\n> **`DESCRIBE` \u306E `\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB` \u5217\u304C\u7A7A\u3067\u306A\u3044\u9805\u76EE**\u3092\u3001\u89AA\u30A2\u30D7\u30EA\u306E `SELECT` \u306B\u66F8\u3044\u305F\u5834\u5408\u3067\u3059\u3002\n>\n> **\u539F\u7406\u306F 1 \u3064\u3067\u3059\u2014\u2014\u5024\u3068\u3057\u3066\u51FA\u3059\u4F4D\u7F6E\u306A\u3089\u300C\u7A7A + \u8B66\u544A\u300D\u3001\u30AD\u30FC\u3068\u3057\u3066\u4F7F\u3046\u4F4D\u7F6E\u306A\u3089\u300C\u30A8\u30E9\u30FC\u300D\u3002**\n>\n> | \u66F8\u3044\u305F\u5834\u6240 | \u7D50\u679C |\n> |---|---|\n> | \u5C04\u5F71\uFF08`SELECT \u6570\u91CF`\uFF09 | **\u7A7A** + \u8B66\u544A |\n> | \u96C6\u8A08\uFF08`MAX(\u6570\u91CF)`\uFF09 | **\u7A7A** + \u8B66\u544A |\n> | `ORDER BY` | \u4E26\u3073\u306B\u5F71\u97FF\u305B\u305A + \u8B66\u544A |\n> | `HAVING`\uFF08`MAX(\u6570\u91CF) > 0`\uFF09 | \u7A7A\u3068\u3057\u3066\u8A55\u4FA1\u3055\u308C\u3001**\u9ED9\u3063\u3066 0 \u884C**\u306B\u306A\u308B + \u8B66\u544A |\n> | `GROUP BY` | **\u30A8\u30E9\u30FC**\uFF08\u3069\u306E\u8868\u304B\u3089\u96C6\u8A08\u3059\u308B\u304B\u6848\u5185\u3057\u307E\u3059\uFF09 |\n> | `ROLLUP` / `CUBE` / `GROUPING SETS` / `GROUPING()` | **\u30A8\u30E9\u30FC**\uFF08\u540C\u4E0A\uFF09 |\n> | `WHERE` | **kintone \u306E API \u30A8\u30E9\u30FC**\uFF08`GAIA_IQ07`\u3002kSQL \u306E\u6848\u5185\u306F\u51FA\u307E\u305B\u3093\uFF09 |\n>\n> **`GROUP BY` \u7CFB\u3060\u3051\u304C\u30A8\u30E9\u30FC\u306A\u306E\u306F\u3001\u305D\u306E\u9805\u76EE\u3092\u300C\u884C\u306E\u540C\u4E00\u6027\u300D\u306B\u4F7F\u3046\u305F\u3081**\u3067\u3059\u3002\u5024\u306F\u5E38\u306B\u7A7A\u306A\u306E\u3067\u3001\n> **\u5168\u30EC\u30B3\u30FC\u30C9\u304C 1 \u30B0\u30EB\u30FC\u30D7\u3078\u7573\u307E\u308C\u3001\u7D50\u679C\u305D\u306E\u3082\u306E\u304C\u7121\u610F\u5473**\u306B\u306A\u308A\u307E\u3059\u3002\n> \u5024\u3068\u3057\u3066\u51FA\u3059\u3060\u3051\u306E\u4F4D\u7F6E\u306F\u3001**\u7A7A\u3092\u51FA\u305B\u3070\u51E6\u7406\u304C\u6210\u7ACB\u3059\u308B**\u306E\u3067\u8B66\u544A\u306B\u3068\u3069\u3081\u3066\u3044\u307E\u3059\n> \uFF08\u30A8\u30E9\u30FC\u306B\u3059\u308B\u3068\u65E2\u5B58\u306E SQL \u304C\u58CA\u308C\u308B\u305F\u3081\uFF09\u3002\n>\n> **\u3068\u304F\u306B `HAVING` \u306F\u898B\u5206\u3051\u304C\u4ED8\u304D\u307E\u305B\u3093\u3002** `GROUP BY` \u7CFB\u306F\u6B62\u307E\u308A\u3001\u5C04\u5F71\u306F\u7A7A\u306E\u5217\u304C\u898B\u3048\u307E\u3059\u304C\u3001\n> **`HAVING` \u306F\u300C\u884C\u304C\u7121\u3044\u300D\u3060\u3051**\u3067\u3001**\u5206\u6790\u3068\u3057\u3066\u306F\u6B63\u5F53\u306A\u300C\u8A72\u5F53\u306A\u3057\u300D\u3068\u533A\u5225\u304C\u4ED8\u304D\u307E\u305B\u3093**\u3002\n> 0 \u884C\u304C\u8FD4\u3063\u305F\u3068\u304D\u306F\u3001**\u8B66\u544A\u304C\u51FA\u3066\u3044\u306A\u3044\u304B\u3092\u5FC5\u305A\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044**\u3002\n>\n> **`WHERE` \u3060\u3051\u306F kSQL \u304C\u5224\u5B9A\u305B\u305A\u3001kintone \u5074\u306E\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002**\n> \u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u300C\u30C6\u30FC\u30D6\u30EB\u306B\u8A2D\u5B9A\u3057\u3066\u3044\u308B\u5834\u5408\u3001\u2026\u6F14\u7B97\u5B50\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u300D\u3067\u3001\n> **\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u9805\u76EE\u3060\u3068\u306F\u8AAD\u3081\u307E\u3059\u304C\u3001\u3069\u3046\u76F4\u3059\u304B\u306F\u793A\u3055\u308C\u307E\u305B\u3093**\u3002\n> `APPn$<\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB>` \u304B\u3089\u66F8\u304D\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### \u30B7\u30B9\u30C6\u30E0\u5217\n\n| \u5217\u540D | \u610F\u5473 | \u6BD4\u8F03\u578B |\n|------|------|------|\n| `_pid` | \u89AA\u30EC\u30B3\u30FC\u30C9 ID\uFF08`$id`\uFF09 | \u6570\u5024 |\n| `_rid` | \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u884C ID | \u6587\u5B57\u5217 |\n| `_idx` | \u89AA\u30EC\u30B3\u30FC\u30C9\u5185\u306E\u884C\u9806\uFF080-based\uFF09 | \u6570\u5024 |\n\n- \u30B7\u30B9\u30C6\u30E0\u5217\u306F SELECT \u306E `WHERE` / `ORDER BY` \u3067\u53C2\u7167\u3067\u304D\u3001\u5168\u6BD4\u8F03\u6F14\u7B97\u5B50\u30FB`BETWEEN` / `IN` / `IS NULL` / `LIKE` \u306B\u5BFE\u5FDC\u3057\u307E\u3059\uFF08\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB SELECT \u306F\u5E38\u306B\u30ED\u30FC\u30AB\u30EB\u5168\u4EF6\u8A55\u4FA1\u306E\u305F\u3081 kintone \u3078\u306F\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\uFF09\u3002\n- \u6BD4\u8F03\u578B\u306F\u4E0A\u8868\u306E\u3068\u304A\u308A\u3067\u3001`_pid` / `_idx` \u306F\u6570\u5024\u3001`_rid` \u306F\u4E0D\u900F\u660E\u306A\u6587\u5B57\u5217\u3068\u3057\u3066\u6BD4\u8F03\u3057\u307E\u3059\uFF08\u4F8B: `_idx > 2` \u306F\u6570\u5024\u9806\u3001`_rid` \u306F\u8F9E\u66F8\u9806\uFF09\u3002\n- \u672A\u4FDD\u5B58\u884C\u3067\u306F `_rid` \u304C\u7A7A\u306E\u305F\u3081 `_rid IS NULL` \u304C\u771F\u306B\u306A\u308A\u307E\u3059\u3002\n- \u89AA\u9805\u76EE\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u7D4C\u7531\u306E `_p._pid` \u7B49\uFF08\u30B7\u30B9\u30C6\u30E0\u5217\u3092 `_p.` \u4FEE\u98FE\u3057\u305F\u5F62\uFF09\u306F\u7121\u52B9\u3067\u3059\u3002\n\n### \u89AA\u9805\u76EE\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\n\n- `_p.\u9805\u76EE\u540D` \u3067\u89AA\u9805\u76EE\u3092\u53C2\u7167\u53EF\u80FD\n- `_p.*` \u3067\u89AA\u9805\u76EE\u3092\u4E00\u62EC\u5C55\u958B\n- `SELECT *` \u306B\u306F `_p.*` \u3092\u6697\u9ED9\u8FFD\u52A0\u3057\u306A\u3044\n\n```sql\nSELECT _p.\u4F1D\u7968\u756A\u53F7, \u5546\u54C1\u30B3\u30FC\u30C9, \u6570\u91CF\nFROM APP100$\u660E\u7D30\nWHERE _pid = 123\n```\n\n### \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DML\n\n```sql\nINSERT INTO APP100$\u660E\u7D30 (_pid, \u5546\u54C1\u30B3\u30FC\u30C9, \u6570\u91CF) VALUES (123, 'A-001', 2)\n\nUPDATE APP100$\u660E\u7D30\nSET \u6570\u91CF = 5\nWHERE _pid = 123 AND _rid = '67890'\n\nDELETE FROM APP100$\u660E\u7D30\nWHERE _pid = 123 AND _rid = '67890'\n```\n\n- `UPDATE` / `DELETE` \u306F\u5B89\u5168\u306E\u305F\u3081 `_rid` \u6761\u4EF6\u3092\u5FC5\u9808\u3068\u3059\u308B\n\n---\n\n## 19.1 APPLY \u30D6\u30ED\u30C3\u30AF\uFF08\u30C6\u30FC\u30D6\u30EB\u5916\u30FB\u5185\u306E\u540C\u6642\u66F4\u65B0\uFF09\n\n`UPDATE` / `INSERT` / `UPSERT` \u306B `APPLY` \u30D6\u30ED\u30C3\u30AF\u3092\u4ED8\u3051\u308B\u3068\u3001**\u89AA\uFF08\u30C6\u30FC\u30D6\u30EB\u5916\uFF09\u9805\u76EE\u3068\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\uFF08\u30C6\u30FC\u30D6\u30EB\u5185\uFF09\u884C\u30921\u6587\uFF1D1 PUT \u30EC\u30B3\u30FC\u30C9\u3067\u540C\u6642\u306B\u66F4\u65B0**\u3067\u304D\u307E\u3059\u3002kintone \u306F\u66F8\u304D\u8FBC\u307F\u6642\u306B\u30EC\u30B3\u30FC\u30C9\u5168\u4F53\u3092\u518D\u691C\u8A3C\u3059\u308B\u305F\u3081\u3001\u30C6\u30FC\u30D6\u30EB\u5185\u306B\u65E2\u5B58\u9055\u53CD\u304C\u3042\u308B\u3068\u30C6\u30FC\u30D6\u30EB\u5916\u9805\u76EE\u3060\u3051\u306E `UPDATE` \u3082\u5931\u6557\u3057\u307E\u3059\u304C\u3001`APPLY` \u3067\u9055\u53CD\u30BB\u30EB\u3078\u59A5\u5F53\u306A\u5024\u3092\u540C\u6642\u306B\u30BB\u30C3\u30C8\u3057\u3066\u30EC\u30B3\u30FC\u30C9\u5168\u4F53\u3092 valid \u5316\u3059\u308B\u300C\u4FEE\u5FA9\u66F8\u304D\u8FBC\u307F\u300D\u304C\u53EF\u80FD\u306B\u306A\u308A\u307E\u3059\u3002\n\n```sql\nUPDATE APP100\nSET \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u78BA\u5B9A'\nWHERE $id = 5\nAPPLY \u660E\u7D30 (\n PATCH SET \u6570\u91CF = 0 WHERE \u6570\u91CF < 0; -- \u65E2\u5B58\u884C\u306E\u30BB\u30EB\u66F4\u65B0\n APPEND (\u5546\u54C1\u30B3\u30FC\u30C9, \u6570\u91CF) VALUES ('A-001', 1); -- \u884C\u8FFD\u52A0\n REMOVE WHERE \u5EC3\u756A = 'true' -- \u884C\u524A\u9664\n)\n```\n\n### \u64CD\u4F5C\n\n| \u64CD\u4F5C | \u610F\u5473 |\n|------|------|\n| `PATCH SET \u2026 {WHERE \u884C\u6761\u4EF6 \\| ALL ROWS \\| _idx = n \\| _rid = 'id'}` | \u65E2\u5B58\u884C\u306E\u30BB\u30EB\u66F4\u65B0\uFF08\u884C id\u30FB\u884C\u9806\u30FB\u672A\u6307\u5B9A\u30BB\u30EB\u3092\u4FDD\u6301\uFF09 |\n| `APPEND (\u5B50\u2026) VALUES (\u2026)` | \u884C\u8FFD\u52A0\uFF08\u672A\u6307\u5B9A\u306E\u5B50\u306F\u65E2\u5B9A\u5024\u3067\u660E\u793A\u88DC\u5B8C\uFF09 |\n| `REMOVE {WHERE \u884C\u6761\u4EF6 \\| _idx = n \\| _rid = 'id'}` | \u884C\u524A\u9664\uFF08\u5B58\u7D9A\u884C\u306F\u5168\u5217\u3092\u4FDD\u6301\uFF09 |\n\n- **\u591A\u5024\u30D5\u30A3\u30FC\u30EB\u30C9**\uFF08`CHECK_BOX` / `MULTI_SELECT` / `USER_SELECT` \u7B49\uFF09: `APPLY <\u591A\u5024> (ADD '\u5024'; REMOVE '\u5024')`\u3002\n- 1\u6587\u306B\u8907\u6570\u30C6\u30FC\u30D6\u30EB\uFF0F\u591A\u5024\u306E `APPLY` \u30D6\u30ED\u30C3\u30AF\u3092\u4F75\u8A18\u3067\u304D\u307E\u3059\u3002\n\n### \u884C\u30A2\u30C9\u30EC\u30C3\u30B7\u30F3\u30B0\u30FB\u884C\u6570\u8868\u660E\n\n- \u884C\u30BB\u30EC\u30AF\u30BF: `ALL ROWS`\uFF08**\u660E\u793A\u5FC5\u9808**\uFF09\u30FB`WHERE \u884C\u6761\u4EF6`\u30FB`_idx`\uFF080-based\uFF09\u30FB`_rid`\uFF08\u884C ID\uFF09\u3002\n- `EXPECT ROWS n | BETWEEN a AND b | AT LEAST n | AT MOST n` \u3067\u5BFE\u8C61\u884C\u6570\u3092\u8868\u660E\u3067\u304D\u3001\u4E0D\u4E00\u81F4\u306F\u66F8\u304D\u8FBC\u307F\u524D\u306B `ArgumentError`\u3002\n\n### \u610F\u5473\u8AD6\u30FB\u5B89\u5168\u30EB\u30FC\u30EB\n\n- **\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u610F\u5473\u8AD6**: \u30BB\u30EC\u30AF\u30BF\u3068\u53F3\u8FBA\u306F\u66F4\u65B0\u524D\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3067\u8A55\u4FA1\u3057\u3001\u540C\u4E00\u6587\u5185\u306E `APPEND` \u884C\u306F\u540C\u6587\u306E `PATCH`/`REMOVE` \u304B\u3089\u898B\u3048\u307E\u305B\u3093\u3002\n- **post-image \u691C\u8A3C**: \u5909\u7570\u5F8C\u306E\u30EC\u30B3\u30FC\u30C9\u5168\u4F53\u3092\u66F8\u304D\u8FBC\u307F\u524D\u306B\u691C\u8A3C\u3057\u3001\u9055\u53CD\u306F\u884C\u30ED\u30B1\u30FC\u30BF\u4ED8\u304D\u3067\u5831\u544A\u3057\u307E\u3059\u3002\n- **\u8907\u6570\u89AA**: \u89AA `WHERE` \u304C\u8907\u6570\u30EC\u30B3\u30FC\u30C9\u306B\u4E00\u81F4\u3059\u308B `UPDATE APPLY` \u306B\u5BFE\u5FDC\uFF081\u5BFE\u8C61\u89AA=1 PUT\u30FB100\u4EF6/\u30C1\u30E3\u30F3\u30AF\u30FB**\u975E\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3**\u30FB\u81EA\u52D5\u30EA\u30C8\u30E9\u30A4\u306A\u3057\u30FB\u90E8\u5206\u6210\u529F\u3042\u308A\uFF09\u3002`INSERT APPLY`\uFF08\u89AA\u4F5C\u6210\uFF0B\u521D\u671F\u884C\uFF09\u30FB`UPSERT APPLY`\uFF08`ON INSERT` / `ON UPDATE` \u5206\u5C90\uFF09\u3082\u53EF\u3002\n- **\u30AC\u30FC\u30C9**: revision \u30AC\u30FC\u30C9\u5FC5\u9808\u3002`dmlMaxRows`\uFF08\u89AA\u4EF6\u6570\uFF09\u3068 `dmlMaxSubtableRows`\uFF08\u5909\u66F4\u5B50\u884C\u6570\u30FB\u65E2\u5B9A500\uFF09\u306E\u4E8C\u91CD\u30AC\u30FC\u30C9\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u300C\u6700\u5927\u53D6\u5F97\u4EF6\u6570\u300D\u8A2D\u5B9A\u3092\u4E21\u30AC\u30FC\u30C9\u3078\u517C\u7528\u3057\u307E\u3059\u3002\n- **MCP**: \u3059\u3079\u3066\u306E `APPLY` mutation \u306F\u5B9F\u884C\u524D\u306B fail-closed\uFF08`allowDml` / `dmlMaxSubtableRows` \u3067\u3082\u89E3\u7981\u3055\u308C\u307E\u305B\u3093\uFF09\u3002`VALIDATE ONLY` / `EXPLAIN` \u306F\u8A31\u53EF\u3002\n\n---", uri: "ksql://language-reference/19-subtable-virtual-table" }, "20-reorder": { heading: "20. REORDER", text: "## 20. REORDER\n\n\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u884C\u3092\u89AA\u5358\u4F4D\u3067\u4E26\u3073\u66FF\u3048\u307E\u3059\u3002\n\n```sql\nREORDER APP100$\u660E\u7D30\nBY \u5546\u54C1\u30B3\u30FC\u30C9 ASC, \u7D0D\u671F DESC\nWHERE _pid = 123\n```\n\n\u5168\u4EF6\u5BFE\u8C61\u306E\u660E\u793A\u69CB\u6587:\n\n```sql\nREORDER ALL APP100$\u660E\u7D30\nBY \u5546\u54C1\u30B3\u30FC\u30C9 ASC\n```\n\n\u30EB\u30FC\u30EB:\n- `REORDER` \u306F `WHERE` \u5FC5\u9808\n- `REORDER ALL` \u306F `WHERE` \u4F75\u7528\u4E0D\u53EF\n- `_idx` \u306F\u53C2\u7167\u5C02\u7528\uFF08`UPDATE SET _idx = ...` \u4E0D\u53EF\uFF09\n- \u4E26\u3073\u66FF\u3048\u66F4\u65B0\u6642\u306F\u884C `id` \u306E\u307F\u9001\u4FE1\u3057\u3001\u884C\u5024\u306F\u518D\u9001\u3057\u306A\u3044\uFF08\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7\u518D\u8A55\u4FA1\u5F71\u97FF\u3092\u6291\u5236\uFF09\n\n---", uri: "ksql://language-reference/20-reorder" }, "21-subqueries": { heading: "21. \u30B5\u30D6\u30AF\u30A8\u30EA", text: "## 21. \u30B5\u30D6\u30AF\u30A8\u30EA\n\n### \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\uFF08SELECT \u5217\u30FBHAVING\uFF09\n\nSELECT \u5217\u3084 HAVING \u53E5\u3067\u3082 1 \u884C 1 \u5217\u3092\u8FD4\u3059\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- SELECT \u5217: \u5168\u4EF6\u6570\u30FB\u5408\u8A08\u3092\u3059\u3079\u3066\u306E\u884C\u306B\u4ED8\u52A0\nSELECT\n \u9867\u5BA2\u540D,\n \u91D1\u984D,\n (SELECT COUNT(*) FROM APP100) AS \u7DCF\u4EF6\u6570,\n (SELECT SUM(\u91D1\u984D) FROM APP100) AS \u5408\u8A08\u91D1\u984D\nFROM APP100\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86'\n\n-- HAVING \u3067\u30B5\u30D6\u30AF\u30A8\u30EA\nSELECT \u62C5\u5F53\u8005, SUM(\u91D1\u984D) AS \u5408\u8A08\nFROM APP100\nGROUP BY \u62C5\u5F53\u8005\nHAVING SUM(\u91D1\u984D) > (SELECT AVG(\u91D1\u984D) FROM APP100) * 2\n```\n\n\u5217\u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u7701\u7565\u3057\u305F\u5834\u5408\u306F `(subquery)` \u304C\u5217\u540D\u306B\u306A\u308A\u307E\u3059\u3002\n\n### \u30B5\u30D6\u30AF\u30A8\u30EA\u4E00\u89A7\n\n| \u69CB\u6587 | \u8A18\u8FF0\u7B87\u6240 | \u5099\u8003 |\n|---|---|---|\n| `IN (SELECT ...)` | WHERE | 1 \u5217\u76EE\u306E\u5024\u30BB\u30C3\u30C8\u3092 IN \u30EA\u30B9\u30C8\u3068\u3057\u3066\u4F7F\u7528 |\n| `NOT IN (SELECT ...)` | WHERE | \u9664\u5916\u6761\u4EF6 |\n| `EXISTS (SELECT ...)` | WHERE | 1 \u4EF6\u4EE5\u4E0A\u8FD4\u305B\u3070\u771F |\n| `NOT EXISTS (SELECT ...)` | WHERE | 0 \u4EF6\u306A\u3089\u771F |\n| `(SELECT ...)` | WHERE \u53F3\u8FBA\u30FBSELECT \u5217\u30FBHAVING \u53F3\u8FBA | \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\uFF081 \u884C 1 \u5217\u3002GROUP BY \u306A\u3057\u306E\u96C6\u8A08\u306F 0 \u4EF6\u3067\u3082 1 \u884C\u3092\u8FD4\u3059\u3002**\u623B\u308A\u5024\u306F\u95A2\u6570\u3054\u3068** \u2014 \xA78\uFF09 |\n\n**\u5171\u901A\u5236\u7D04:**\n- **\u975E\u76F8\u95A2\u306E\u307F\u5BFE\u5FDC** \u2014 \u5916\u5074\u30C6\u30FC\u30D6\u30EB\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\n- \u3059\u3079\u3066 FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u81EA\u4F53\u3082 SIMPLE / FULL_SCAN \u3092\u81EA\u52D5\u5224\u5B9A\u3057\u307E\u3059\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u306F 1 \u56DE\u3060\u3051\u5B9F\u884C\u3055\u308C\u3001\u5168\u884C\u306B\u540C\u3058\u7D50\u679C\u304C\u9069\u7528\u3055\u308C\u307E\u3059\n\n---", uri: "ksql://language-reference/21-subqueries" }, "22-limitations": { heading: "22. \u5236\u9650\u4E8B\u9805", text: "## 22. \u5236\u9650\u4E8B\u9805\n\n### \u6B63\u898F\u8868\u73FE\u306E\u9069\u7528\u9650\u754C\n\n`REGEXP_LIKE` / `REGEXP_REPLACE` / `REGEXP_SUBSTR` \u306B\u5B89\u5168\u6027\u30B2\u30FC\u30C8\u3084\u5B9F\u884C\u6642\u9593\u5236\u9650\u306F\u3042\u308A\u307E\u305B\u3093\u3002ReDoS \u3067\u540C\u671F\u51E6\u7406\u304C\u66B4\u8D70\u3059\u308B\u3068 kSQL \u81EA\u8EAB\u304B\u3089\u306F\u4E2D\u65AD\u3067\u304D\u307E\u305B\u3093\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u30BF\u30D6\u5F37\u5236\u7D42\u4E86\u3001CLI \u306F Ctrl+C\u3001MCP \u306F\u30D7\u30ED\u30BB\u30B9\u518D\u8D77\u52D5\u3067\u5FA9\u65E7\u3057\u307E\u3059\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u306F\u540C\u3058\u30BF\u30D6\u306E\u672A\u4FDD\u5B58\u7DE8\u96C6\u3068 SQL\u3001MCP \u3067\u306F\u540C\u4E00\u30D7\u30ED\u30BB\u30B9\u306E\u5168\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u5DFB\u304D\u8FBC\u307F\u307E\u3059\u3002\n\nECMAScript \u6B63\u898F\u8868\u73FE\u306F\u30DB\u30B9\u30C8\u306E\u30D6\u30E9\u30A6\u30B6\uFF0FNode \u3068\u305D\u306E\u7248\u306B\u4F9D\u5B58\u3057\u307E\u3059\u3002`\\p{}`\u3001Unicode \u30E2\u30FC\u30C9\u3068 `i` \u306E case folding\u3001\u65B0\u69CB\u6587\u306E\u53D7\u7406\u53EF\u5426\u306A\u3069\u306F\u540C\u3058 SQL \u3067\u3082\u9762\u3054\u3068\u306B\u7570\u306A\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u7D50\u679C\u3092 `UPDATE SET` \u307E\u305F\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\u306E `UPDATE ... FROM` \u3067\u4FDD\u5B58\u3059\u308B\u3068\u3001\u305D\u306E\u5DEE\u304C\u4FDD\u5B58\u30C7\u30FC\u30BF\u3078\u6B8B\u308B\u305F\u3081\u3001\u66F8\u304D\u623B\u3057\u74B0\u5883\u3092\u56FA\u5B9A\u3057\u3066\u4E8B\u524D\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### \u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u306A\u3044\u69CB\u6587\n\n| \u6A5F\u80FD | \u72B6\u6CC1 |\n|------|------|\n| \u76F8\u95A2\u30B5\u30D6\u30AF\u30A8\u30EA | \u975E\u5BFE\u5FDC\uFF08\u975E\u76F8\u95A2 IN/EXISTS \u306F\u5BFE\u5FDC\uFF09 |\n| INTERSECT / EXCEPT | \u975E\u5BFE\u5FDC |\n| \u518D\u5E30 CTE | \u5BFE\u5FDC\uFF08read-only \u306E `WITH RECURSIVE`\u3001`UNION ALL` 2\u679D\u3001\u5358\u4E00\u81EA\u5DF1 `INNER JOIN`\u3001\u4EFB\u610F\u306E\u5358\u4E00\u5217 `CYCLE`\u3002\u518D\u5E30 DML source\u30FB\u76F8\u4E92/\u591A\u91CD\u518D\u5E30\u30FBpath \u516C\u958B\u306A\u3069\u306F\u975E\u5BFE\u5FDC\uFF09 |\n| FULL OUTER JOIN | \u975E\u5BFE\u5FDC |\n| UPDATE \u306E\u6C4E\u7528 JOIN | \u975E\u5BFE\u5FDC\uFF08`UPDATE ... FROM` \u306E `$id`\uFF0F\u6587\u5B57\u5217\uFF081\u884C\uFF09\uFF0F\u6570\u5024\u30AD\u30FC\u306B\u3088\u308B\u5358\u4E00\u7B49\u5024\u306E\u307F\u5BFE\u5FDC\uFF09 |\n| \u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3 | kintone API \u306E\u5236\u7D04\u306B\u3088\u308A\u975E\u5BFE\u5FDC\uFF08\u30D0\u30C3\u30C1\u5B9F\u884C\u3082\u975E\u30A2\u30C8\u30DF\u30C3\u30AF\uFF09 |\n| DML \u3092\u542B\u3080\u30D0\u30C3\u30C1\uFF08\u8907\u6587\uFF09 | \u5BFE\u5FDC\uFF08`ksql_mutate` / CLI `--allow-dml` / \u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u6587\u3054\u3068\u306E\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\u3002\u5E38\u306B fail-fast\u3002\u2192 [\xA725](#25-\u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB)\uFF09 |\n| \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u306E DML | \u975E\u5BFE\u5FDC\uFF08`CREATE TEMP TABLE ... AS SELECT` / `DROP TEMP TABLE` \u306E\u307F\uFF09 |\n| `ASSERT` \u306E\u8907\u5408\u6761\u4EF6\uFF08`AND` / `OR`\uFF09 | \u975E\u5BFE\u5FDC\uFF08\u8907\u6570\u306E `ASSERT` \u6587\u306B\u5206\u3051\u3066\u66F8\u304F\u3002\u2192 [\xA726](#26-assert)\uFF09 |\n| \u30D0\u30C3\u30C1\u5909\u6570\u306E\u9AD8\u5EA6\u306A\u5229\u7528 | `SET @x = (SELECT ...)`\u3001`DECLARE @x = default`\u3001SELECT \u5B9A\u6570\u5217 `@x AS alias`\u3001\u6587\u5B57\u5217\u914D\u5217 `SET @list=['A','B']` \u3068 `IN @list`\u3001CLI/MCP \u5916\u90E8\u6CE8\u5165\u306B\u5BFE\u5FDC\u3002`NULL` \u4EE3\u5165\u30FB\u30B5\u30D6\u30AF\u30A8\u30EA\u7D50\u679C\u3078\u306E\u7B97\u8853\u306F\u73FE\u6642\u70B9\u3067\u975E\u5BFE\u5FDC\uFF08\u2192 [\xA725 \u30D0\u30C3\u30C1\u5909\u6570](#25-\u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB)\uFF09 |\n| \u66F8\u304D\u8FBC\u307F\u7CFB API\uFF08POST / PUT / DELETE\uFF09\u306E\u81EA\u52D5\u30EA\u30C8\u30E9\u30A4 | \u975E\u5BFE\u5FDC\uFF08\u5FDC\u7B54\u55AA\u5931\u6642\u306E\u4E8C\u91CD\u5B9F\u884C\u3092\u907F\u3051\u308B\u305F\u3081\u3002\u30EA\u30C8\u30E9\u30A4\u306F GET \u7CFB\u9650\u5B9A \u2014 \u5BFE\u8C61: 408/429/502/503/504\u3002\u5FC5\u8981\u306A\u3089\u547C\u3073\u51FA\u3057\u5074\u3067\u51AA\u7B49\u306A\u518D\u5B9F\u884C\uFF08UPSERT \u7B49\uFF09\u3092\u8A2D\u8A08\u3059\u308B\uFF09 |\n| `DELETE` \u3067\u306E `APP@profile`\uFF08CLI \u62E1\u5F35\uFF09 | \u672A\u5BFE\u5FDC\uFF08`ArgumentError: @profile is not supported for DELETE yet.`\uFF09 |\n| **\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u30FB\u4F5C\u696D\u8005\u306E UPDATE** | **\u5BFE\u8C61\u5916**\uFF08`/k/v1/records/status.json` \u304C\u5FC5\u8981\u306A\u305F\u3081\uFF09 |\n\n### \u5B9F\u884C\u30E2\u30FC\u30C9\n\nkSQL \u306F\u4EE5\u4E0B\u306E\u6761\u4EF6\u306B\u5FDC\u3058\u3066\u81EA\u52D5\u7684\u306B\u5B9F\u884C\u30E2\u30FC\u30C9\u3092\u5207\u308A\u66FF\u3048\u307E\u3059\u3002\n\n| \u6761\u4EF6 | \u30E2\u30FC\u30C9 |\n|------|--------|\n| JOIN \u306A\u3057\u3001GROUP BY \u306A\u3057\u3001DISTINCT \u306A\u3057\u3001WHERE/ORDER BY \u306B\u95A2\u6570\u30FB\u7B97\u8853\u5F0F\u306A\u3057 | **SIMPLE\u5019\u88DC**\uFF08\u578B\xD7\u6F14\u7B97\u5B50\u80FD\u529B\u3068ORDER planner\u3067\u6700\u7D42\u6C7A\u5B9A\uFF09 |\n| JOIN \u3042\u308A / GROUP BY \u3042\u308A / DISTINCT / WHERE \u306B\u95A2\u6570\u30FB\u7B97\u8853\u5F0F\u30FBCASE WHEN / ORDER BY \u306B\u7B97\u8853\u5F0F | **FULL_SCAN**\uFF08JS \u51E6\u7406\u3002JOIN \u306E\u5B89\u5168\u306A\u5358\u4E00 alias \u8FF0\u8A9E\u306A\u3069\u3001\u5BFE\u5FDC\u3059\u308B prefilter \u306F records API \u3078\u62BC\u3057\u4E0B\u3052\u308B\uFF09 |\n| WHERE \u306B IN (SELECT) / EXISTS / NOT EXISTS / \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA | **FULL_SCAN** |\n| SELECT \u5217\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA | **FULL_SCAN** |\n| SELECT \u5217\u306B\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570 | **FULL_SCAN** |\n| UNION / UNION ALL | **FULL_SCAN** |\n| WITH \u53E5\uFF08\u5358\u7D14 CTE\uFF09\u2014 \u30A4\u30F3\u30E9\u30A4\u30F3\u5316\u3055\u308C\u308B | **SIMPLE**\uFF08kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\uFF09 |\n| WITH \u53E5\uFF08GROUP BY \u3042\u308A\u306E CTE\u30FB\u8907\u6570 CTE\u30FBCTE JOIN\uFF09 | **FULL_SCAN** |\n| WITH RECURSIVE | **FULL_SCAN**\uFF08\u53C2\u7167\u7269\u7406 source \u3092\u5B8C\u5168\u5B9F\u4F53\u5316\u3057\u3001\u4E09\u5883\u754C\u3092\u5E38\u6642\u9069\u7528\uFF09 |\n\nFULL_SCAN \u30E2\u30FC\u30C9\u306F\u5927\u91CF\u30EC\u30B3\u30FC\u30C9\u306E\u5834\u5408\u3001\u6642\u9593\u304C\u304B\u304B\u308A\u307E\u3059\u3002\n\n### \u53D6\u5F97\u4EF6\u6570\u306E\u4E0A\u9650\n\n- \u30A8\u30F3\u30B8\u30F3\u65E2\u5B9A\u5024: **10,000 \u4EF6**\n- CLI \u65E2\u5B9A\u5024: **500 \u4EF6**\uFF08`--max-records` \u3067\u5909\u66F4\u53EF\u80FD\uFF09\n- JOIN / GROUP BY / DISTINCT \u306F client \u5074\u51E6\u7406\u306E\u305F\u3081\u5927\u91CF\u30C7\u30FC\u30BF\u3067\u306F\u6642\u9593\u304C\u304B\u304B\u308A\u307E\u3059\u3002INNER JOIN \u306E\u5BFE\u5FDC\u8FF0\u8A9E\u306F\u5404 APP \u3078\u62BC\u3057\u4E0B\u3052\u3066\u53D6\u5F97\u4EF6\u6570\u3092\u6E1B\u3089\u3057\u307E\u3059\u304C\u3001\u62BC\u3057\u4E0B\u3052\u3089\u308C\u306A\u3044 APP \u306F\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\n- \u30ED\u30FC\u30AB\u30EB`ORDER BY`\u3067\u4E0A\u9650\u306B\u9054\u3057\u305F\u5834\u5408\u3001`truncate`\u8A2D\u5B9A\u3067\u3082\u8AA4\u3063\u305Ftop-N\u3092\u8FD4\u3055\u305A\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\n\n### \u7B97\u8853\u306F\u6D6E\u52D5\u5C0F\u6570\u70B9\uFF08IEEE 754 \u500D\u7CBE\u5EA6\uFF09\n\n- \u7B97\u8853\u5F0F\u30FB\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u30FB\u96C6\u8A08\uFF08SUM/AVG\uFF09\u306F\u500D\u7CBE\u5EA6\u6D6E\u52D5\u5C0F\u6570\u70B9\u3067\u8A55\u4FA1\u3057\u307E\u3059\u3002\u5C0F\u6570\u306E\u8868\u73FE\u8AA4\u5DEE\uFF08`3000 * 1.1` = `3300.0000000000005`\uFF09\u30FB\u6709\u52B9\u6841 15\u301C17 \u6841\u30FB**\u7A7A\u30BB\u30EB= 0 \u6271\u3044**\u306E\u5236\u7D04\u304C\u3042\u308A\u307E\u3059\u3002\u8A73\u7D30\u3068\u56DE\u907F\u7B56\u306F \xA73\u300C\u7B97\u8853\u306E\u7CBE\u5EA6\u3068\u7A7A\u30BB\u30EB\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\n- \u53D6\u5F97\u3057\u305F\u6570\u5024\u305D\u306E\u3082\u306E\u306F\u6587\u5B57\u5217\u306E\u307E\u307E\u4FDD\u6301\u3059\u308B\u305F\u3081\u3001\u7B97\u8853\u3092\u901A\u3055\u306A\u3051\u308C\u3070\u6841\u843D\u3061\u3057\u307E\u305B\u3093\n\n### JOIN \u306E\u7B49\u5024\u7D50\u5408\u306E\u307F\u5BFE\u5FDC\n\n```sql\n-- OK: \u7B49\u5024\u7D50\u5408\nON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n\n-- NG: \u7BC4\u56F2\u7D50\u5408\u30FB\u4E0D\u7B49\u5024\u7D50\u5408\u306F\u975E\u5BFE\u5FDC\nON a.\u91D1\u984D > b.\u4E0B\u9650\u91D1\u984D\n```\n\n### INSERT / UPDATE \u306E\u5024\n\n\u6587\u5B57\u5217\u30FB\u6570\u5024\uFF08`-5` / `+5` \u306E\u3088\u3046\u306A\u7B26\u53F7\u4ED8\u304D\u6570\u5024\u3092\u542B\u3080\uFF09\u30FB\u914D\u5217\u30EA\u30C6\u30E9\u30EB `[...]` \u304C\u6307\u5B9A\u53EF\u80FD\u3067\u3059\u3002INSERT / UPSERT VALUES \u306E\u7B26\u53F7\u76F4\u5F8C\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3001UPDATE SET \u306E\u5358\u9805 `+` \u3082\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u76F4\u524D\u3060\u3051\u3067\u3059\u3002\n\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u30FB\u7D44\u7E54\u9078\u629E\u30FB\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u30FB\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30FB\u8907\u6570\u9078\u629E\u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u66F8\u304D\u8FBC\u307F\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3092 `getFields()` \u3067\u81EA\u52D5\u53D6\u5F97\u3057\u3066\u5909\u63DB\uFF09\u3002\n\n\u4EE5\u4E0B\u306F\u5F15\u304D\u7D9A\u304D\u975E\u5BFE\u5FDC\u3067\u3059:\n\n| \u30D5\u30A3\u30FC\u30EB\u30C9\u578B | \u72B6\u6CC1 |\n|---|---|\n| \u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\uFF08FILE\uFF09 | \u30D0\u30A4\u30CA\u30EA\u9001\u4FE1\u304C\u5225 API \u306E\u305F\u3081\u975E\u5BFE\u5FDC |\n| CREATOR / MODIFIER | kintone API \u3067\u66F4\u65B0\u4E0D\u53EF |\n| SUBTABLE | \u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\uFF08`APP100$\u660E\u7D30`\uFF09\u3067\u64CD\u4F5C |\n\n### LIKE \u306E\u6319\u52D5\n\nLIKE\u306F\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u306E\u6709\u7121\u306B\u304B\u304B\u308F\u3089\u305A\u5E38\u306BJavaScript\u3067\u8A55\u4FA1\u3057\u3001kintone\u3078\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\u3002\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u306A\u3057\u306FkSQL\u72EC\u81EA\u306E\u90E8\u5206\u4E00\u81F4\uFF08`includes`\uFF09\u3067\u3059\u3002\u901A\u5E38\u306E\u89AA\u30EC\u30B3\u30FC\u30C9DML\u3067\u306FLIKE\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08**\u4F8B\u5916**: v3.10.0 \u4EE5\u964D\u3001APPLY \u8907\u6570\u89AA `UPDATE` \u306E\u89AA WHERE \u3067\u306F LIKE \u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF1D\u5B89\u5168\u30D7\u30EC\u30D5\u30A3\u30EB\u30BF\u3067\u53D6\u5F97\u5F8C\u306B\u5143 WHERE \u3092 JS \u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\u901A\u5E38\u306E\u89AA UPDATE/DELETE \u3067\u306F KLIKE \u306E\u307F\u4F7F\u7528\u3067\u304D LIKE \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF09\u3002\u8A73\u7D30\u306F\u300CLIKE / NOT LIKE\uFF08\u90E8\u5206\u4E00\u81F4\u30FB\u9664\u5916\uFF09\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n---", uri: "ksql://language-reference/22-limitations" }, "23-ui-features": { heading: "23. UI \u6A5F\u80FD", text: '## 23. UI \u6A5F\u80FD\n\n### \u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\n\nkintone API \u306E\u30A8\u30E9\u30FC\u306F\u308F\u304B\u308A\u3084\u3059\u304F\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u30D5\u30A3\u30FC\u30EB\u30C9\u30EC\u30D9\u30EB\u306E\u30A8\u30E9\u30FC\u3082\u5C55\u958B\u3057\u3066\u8868\u793A\u3057\u307E\u3059\u3002\n\n```\n\u26A0 \u5165\u529B\u5185\u5BB9\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\n records[0].\u9867\u5BA2\u30E9\u30F3\u30AF.value: "V"\u306F\u9078\u629E\u80A2\u306B\u3042\u308A\u307E\u305B\u3093\u3002\n\n\u26A0 \u6307\u5B9A\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u9867\u5BA2\u30E9\u30F3\u30AF\uFF09\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\n```\n\n### \u5B9F\u884C\u5C65\u6B74\n\n- \u5B9F\u884C\u3057\u305F SQL \u306F\u81EA\u52D5\u7684\u306B\u5C65\u6B74\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3059\n- **\u30A8\u30E9\u30FC\u306B\u306A\u3063\u305F SQL \u3082\u4FDD\u5B58\u3055\u308C\u307E\u3059**\uFF08\u4FEE\u6B63\u30FB\u518D\u5B9F\u884C\u304C\u3057\u3084\u3059\u304F\u306A\u308A\u307E\u3059\uFF09\n- \u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u305F\u5834\u5408\u306F\u4FDD\u5B58\u3055\u308C\u307E\u305B\u3093\n- \u300C\u5C65\u6B74 \u25BC\u300D\u30DC\u30BF\u30F3\u304B\u3089\u904E\u53BB\u306E SQL \u3092\u9078\u629E\u3057\u3066\u518D\u5B9F\u884C\u3067\u304D\u307E\u3059\n\n---', uri: "ksql://language-reference/23-ui-features" }, "24-explain": { heading: "24. EXPLAIN", text: "## 24. EXPLAIN\n\n`EXPLAIN` \u3092\u5148\u982D\u306B\u4ED8\u3051\u308B\u3068\u3001schema-aware\u306A\u5B9F\u884C\u8A08\u753B\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3068\u3001canonical STATUS\u9806\u306B\u5FC5\u8981\u306A\u5834\u5408\u3060\u3051\u30D7\u30ED\u30BB\u30B9\u72B6\u614B\u5B9A\u7FA9\u3092\u8AAD\u307F\u307E\u3059\u3002\u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u30FB\u66F8\u304D\u8FBC\u307FAPI\u306F\u547C\u3073\u307E\u305B\u3093\u3002\n\n```sql\nEXPLAIN SELECT * FROM APP100 WHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86'\nEXPLAIN UPDATE APP100 SET \u72B6\u614B = '\u5B8C\u4E86' WHERE $id = 1\nEXPLAIN DELETE FROM APP100 WHERE $id = 1\nEXPLAIN INSERT INTO APP100 (\u9867\u5BA2\u540D) VALUES ('A\u793E')\nEXPLAIN UPSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D) VALUES ('C001', 'A\u793E') ON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\nEXPLAIN REORDER APP100$\u660E\u7D30 BY \u5546\u54C1\u30B3\u30FC\u30C9 ASC WHERE _pid = 1\nEXPLAIN VALIDATE APP100\nEXPLAIN IMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D) FROM CSV customers BY NAME\n```\n\n### \u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\n\n- `SELECT` / `WITH` / `INSERT` / `UPDATE` / `DELETE` / `UPSERT` / `REORDER` / `VALIDATE` / `IMPORT`\n\n### \u5236\u7D04\n\n- `EXPLAIN SHOW APPS` \u306A\u3069\u3001\u4E0A\u8A18\u4EE5\u5916\u306E\u6587\u306F\u975E\u5BFE\u5FDC\u3067\u3059\n- `EXPLAIN CREATE TEMP TABLE ... AS SELECT ...` \u306F\u975E\u5BFE\u5FDC\u3067\u3059\u3002`AS` \u4EE5\u964D\u306E\n `SELECT`\uFF08\u307E\u305F\u306F `WITH`\uFF09\u3092\u5358\u4F53\u3067 `EXPLAIN` \u3059\u308B\u3068\u3001\u540C\u3058\u53D6\u5F97\u30FBJOIN \u8A08\u753B\u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\n- \u5B9F\u30C7\u30FC\u30BF\u306E\u53D6\u5F97\u30FB\u66F4\u65B0\u306F\u884C\u3044\u307E\u305B\u3093\uFF08metadata API\u306E\u307F\uFF09\n- \u5BFE\u8C61\u30A2\u30D7\u30EA\u306E\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3092\u8AAD\u3081\u308B\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002schema\u53D6\u5F97\u306B\u5931\u6557\u3057\u305F\u5834\u5408\u3001\u63A8\u5B9ASIMPLE\u3068\u3057\u3066\u6210\u529F\u3055\u305B\u305A\u5143\u306E\u8A8D\u8A3C\u30FB\u901A\u4FE1\u30A8\u30E9\u30FC\u3092\u8FD4\u3057\u307E\u3059\n- `order plan`\u306F`CANONICAL_LOCAL`\uFF0F`CANONICAL_REST_TOP_N`\uFF0F`KORDER_NATIVE`\u3092\u8868\u793A\u3057\u307E\u3059\n- **`EXPLAIN` \u306F `warnings` \u3092\u8FD4\u3057\u307E\u305B\u3093**\uFF08\u5E38\u306B\u7A7A\u914D\u5217\uFF09\u3002**\u5B9F\u884C\u6642\u306E\u8B66\u544A\u306F\u5B9F\u884C\u3057\u306A\u3044\u3068\u51FA\u307E\u305B\u3093**\u2014\u2014\n \u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u65E2\u5B9A\u30D5\u30EC\u30FC\u30E0\uFF08`RANGE`\uFF09\u3084 `ORDER BY` \u304C\u5168\u9806\u5E8F\u3067\u306A\u3044\u65E8\u306E\u8B66\u544A\u306F\u3001\n \u8A08\u753B\u4E0A\u306F `frame:` / `window ...:` \u306E\u884C\u306B\u73FE\u308C\u307E\u3059\u304C\u3001**`warnings` \u306B\u306F\u5165\u308A\u307E\u305B\u3093**\u3002\n **\u300C`EXPLAIN` \u304C\u901A\u3063\u305F\u304B\u3089\u8B66\u544A\u306F\u7121\u3044\u300D\u3068\u306F\u8AAD\u3081\u307E\u305B\u3093\u3002**\n\n### \u672A\u89E3\u6C7A\u5024\u3068\u8907\u6587\u306E\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\n\nEXPLAIN \u306F\u3001SQL \u672C\u6587\u304B\u3089\u9759\u7684\u306B\u8A3C\u660E\u3067\u304D\u308B\u60C5\u5831\u3068\u3001\u5B9F\u884C\u6642\u306B\u3057\u304B\u6C7A\u307E\u3089\u306A\u3044\u60C5\u5831\u3092\u533A\u5225\u3057\u307E\u3059\u3002\n\u672A\u89E3\u6C7A\u60C5\u5831\u3092\u5B9F\u5024\u30FB\u7A7A schema\u30FB0 \u884C\u3068\u3057\u3066\u63A8\u6E2C\u305B\u305A\u3001`deferred` \u307E\u305F\u306F `runtime` \u3068\u8868\u793A\u3057\u307E\u3059\u3002\n`deferred` \u306F\u8A08\u753B\u6642\u306B\u78BA\u5B9A\u3067\u304D\u306A\u3044\u3068\u3044\u3046\u610F\u5473\u3067\u3042\u308A\u3001\u5B9F\u884C\u6210\u529F\u3092\u4FDD\u8A3C\u3059\u308B\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n\n- `GENERATE_SERIES` \u306E\u5F15\u6570\u306B\u4F7F\u3046\u6CE8\u91C8\u306A\u3057 `DECLARE` \u306E\u65E2\u5B9A\u5024\u304C\u6587\u5B57\u5217\u307E\u305F\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u306A\u3089\u3001\n \u7CFB\u5217\u5F15\u6570\u306B\u9650\u3063\u3066\u65E2\u5B9A\u5024\u306B\u57FA\u3065\u304F\u6761\u4EF6\u4ED8\u304D\u8A08\u753B\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u7CFB\u5217\u578B\u30FB\u63A8\u5B9A\u884C\u6570\u3068\u3068\u3082\u306B\n `DECLARE default`\u3001\u5916\u90E8\u6CE8\u5165\u6642\u306F\u8A08\u753B\u304C\u5909\u308F\u308A\u5F97\u308B\u65E8\u3092\u8868\u793A\u3057\u3001start/stop \u306E\u65E2\u5B9A\u5B9F\u5024\u3084\n \u5916\u90E8\u6CE8\u5165\u5024\u306F\u8868\u793A\u3057\u307E\u305B\u3093\u3002`SET`\u3001\u95A2\u6570\u3001\u7B97\u8853\u3001\u30B5\u30D6\u30AF\u30A8\u30EA\u306A\u3069\u5B9F\u884C\u6642\u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u5024\u3092\u542B\u3080\u7CFB\u5217\u306F\u3001\n `series type: deferred (variable)`\u3001`rows: runtime` \u306B\u306A\u308A\u307E\u3059\u3002WHERE\u3001IN\u3001KLIKE\u3001SELECT \u5217\u306A\u3069\n \u7CFB\u5217\u4EE5\u5916\u306E\u5909\u6570\u7528\u9014\u306F\u5F93\u6765\u3069\u304A\u308A placeholder/candidate \u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002\n- \u8907\u6587\u306E dry-run / batch EXPLAIN \u3067\u306F\u3001\u5148\u884C\u3059\u308B `CREATE TEMP TABLE ... AS SELECT` \u306E\u660E\u793A\u51FA\u529B\u5217\u3092\n \u884C\u3092\u5B9F\u4F53\u5316\u305B\u305A\u9759\u7684 schema \u3068\u3057\u3066\u8A18\u9332\u3057\u307E\u3059\u3002\u5F8C\u7D9A\u306E\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\u306F schema \u306E producer \u6587\u756A\u53F7\u3001\n `rows: runtime`\u3001`static schema / runtime rows` \u3092\u8868\u793A\u3057\u3001\u901A\u5E38\u306E `GROUP BY` planner \u304C\u305D\u306E schema \u3092\n \u4F7F\u7528\u3057\u307E\u3059\u3002`DROP TEMP TABLE` \u5F8C\u306F schema \u3082\u7834\u68C4\u3055\u308C\u307E\u3059\u3002wildcard \u306A\u3069 metadata \u306A\u3057\u3067\u306F\u5B89\u5168\u306B\n \u5217\u3092\u6C7A\u3081\u3089\u308C\u306A\u3044\u5F62\u306F\u7A7A schema \u306B\u305B\u305A `deferred (temp table schema)` \u3068\u8868\u793A\u3057\u307E\u3059\u3002\n\n\u3069\u3061\u3089\u306E\u7D4C\u8DEF\u3082 records API \u306F\u547C\u3070\u305A\u3001\u901A\u5E38\u5B9F\u884C\u30FBvalidate \u306E\u5909\u6570\u89E3\u6C7A\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5B9F\u4F53\u5316\u3001\n\u7CFB\u5217\u691C\u8A3C\u3001GROUP BY \u691C\u8A3C\u306E\u610F\u5473\u306F\u5909\u66F4\u3057\u307E\u305B\u3093\u3002\n\n### \u51FA\u529B\u306E\u8AAD\u307F\u65B9\n\n\u8A08\u753B\u306F\u6B21\u306E 3 \u3064\u306E\u554F\u3044\u306B\u7B54\u3048\u307E\u3059\u3002**\u3069\u306E\u884C\u3092\u8AAD\u3080\u304B\u306F\u3001\u77E5\u308A\u305F\u3044\u3053\u3068\u3067\u6C7A\u307E\u308A\u307E\u3059\u3002**\n\n| \u77E5\u308A\u305F\u3044\u3053\u3068 | \u8AAD\u3080\u884C |\n|---|---|\n| **kintone \u304B\u3089\u4F55\u4EF6\u53D6\u308A\u306B\u884C\u304F\u304B** | `fetch:`\uFF08\u30BD\u30FC\u30B9\u3054\u3068\uFF09\uFF0F`fetch summary:`\uFF08\u6587\u3054\u3068\uFF09 |\n| **\u9014\u4E2D\u3067\u6B62\u307E\u3089\u306A\u3044\u304B** | `complete input:`\uFF0F`search abort:`\uFF0F`onLimit=truncate:` |\n| **\u3069\u306E\u6761\u4EF6\u304C\u62BC\u3057\u4E0B\u304C\u3063\u305F\u304B** | `kintone query:`\uFF0F`pushdown applied:`\uFF0F`pushdown candidate:`\uFF0F`relation:` |\n\n#### \u26A0 `mode:` \u306F\u53D6\u5F97\u91CF\u3067\u306F\u3042\u308A\u307E\u305B\u3093\n\n`mode:` \u306F**\u30A8\u30F3\u30B8\u30F3\u5185\u90E8\u306E\u8A55\u4FA1\u6226\u7565\u540D**\u3067\u3059\u3002`FULL_SCAN` \u306F\u300C\u53D6\u5F97\u3057\u305F\u30EC\u30B3\u30FC\u30C9\u3092\nJS \u3067\u5168\u884C\u8A55\u4FA1\u3059\u308B\u300D\u3068\u3044\u3046\u610F\u5473\u3067\u3001**\u300C\u5168\u4EF6\u53D6\u5F97\u3059\u308B\u300D\u3068\u3044\u3046\u610F\u5473\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002**\n\n**`GROUP BY` \u3084\u96C6\u8A08\u3092\u542B\u3080\u30AF\u30A8\u30EA\u306F\u3001\u7D5E\u308A\u8FBC\u307F\u304C\u52B9\u3044\u3066\u3044\u3066\u3082 `FULL_SCAN` \u306B\u306A\u308A\u307E\u3059\u3002**\n\u53D6\u5F97\u91CF\u306F `fetch:` \u306E\u884C\u3067\u5224\u65AD\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n```\nmode: FULL_SCAN\nkintone query: \u78BA\u5EA6 in (\"A\")\nfetch: PREFILTERED (\u672A\u78BA\u5B9A) \u2190 \u7D5E\u308A\u8FBC\u307F\u306F\u52B9\u3044\u3066\u3044\u308B\n```\n\n#### `fetch:` \u2014 \u305D\u306E\u30BD\u30FC\u30B9\u304B\u3089\u4F55\u3092\u53D6\u308A\u306B\u884C\u304F\u304B\n\n| \u5024 | \u610F\u5473 |\n|---|---|\n| `NONE` | **kintone \u304B\u3089\u53D6\u5F97\u3059\u308B\u30BD\u30FC\u30B9\u304C\u7121\u3044\u6587**\u3067\u3059\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3060\u3051\u3092\u53C2\u7167\u3059\u308B\u6587\u306A\u3069\uFF09\u3002\u3053\u306E\u5024\u306F\u69CB\u9020\u5316\u3055\u308C\u305F `plan` \u306B\u306E\u307F\u73FE\u308C\u3001\u30C6\u30AD\u30B9\u30C8\u3067\u306F `fetch:` / `fetch summary:` \u3092\u8868\u793A\u3057\u307E\u305B\u3093 |\n| `COUNT_ONLY` | **\u30EC\u30B3\u30FC\u30C9\u3092\u8D70\u67FB\u3057\u307E\u305B\u3093**\uFF08`COUNT(*)` \u3092 `totalCount` \u306E\u5358\u767A GET \u3067\u89E3\u304F\u5834\u5408\u306A\u3069\uFF09\u3002\u4EF6\u6570\u306B\u95A2\u4FC2\u306A\u304F **1 \u30EA\u30AF\u30A8\u30B9\u30C8**\u3067\u3001\u8EE2\u9001\u3055\u308C\u308B\u306E\u306F `limit 1` \u306E 1 \u4EF6\u3060\u3051\u3067\u3059\uFF08`metrics.fetchedRows` \u306F 1\uFF09\u3002**\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E `COUNT(*)` \u306F\u3053\u308C\u306B\u306A\u308A\u307E\u305B\u3093**\uFF08`totalCount` \u306F\u89AA\u30EC\u30B3\u30FC\u30C9\u306E\u4EF6\u6570\u306E\u305F\u3081\u3002\u2192 [\xA719](#19-\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB)\uFF09 |\n| `EXACT` | `WHERE` \u5168\u4F53\u3092 kintone \u5074\u3067\u7D5E\u308A\u8FBC\u307F\u3001**JS \u3067\u306E\u8FFD\u52A0\u8A55\u4FA1\u306F\u3042\u308A\u307E\u305B\u3093** |\n| `PREFILTERED` | **\u4E00\u90E8\u306E\u8FF0\u8A9E\u3060\u3051**\u3092 kintone \u5074\u3067\u7D5E\u308A\u8FBC\u307F\u3001\u6B8B\u308A\u306F JS \u3067\u8A55\u4FA1\u3057\u307E\u3059 |\n| `ALL` | **\u5168\u4EF6\u53D6\u5F97**\u3057\u307E\u3059 |\n\n\u63A5\u5C3E\u8F9E\u304C\u4ED8\u304F\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n\n- `(limit N)` \u2014 \u62BC\u3057\u4E0B\u3052\u305F\u30AF\u30A8\u30EA\u304C `limit` \u3092\u4F34\u3044\u307E\u3059\uFF08\u4E0A\u4F4D N \u4EF6\u30FB`KORDER BY` \u306A\u3069\uFF09\n- `(\u672A\u78BA\u5B9A)` \u2014 **\u5B9F\u884C\u6642\u306E\u578B\u30FB\u9078\u629E\u80A2\u306E\u5B9F\u5728\u78BA\u8A8D\u3067\u3001\u7D5E\u308A\u8FBC\u307F\u304C\u843D\u3061\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002**\n \u843D\u3061\u305F\u5834\u5408\u306F\u5168\u4EF6\u53D6\u5F97\u306B\u306A\u308A\u307E\u3059\n\n**`fetch summary:` \u306F\u6587\u5168\u4F53\u306E\u6700\u60AA\u5024**\u3067\u3059\uFF08`NONE` < `COUNT_ONLY` < `EXACT` < `PREFILTERED` < `ALL`\uFF09\u3002\nkintone \u304B\u3089\u53D6\u5F97\u3059\u308B\u30BD\u30FC\u30B9\u304C 1 \u3064\u3082\u7121\u3044\u6587\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3060\u3051\u3092\u53C2\u7167\u3059\u308B\u6587\u306A\u3069\uFF09\u3067\u306F\u51FA\u307E\u305B\u3093\u3002\n\n> **\u540C\u3058 `WHERE` \u3067\u3082\u3001\u30AF\u30A8\u30EA\u306E\u5F62\u304C\u9055\u3048\u3070 `fetch` \u306E\u5024\u306F\u5909\u308F\u308A\u307E\u3059\u3002**\n>\n> ```\n> SELECT COUNT(*) FROM APP100 WHERE \u62C5\u5F53\u8005 in ('user1')\n> \u2192 COUNT_ONLY \uFF08\u62BC\u3057\u4E0B\u3052\u306F\u52B9\u3044\u3066\u3044\u308B\u304C\u3001\u8D70\u67FB\u3057\u306A\u3044\u306E\u3067 COUNT_ONLY \u304C\u512A\u5148\u3055\u308C\u308B\uFF09\n>\n> SELECT \u533A\u5206, COUNT(*) FROM APP100 WHERE \u62C5\u5F53\u8005 in ('user1') GROUP BY \u533A\u5206\n> \u2192 PREFILTERED \uFF08\u540C\u3058 WHERE\u30FB\u540C\u3058\u62BC\u3057\u4E0B\u3052\u3002\u8D70\u67FB\u3059\u308B\u306E\u3067 PREFILTERED\uFF09\n> ```\n>\n> **\u62BC\u3057\u4E0B\u3052\u304C\u52B9\u3044\u3066\u3044\u308B\u304B\u3092\u6BD4\u3079\u308B\u3068\u304D\u306F\u3001\u3059\u3079\u3066\u540C\u3058\u5F62\u3067\u6E2C\u3063\u3066\u304F\u3060\u3055\u3044\u3002**\n> \u5F62\u3092\u6DF7\u305C\u305F\u8868\u3092\u4F5C\u308B\u3068\u3001**\u62BC\u3057\u4E0B\u3052\u306E\u5DEE\u3067\u306F\u306A\u304F\u5F62\u306E\u5DEE**\u3092\u8AAD\u3093\u3067\u3057\u307E\u3044\u307E\u3059\n> \uFF08`COUNT_ONLY` \u306E\u884C\u3060\u3051 `SELECT COUNT(*)` \u3067\u6E2C\u308B\u3001\u306A\u3069\uFF09\u3002\n\n#### \u53D6\u5F97\u306E\u3055\u308C\u65B9\u306F\u30BD\u30FC\u30B9\u3054\u3068\u306B\u9055\u3044\u307E\u3059\n\n`JOIN` \u3084 `UNION` \u3067\u306F\u3001**\u540C\u3058\u30AF\u30A8\u30EA\u306E\u4E2D\u3067\u30BD\u30FC\u30B9\u3054\u3068\u306B\u53D6\u5F97\u306E\u3055\u308C\u65B9\u304C\u5909\u308F\u308A\u307E\u3059\u3002**\n\u3060\u304B\u3089 `fetch:` \u306F\u30BD\u30FC\u30B9\u5358\u4F4D\uFF08`app:` / `JOIN:` / `[union:n]` / CTE\uFF09\u3067\u51FA\u307E\u3059\u3002\n\n```\n[union:1]\n mode: COUNT_TOTAL_COUNT\n fetch: COUNT_ONLY (limit 1) \u2190 1 \u4EF6\u3060\u3051\u8EE2\u9001\u3057\u3001\u8D70\u67FB\u3057\u306A\u3044\n\n[union:2]\n mode: FULL_SCAN\n fetch: ALL \u2190 \u5168\u4EF6\u53D6\u5F97\n```\n\n#### \u5B89\u5168\u5074\u306B\u5012\u3057\u3066\u3044\u307E\u3059\n\n\u5206\u985E\u306B\u8FF7\u3044\u304C\u3042\u308B\u5834\u5408\u306F\u3001**\u3088\u308A\u591A\u304F\u53D6\u5F97\u3059\u308B\u5074**\uFF08`EXACT` \u3088\u308A `PREFILTERED`\u3001\n`PREFILTERED` \u3088\u308A `ALL`\uFF09\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u300C\u7D5E\u308A\u8FBC\u307F\u6E08\u307F\u300D\u3068\u8868\u793A\u3057\u3066\u5B9F\u969B\u306F\u5168\u4EF6\u3060\u3063\u305F\u3001\n\u3068\u3044\u3046\u8AA4\u308A\u3092\u907F\u3051\u308B\u305F\u3081\u3067\u3059\u3002\n\n#### \u6A5F\u68B0\u7684\u306B\u8AAD\u3080\u5834\u5408\n\n**\u8A08\u753B\u672C\u6587\u306E\u6587\u5B57\u5217\u3092\u89E3\u6790\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002**engine \u30E9\u30A4\u30D6\u30E9\u30EA\u3067\u306F\n`explainQuery()` \u306E\u7D50\u679C\u306E `plan` \u306B\u540C\u3058\u5185\u5BB9\u304C\u69CB\u9020\u3067\u5165\u308A\u307E\u3059\n\uFF08\u2192 [\u30A8\u30F3\u30B8\u30F3\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u5229\u7528\u30AC\u30A4\u30C9](ksql_engine_library.md)\uFF09\u3002\n\n`fetch:` / `fetch summary:` / `mode:` / `kintone query:` \u306F\u5B89\u5B9A\u3057\u305F\u8AAD\u307F\u3069\u3053\u308D\u3067\u3059\u304C\u3001\n**\u305D\u308C\u4EE5\u5916\u306E\u8A3A\u65AD\u884C\u306F\u5B9F\u88C5\u306E\u8A73\u7D30**\u3067\u3042\u308A\u3001\u4E88\u544A\u306A\u304F\u5897\u6E1B\u3057\u307E\u3059\u3002\n\n---", uri: "ksql://language-reference/24-explain" }, "25-batch-temp-tables": { heading: "25. \u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB", text: "## 25. \u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\n\n> **CLI\uFF08`-e` / `-f` / `--console`\uFF09\u3001MCP\uFF08`ksql_query` / `ksql_validate` /\n> `ksql_mutate` / `ksql_explain`\uFF09\u3001engine \u30E9\u30A4\u30D6\u30E9\u30EA\u306E `runBatch()` \u3067\u5229\u7528\u53EF\u80FD**\u3067\u3059\u3002\n> \u30D7\u30E9\u30B0\u30A4\u30F3 UI \u3082\u30D0\u30C3\u30C1\u306B\u5BFE\u5FDC\u3057\uFF08DML \u3092\u542B\u3080\u30D0\u30C3\u30C1\u3082\u5B9F\u884C\u53EF\u80FD\uFF09\u3001\u6700\u5F8C\u306B\u7D50\u679C\u30BB\u30C3\u30C8\u3092\n> \u8FD4\u3057\u305F\u6587\uFF08\u901A\u5E38\u306F\u6700\u7D42 SELECT\uFF09\u3060\u3051\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u8A73\u7D30\u4ED5\u69D8\u306F\n> [ksql_batch_temp_table_spec.md](internal/ksql_batch_temp_table_spec.md) \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n>\n> **\u30EA\u30E9\u30F3\u53EF\u80FD\u306A\u5DEE\u5206\u66F4\u65B0\u30D0\u30C3\u30C1\u306E\u8A2D\u8A08\u30D1\u30BF\u30FC\u30F3**\uFF08\u30B9\u30C6\u30FC\u30BF\u30B9\u99C6\u52D5\u30FB\u4EF6\u6570\u30B2\u30FC\u30C8\u30FB\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u30FB\u30D0\u30C3\u30C1\u5909\u6570\u306E\u6D3B\u7528\uFF09\u306F [ksql_batch_recipes.md](ksql_batch_recipes.md) \u306B\u307E\u3068\u3081\u3066\u3044\u307E\u3059\u3002\n\n### engine \u30E9\u30A4\u30D6\u30E9\u30EA\u3067\u5229\u7528\u3067\u304D\u308B\u69CB\u6587\n\n| API | \u69CB\u6587 |\n|---|---|\n| `runQuery()` | \u5358\u6587\u306E `SELECT` / `WITH` / `UNION [ALL]` / `SHOW APPS` / `DESCRIBE` / `DESC` / \u65E2\u5B58\u30EC\u30B3\u30FC\u30C9 `VALIDATE` |\n| `runBatch()` | \u4E0A\u8A18\u3001`CREATE TEMP TABLE ... AS SELECT/WITH` / `DROP TEMP TABLE` / `SET` / `DECLARE` / `ASSERT` / `EXPLAIN` |\n| `explainQuery()` | \u5358\u6587\u306E `SELECT` / `WITH` / `UNION [ALL]` |\n\nengine \u30E9\u30A4\u30D6\u30E9\u30EA\u306F read-only \u5C02\u7528\u3067\u3059\u3002\u66F8\u304D\u8FBC\u307F DML\u3001DML `VALIDATE ONLY`\u3001\n`IMPORT`\u3001`APPLY` \u306F\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093\u3002`runBatch()` \u306F\u6587\u304C1\u3064\u3067\u3082\u5931\u6557\u3057\u305F\u3089 throw \u3057\u3001\n\u90E8\u5206\u7D50\u679C\u3092\u8FD4\u3057\u307E\u305B\u3093\u3002\u6210\u529F\u7D50\u679C\u306B `ok` \u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u306A\u304F\u3001\u5931\u6557\u3057\u305F\u6587\u306F error \u306E\n`statementIndex` / `statementType` \u3067\u7279\u5B9A\u3057\u307E\u3059\u3002\u3053\u308C\u306F\u90E8\u5206\u7D50\u679C\u304C\u5B8C\u5168\u306A\u7D50\u679C\u3068\u3057\u3066\n\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30ED\u30B8\u30C3\u30AF\u3078\u6D41\u308C\u8FBC\u3080\u4E8B\u6545\u3092\u9632\u3050\u305F\u3081\u3067\u3059\u3002\n\n`results[]` \u306E\u5404 `metrics` \u306F\u6587\u5225\u8A08\u6E2C\u3067\u306F\u306A\u304F\u3001\u540C\u4E00\u306E**\u30D0\u30C3\u30C1\u5168\u4F53\u96C6\u8A08\u5024**\u3067\u3059\u3002\n\u6587\u3054\u3068\u306E\u6027\u80FD\u30B3\u30B9\u30C8\u3068\u3057\u3066\u89E3\u91C8\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002API \u3068\u578B\u306E\u8A73\u7D30\u306F\n[\u30A8\u30F3\u30B8\u30F3\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u5229\u7528\u30AC\u30A4\u30C9](ksql_engine_library.md)\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### \u8907\u6587\uFF08\u30D0\u30C3\u30C1\uFF09\n\n`;` \u533A\u5207\u308A\u3067\u8907\u6570\u306E SQL \u6587\u30921\u56DE\u306E\u547C\u3073\u51FA\u3057\u3067**\u9806\u6B21**\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF08\u6700\u5927 20 \u6587\uFF09\u3002\n\n```sql\nSELECT \u90E8\u9580 FROM APP100;\nSELECT \u90E8\u9580 FROM APP200;\n```\n\n- read-only \u6587\u306E\u307F\u306E\u30D0\u30C3\u30C1\u306F `ksql_query` / CLI / \u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u305D\u306E\u307E\u307E\u5B9F\u884C\u3057\u307E\u3059\u3002**DML \u3092\u542B\u3080\u30D0\u30C3\u30C1**\u306F `ksql_mutate`\uFF08`dmlMaxRows` \u306F\u6587\u3054\u3068 + \u4EFB\u610F\u306E `dmlTotalMaxRows` \u3067\u5408\u8A08\u30AC\u30FC\u30C9\uFF09\u3001CLI `--allow-dml`\uFF08\u78BA\u8A8D\u30D7\u30ED\u30F3\u30D7\u30C8\u306F\u30D0\u30C3\u30C1\u5168\u4F53\u30671\u56DE\u3001`--yes` \u3067\u30B9\u30AD\u30C3\u30D7\uFF09\u3001\u307E\u305F\u306F\u30D7\u30E9\u30B0\u30A4\u30F3\uFF08\u6587\u3054\u3068\u306E\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\uFF09\u3067\u5B9F\u884C\u3057\u307E\u3059\u3002DML \u30D0\u30C3\u30C1\u306F\u5E38\u306B fail-fast \u3067\u3059\n- SELECT-based DML\uFF08`INSERT INTO APPxxx ... SELECT` / `UPSERT INTO APPxxx ... SELECT ... ON DUPLICATE`\uFF09\u306E\u30BD\u30FC\u30B9\u306F **APP\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FB\u4E21\u8005\u306E\u6DF7\u5728\uFF08JOIN\u30FB\u30B5\u30D6\u30AF\u30A8\u30EA\uFF09\u306E\u3044\u305A\u308C\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059**\u3002\u4EF6\u6570\u306B\u306F\u66F8\u304D\u8FBC\u307F\u524D\u306E\u78BA\u8A8D\u3067 `dmlMaxRows` \u304C\u9069\u7528\u3055\u308C\uFF08UPSERT \u306F insert + update \u306E**\u5408\u8A08**\uFF09\u3001\u8D85\u904E\u6642\u306F\u5F53\u8A72\u6587\u30BC\u30ED\u66F8\u304D\u8FBC\u307F\u3067\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\n- SELECT-based DML \u306E\u8AAD\u307F\u53D6\u308A\u4E0A\u9650\u306F\u30BD\u30FC\u30B9\u7A2E\u985E\u3054\u3068\u306B\u7570\u306A\u308A\u307E\u3059: **APP \u30BD\u30FC\u30B9\u306E\u8AAD\u307F\u53D6\u308A\u306F `maxRecords` \u306E\u901A\u5E38\u89E3\u6C7A\u5024\uFF08`KSQL_MAX_RECORDS` / profile \u306E `query.maxRecords`\u3001\u65E2\u5B9A 500 \u4EF6\uFF09**\uFF08\u8D85\u904E\u306F\u66F8\u304D\u8FBC\u307F\u524D\u306E\u5B89\u5168\u5074\u30A8\u30E9\u30FC\u3002JOIN \u306E APP \u5074\u3082\u540C\u69D8\u3002`dmlMaxRows` \u306F\u5F71\u97FF\u884C\u6570\u30AC\u30FC\u30C9\u5C02\u7528\u3067\u8AAD\u307F\u53D6\u308A\u3092\u7D5E\u308A\u307E\u305B\u3093\uFF09\u3001**\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306F\u5B9F\u4F53\u5316\u4E0A\u9650 \u65E2\u5B9A 10,000 \u884C\uFF08`tempTableMaxRows` \u3067\u5909\u66F4\u53EF\uFF09**\u3002UPSERT \u7CFB\u3067\u306F\u66F8\u304D\u8FBC\u307F\u5148\u30A2\u30D7\u30EA\u3078\u306E\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u7167\u5408\u8AAD\u307F\u53D6\u308A\u304C**\u30BD\u30FC\u30B9\u7A2E\u985E\u306B\u95A2\u308F\u3089\u305A**\u767A\u751F\u3057\u307E\u3059\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306B\u5B9F\u4F53\u5316\u3057\u3066\u3082\u56DE\u907F\u3055\u308C\u307E\u305B\u3093\uFF09\n- \u5B9F\u884C\u524D\u306B\u5168\u6587\u3092\u691C\u8A3C\u3057\u30011\u6587\u3067\u3082\u4E0D\u6B63\u306A\u3089\u30D0\u30C3\u30C1\u5168\u4F53\u3092\u62D2\u5426\u3057\u307E\u3059\uFF08validate-all-first\uFF09\n- \u65E2\u5B9A\u306F fail-fast\uFF08\u30A8\u30E9\u30FC\u6587\u4EE5\u964D\u306F\u30B9\u30AD\u30C3\u30D7\uFF09\u3002`--continue-on-error`\uFF08CLI\uFF09/ `continueOnError`\uFF08MCP\uFF09\u3067\u30A8\u30E9\u30FC\u5F8C\u306E\u7D9A\u884C\u3092\u9078\u3079\u307E\u3059\n- \u7D50\u679C\u306F\u6587\u3054\u3068\u306B `success` / `error` / `skipped` \u3068\u3057\u3066\u5831\u544A\u3055\u308C\u307E\u3059\n\n### \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\n\n`CREATE TEMP TABLE #\u540D\u524D AS SELECT ...` \u3067 SELECT \u7D50\u679C\u3092\u30D0\u30C3\u30C1\u5185\u306B\u5B9F\u4F53\u5316\u3057\u3001\u5F8C\u7D9A\u306E\u6587\u304B\u3089 `FROM` / `JOIN` / \u30B5\u30D6\u30AF\u30A8\u30EA\u3067\u53C2\u7167\u3067\u304D\u307E\u3059\u3002\n\nsource \u306F `SELECT` \u3068 `WITH` \u306E\u3069\u3061\u3089\u3067\u3082\u3001\u305D\u306E SELECT \u306E `WHERE` \u5168\u4F53\u3092 kintone \u30AF\u30A8\u30EA\u3078 exact \u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u5834\u5408\u306B\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u7269\u7406\u30A2\u30D7\u30EA\u540C\u58EB\u306E INNER JOIN \u3082\u3001JOIN \u306E\u5168\u5165\u529B\u304C alias \u4ED8\u304D\u7269\u7406 APP \u3067\u7B2C5-W / \u7B2C5-L \u3092\u6E80\u305F\u305B\u3070\u3001server-only \u95A2\u6570\u3067\u7D5E\u3063\u3066\u304B\u3089\u5B9F\u4F53\u5316\u3067\u304D\u307E\u3059\u3002\n\n\u4E00\u65B9\u3001**\u5165\u529B\u306B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u304C1\u3064\u3067\u3082\u3042\u308C\u3070\u6587\u5168\u4F53\u304C server-only \u95A2\u6570\u306E\u5BFE\u8C61\u5916**\u3067\u3059\u3002\n\u95A2\u6570\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5217\u3078\u66F8\u304B\u306A\u3051\u308C\u3070\u3088\u3044\u3001\u3068\u3044\u3046\u610F\u5473\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002JOIN \u76F8\u624B\u306E\n\u7269\u7406\u30A2\u30D7\u30EA\u5074\u3078\u95A2\u6570\u3092\u7F6E\u3044\u3066\u3082 `..._CONTEXT_UNSUPPORTED` \u3067\u62D2\u5426\u3055\u308C\u307E\u3059\u3002\n\n```sql\n-- OK: \u7269\u7406\u30A2\u30D7\u30EA\u540C\u58EB\u3092 JOIN \u3057\u3001\u95A2\u6570\u3067\u7D5E\u3063\u3066\u304B\u3089\u5B9F\u4F53\u5316\u3059\u308B\nCREATE TEMP TABLE #\u5F53\u6708 AS\n SELECT d.\u9867\u5BA2No AS k, d.\u58F2\u4E0A, c.\u696D\u7A2E\n FROM APP100 d INNER JOIN APP200 c ON d.\u9867\u5BA2No = c.\u9867\u5BA2No\n WHERE d.\u53D7\u6CE8\u65E5 = THIS_MONTH();\n\n-- NG: \u5B9F\u4F53\u5316\u5F8C\u3002\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u304C\u5165\u529B\u306B\u3042\u308B\u305F\u3081\u3001\u95A2\u6570\u3092\u7269\u7406 APP \u5074\u3078\u7F6E\u3044\u3066\u3082\u62D2\u5426\nCREATE TEMP TABLE #x AS\n SELECT \u9867\u5BA2No, \u53D7\u6CE8\u65E5 FROM APP100;\nSELECT *\nFROM #x a INNER JOIN APP200 c ON a.\u9867\u5BA2No = c.\u9867\u5BA2No\nWHERE c.\u53D7\u6CE8\u65E5 = THIS_MONTH();\n```\n\n\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306F\u5229\u7528\u8005\u30A2\u30D7\u30EA\u306E\u30D7\u30ED\u30BB\u30B9\u5185\u30E1\u30E2\u30EA\u3078\u5B9F\u4F53\u5316\u3055\u308C\u307E\u3059\u30021\u8868\u306E\u4E0A\u9650\u306F\n`tempTableMaxRows`\uFF08\u65E2\u5B9A10,000\u884C\uFF09\u3067\u3001\u8D85\u904E\u306F `truncate` \u6307\u5B9A\u3067\u3082 error \u3067\u3059\u3002\n\u540C\u6642\u306B\u5B58\u5728\u3067\u304D\u308B\u306E\u306F\u6700\u592716\u8868\u3067\u3001`DROP TEMP TABLE` \u3059\u308B\u3068\u540C\u3058\u30D0\u30C3\u30C1\u5185\u3067\u67A0\u3092\u518D\u5229\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- \u76F8\u95A2\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u56DE\u907F\u4F8B\nCREATE TEMP TABLE #latest AS\nSELECT \u9867\u5BA2ID, MAX(\u53D7\u6CE8\u65E5) AS \u6700\u65B0\u53D7\u6CE8\u65E5\nFROM APP300\nGROUP BY \u9867\u5BA2ID;\n\nSELECT a.\u9867\u5BA2\u540D, t.\u6700\u65B0\u53D7\u6CE8\u65E5\nFROM APP100 a\nINNER JOIN #latest t ON a.\u9867\u5BA2ID = t.\u9867\u5BA2ID;\n```\n\n> **\u6CE8\u610F**: \u4E0A\u8A18\u306E `MAX(\u53D7\u6CE8\u65E5)` \u306F\u3001`APP300` \u306E\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u304B\u3089 DATE \u578B\u3092\u89E3\u6C7A\u3057\u3066\u6700\u65B0\u65E5\u3092\u8FD4\u3057\u307E\u3059\u3002\u4E00\u6642\u30C6\u30FC\u30D6\u30EB/CTE\u3078\u578B\u30E1\u30BF\u304C\u4F1D\u64AD\u3059\u308B\u305F\u3081\u3001`SELECT MAX(\u6700\u65B0\u53D7\u6CE8\u65E5) FROM #latest` \u306E\u3088\u3046\u306A\u518D\u96C6\u7D04\u3067\u3082\u65E5\u6642\u306E\u8F9E\u66F8\u9806\u6BD4\u8F03\u3092\u7DAD\u6301\u3057\u307E\u3059\uFF08\u524D\u63B2\u306E\u96C6\u8A08\u95A2\u6570\u306E\u6BD4\u8F03\u898F\u5247\u3092\u53C2\u7167\uFF09\u3002\n\n| \u898F\u5247 | \u5185\u5BB9 |\n|---|---|\n| \u540D\u524D | `#` + \u8B58\u5225\u5B50\uFF08\u4F8B: `#temp` / `#\u96C6\u8A08`\uFF09\u3002`#` \u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u306E\u5148\u982D\u306E\u307F\u3067\u6709\u52B9\u3002\u30A8\u30A4\u30EA\u30A2\u30B9\u306B\u306F\u4F7F\u7528\u4E0D\u53EF |\n| \u5BFF\u547D | **\u30D0\u30C3\u30C1\u5185\u306E\u307F**\u3002\u547C\u3073\u51FA\u3057\u7D42\u4E86\u3067\u81EA\u52D5\u7834\u68C4\uFF08\u547C\u3073\u51FA\u3057\u3092\u307E\u305F\u3050\u53C2\u7167\u306F\u4E0D\u53EF\uFF09 |\n| \u7834\u68C4 | `DROP TEMP TABLE #\u540D\u524D`\uFF08\u4E3B\u306B\u30E1\u30E2\u30EA\u306E\u65E9\u671F\u89E3\u653E\u7528\u3002DROP \u5F8C\u306E\u540C\u540D\u518D CREATE \u306F\u53EF\uFF09 |\n| \u4E0A\u9650 | \u540C\u6642 16 \u500B\u30FB1\u500B\u3042\u305F\u308A\u65E2\u5B9A 10,000 \u884C\uFF08\u8D85\u904E\u306F\u5E38\u306B\u30A8\u30E9\u30FC\uFF09\u3002\u901A\u5E38\u306E\u53D6\u5F97\u4E0A\u9650 `maxRecords` \u3067\u306F\u306A\u304F\u5C02\u7528\u306E `tempTableMaxRows` \u3067\u5909\u66F4\u53EF\u80FD\uFF08MCP \u30C4\u30FC\u30EB\u5F15\u6570 / CLI `--temp-table-max-rows` / env `KSQL_TEMP_TABLE_MAX_ROWS` / profile `query.tempTableMaxRows` / \u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u300C\u2699 \u30AA\u30D7\u30B7\u30E7\u30F3 \u2192 \u53D6\u5F97\u300D\u306E\u300C\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u9650(\u884C)\u300D\u3002\u7A7A\u6B04 = \u65E2\u5B9A\uFF09\u3002\u5909\u66F4\u3057\u3066\u3082\u8D85\u904E\u6642\u306F truncate \u3055\u308C\u305A\u5E38\u306B\u30A8\u30E9\u30FC\u3067\u3001\u65E5\u4ED8\u30EA\u30C6\u30E9\u30EB\u3068\u76F8\u5BFE\u65E5\u4ED8\u3067\u6271\u3044\u306F\u540C\u4E00 |\n| DML | \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u306E INSERT / UPDATE / DELETE \u306F\u975E\u5BFE\u5FDC |\n| \u5B9F\u884C | \u53C2\u7167\u306F\u5E38\u306B\u30A4\u30F3\u30E1\u30E2\u30EA FULL_SCAN\uFF08kintone \u30AF\u30A8\u30EA\u3078\u306E WHERE \u30D7\u30C3\u30B7\u30E5\u30C0\u30A6\u30F3\u306F\u52B9\u304B\u306A\u3044\uFF09 |\n\n### \u30B3\u30F3\u30BD\u30FC\u30EB\uFF08`--console`\uFF09\u3067\u306E\u5165\u529B\n\n- \u5358\u6587\u306F\u5F93\u6765\u3069\u304A\u308A\u884C\u672B `;` \u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\n- `CREATE TEMP TABLE` \u3067\u59CB\u307E\u308B\u5165\u529B\u306F**\u30D0\u30C3\u30C1\u69CB\u7BC9\u30E2\u30FC\u30C9**\u306B\u306A\u308A\u3001`;` \u3067\u306F\u5B9F\u884C\u3055\u308C\u305A **`:run`** \u3067\u30D0\u30C3\u30D5\u30A1\u5168\u4F53\u3092\u30D0\u30C3\u30C1\u5B9F\u884C\u3057\u307E\u3059\uFF08\u7834\u68C4\u306F `:clear`\uFF09\n\n### \u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u306E DML \u30D0\u30C3\u30C1\n\n\u30D7\u30E9\u30B0\u30A4\u30F3 UI \u3067\u3082 DML \u3092\u542B\u3080\u30D0\u30C3\u30C1\u3092\u5B9F\u884C\u3067\u304D\u307E\u3059\u3002\n\n- DML \u6587\u306F**\u6587\u3054\u3068\u306E\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0**\uFF08\u6587\u756A\u53F7 `[N/M]`\u30FB\u66F8\u304D\u8FBC\u307F\u5148\u30A2\u30D7\u30EA\u30FB\u78BA\u5B9A\u4EF6\u6570\u4ED8\u304D\uFF09\u3067\u66F8\u304D\u8FBC\u307F\u76F4\u524D\u306B\u78BA\u8A8D\u3057\u307E\u3059\n- `INSERT INTO ... VALUES` \u306F\u9759\u7684\u306B\u4EF6\u6570\u304C\u78BA\u5B9A\u3059\u308B\u305F\u3081\u3001**\u30D0\u30C3\u30C1\u5B9F\u884C\u524D**\u306B\u307E\u3068\u3081\u3066\u78BA\u8A8D\u3057\u307E\u3059\uFF08\u30AD\u30E3\u30F3\u30BB\u30EB\u6642\u306F 1 \u6587\u3082\u5B9F\u884C\u3055\u308C\u307E\u305B\u3093\uFF09\n- \u5B9F\u884C\u6642\u78BA\u8A8D\u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u305F\u5834\u5408\u306F\u6587 `[N/M]` \u3067\u4E2D\u65AD\u3057\u3001\u305D\u308C\u4EE5\u524D\u306E\u6587\u306E\u5B9F\u884C\u7D50\u679C\u306F\u53CD\u6620\u6E08\u307F\u306E\u307E\u307E\u6B8B\u308A\u307E\u3059\uFF08\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306A\u3057\uFF09\n- \u6210\u529F\u3057\u305F DML \u6587\u306E\u5F71\u97FF\u4EF6\u6570\u306F\u30B5\u30DE\u30EA\u884C\uFF08`[N] \u30BF\u30A4\u30D7: inserted=... updated=...`\uFF09\u3068\u3057\u3066\u7D50\u679C\u306E\u4E0A\u306B\u8868\u793A\u3055\u308C\u307E\u3059\n- DML \u3092\u542B\u3080\u5B9F\u884C\uFF08\u5358\u6587\u30FB\u30D0\u30C3\u30C1\u3068\u3082\uFF09\u3067\u306F\u53D6\u5F97\u4E0A\u9650\u5230\u9054\u6642\u306E\u52D5\u4F5C\u304C UI \u8A2D\u5B9A\u306B\u95A2\u308F\u3089\u305A **error \u306B\u56FA\u5B9A**\u3055\u308C\u307E\u3059\uFF08truncate \u3060\u3068 SELECT-based DML \u306E\u30BD\u30FC\u30B9\u8AAD\u307F\u53D6\u308A\u304C\u9ED9\u3063\u3066\u5207\u308A\u6368\u3066\u3089\u308C\u3001\u90E8\u5206\u66F8\u304D\u8FBC\u307F\u306B\u306A\u308B\u305F\u3081\uFF09\n\n### \u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u306E\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u9650\u6307\u5B9A\n\n\u300C\u2699 \u30AA\u30D7\u30B7\u30E7\u30F3 \u2192 \u53D6\u5F97\u300D\u306E\u300C\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u9650(\u884C)\u300D\u3067\u5B9F\u884C\u3054\u3068\u306B\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u7A7A\u6B04 = \u65E2\u5B9A 10,000\u3002\u8D85\u904E\u306F\u300C\u6253\u3061\u5207\u3063\u3066\u7D9A\u884C\u300D\u8A2D\u5B9A\u3067\u3082\u5E38\u306B\u30A8\u30E9\u30FC\uFF09\u3002\u4E00\u89A7\u30DA\u30FC\u30B8\u306E\u5165\u529B\u5024\u306F localStorage \u306B\u4FDD\u5B58\u3055\u308C\u3001SQL \u5C65\u6B74\u306B\u3082\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3068\u3057\u3066\u6B8B\u308A\u307E\u3059\u3002\n\n**\u30EC\u30B3\u30FC\u30C9\uFF08\u4FDD\u5B58SQL\uFF09\u3054\u3068\u306B\u5024\u3092\u4FDD\u6301\u3059\u308B**\u306B\u306F\u3001\u4FDD\u5B58SQL\u30A2\u30D7\u30EA\u306B\u4EFB\u610F\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002\u30EC\u30B3\u30FC\u30C9\u7DE8\u96C6\u753B\u9762\u3067\u306E\u5165\u529B\u5024\u306E\u4FDD\u6301\u3068\u3001\u4E00\u89A7\u30DA\u30FC\u30B8\u3067\u30EC\u30B3\u30FC\u30C9\u3092\u9078\u629E\u3057\u305F\u3068\u304D\u306E\u30D1\u30CD\u30EB\u53CD\u6620\u306B\u4F7F\u308F\u308C\u307E\u3059\u3002\n\n#### \u65E2\u5B58\u30A2\u30D7\u30EA\u3078\u306E\u300C\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u9650\u884C\u300D\u30D5\u30A3\u30FC\u30EB\u30C9\u8FFD\u52A0\u624B\u9806\n\nv1.11.0 \u306E\u30A2\u30D7\u30EA\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\uFF08`ksql-app-template-v1.11.0.zip`\uFF09\u306B\u306F\u8FFD\u52A0\u6E08\u307F\u3067\u3059\u3002\u305D\u308C\u4EE5\u524D\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304B\u3089\u4F5C\u6210\u3057\u305F\u65E2\u5B58\u30A2\u30D7\u30EA\u306B\u306F\u3001\u6B21\u306E\u624B\u9806\u3067\u8FFD\u52A0\u3057\u307E\u3059\u3002\n\n1. \u4FDD\u5B58SQL\u30A2\u30D7\u30EA\u306E **\u8A2D\u5B9A \u2192 \u30D5\u30A9\u30FC\u30E0** \u3092\u958B\u304F\n2. **\u6570\u5024** \u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u914D\u7F6E\u3059\u308B\uFF08\u5834\u6240\u306F\u4EFB\u610F\u3002\u300C\u6700\u5927\u53D6\u5F97\u4EF6\u6570\u300D\u306E\u8FD1\u304F\u3092\u63A8\u5968\uFF09\n3. \u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u8A2D\u5B9A\u3092\u958B\u304D\u3001\u6B21\u306E\u3068\u304A\u308A\u5165\u529B\u3057\u3066\u4FDD\u5B58\u3059\u308B\n - \u30D5\u30A3\u30FC\u30EB\u30C9\u540D: \u4EFB\u610F\uFF08\u4F8B: `\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u9650\u884C`\uFF09\n - **\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9: `\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u9650\u884C`\uFF08\u5B8C\u5168\u4E00\u81F4\u30FB\u5FC5\u9808\uFF09**\n4. **\u30A2\u30D7\u30EA\u3092\u66F4\u65B0** \u3059\u308B\n\n- \u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u8FFD\u52A0\u3057\u306A\u304F\u3066\u3082\u5F93\u6765\u3069\u304A\u308A\u52D5\u4F5C\u3057\u307E\u3059\uFF08\u30EC\u30B3\u30FC\u30C9\u3054\u3068\u306E\u4FDD\u6301\u304C\u52B9\u304B\u306A\u3044\u3060\u3051\u3067\u3001\u30D1\u30CD\u30EB\u3067\u306E\u5B9F\u884C\u3054\u3068\u6307\u5B9A\u30FBlocalStorage\u30FB\u5C65\u6B74\u306F\u4F7F\u3048\u307E\u3059\uFF09\n- \u30EC\u30B3\u30FC\u30C9\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u304C**\u7A7A\u6B04**\u306E\u5834\u5408\u306F\u300C\u65E2\u5B9A 10,000 \u3067\u5B9F\u884C\u3059\u308B\u300D\u3068\u3044\u3046\u660E\u793A\u6307\u5B9A\u306B\u306A\u308A\u307E\u3059\uFF08\u30EC\u30B3\u30FC\u30C9\u9078\u629E\u6642\u306B\u30D1\u30CD\u30EB\u3082\u7A7A\u6B04 = \u65E2\u5B9A\u3078\u623B\u308A\u307E\u3059\uFF09\n\n### \u30D0\u30C3\u30C1\u5909\u6570\uFF08`SET @var`\uFF09\n\n\u30D0\u30C3\u30C1\u5185\u3067\u5024\u3092\u4E00\u5EA6\u5B9A\u7FA9\u3057\u3001\u5F8C\u7D9A\u306E\u6587\u304B\u3089 `@\u540D\u524D` \u3067\u53C2\u7167\u3067\u304D\u307E\u3059\u3002**\u6642\u523B\u306E\u56FA\u5B9A**\u30FB**\u30D0\u30C3\u30C1 ID**\u30FB**\u6761\u4EF6\u5024\u306E\u5171\u901A\u5316\uFF08DRY\uFF09** \u306B\u4F7F\u3044\u307E\u3059\u3002\n\n```sql\nSET @now = NOW(); -- \u30D0\u30C3\u30C1\u5185\u3067\u6642\u523B\u3092\u56FA\u5B9A\uFF08ISO \u6587\u5B57\u5217\uFF09\nSET @batch_id = NOW(); -- \u30D0\u30C3\u30C1 ID \u3068\u3057\u3066\u5229\u7528\n\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u51E6\u7406\u6E08', \u51E6\u7406\u65E5\u6642 = @now, \u30D0\u30C3\u30C1ID = @batch_id\nWHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u672A\u51E6\u7406';\n```\n\n\u4E8B\u5F8C\u691C\u8A3C\u304C `WHERE \u30D0\u30C3\u30C1ID = @batch_id` \u306E\u5B8C\u5168\u4E00\u81F4\u306B\u306A\u308A\u3001`\u51E6\u7406\u65E5\u6642 >= TODAY()` \u306E\u3088\u3046\u306A\u8FD1\u4F3C\u6761\u4EF6\u304C\u4E0D\u8981\u306B\u306A\u308A\u307E\u3059\u3002\n\n| \u898F\u5247 | \u5185\u5BB9 |\n|---|---|\n| \u69CB\u6587 | `SET @\u540D\u524D = <\u5F0F>`\u3002\u5F0F\u306F**\u30EA\u30C6\u30E9\u30EB**\uFF08\u6587\u5B57\u5217\u30FB\u6570\u5024\uFF09\u30FB**\u95A2\u6570**\uFF08`NOW()` / `TODAY()` / \u6587\u5B57\u5217\u30FB\u6570\u5024\u95A2\u6570\uFF09\u30FB**\u6570\u5024\u7B97\u8853**\u30FB**\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA**\uFF08`(SELECT ...)`\u3002\u4E0B\u8A18\uFF09\u30FB**\u6587\u5B57\u5217\u914D\u5217**\uFF08`['A','B']` / `[]`\uFF09\u3002`@\u540D\u524D` \u306F\u82F1\u5B57\u304B `_` \u3067\u59CB\u307E\u308A\u82F1\u6570\u5B57\u30FB`_`\u300164 \u6587\u5B57\u4EE5\u5185\u3002\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u306F\u533A\u5225\u3057\u306A\u3044 |\n| \u53C2\u7167\u3067\u304D\u308B\u4F4D\u7F6E | \u30B9\u30AB\u30E9\u30FC\u306F **WHERE \u53F3\u8FBA\u306E\u5024** / **UPDATE \u306E SET \u5024** / **ASSERT \u306E\u30AA\u30DA\u30E9\u30F3\u30C9** / **IN \u30EA\u30B9\u30C8\u306E\u8981\u7D20**\uFF08`IN (@a,@b)`\uFF09/ **SELECT \u5B9A\u6570\u5217**\uFF08`@x AS alias`\u3001AS \u5FC5\u9808\uFF09\u3002\u914D\u5217\u306F\u5168\u6761\u4EF6\u4F4D\u7F6E\u306E\u30AB\u30C3\u30B3\u7121\u3057 **`IN @list` / `NOT IN @list`** \u3060\u3051 |\n| \u8A55\u4FA1 | `SET` \u306E\u5B9F\u884C\u6642\u306B**\u4E00\u5EA6\u3060\u3051**\u8A55\u4FA1\u3057\u3001\u4EE5\u5F8C\u306F\u5B9A\u6570\uFF08`SET @now = NOW()` \u306F\u30D0\u30C3\u30C1\u5185\u3067\u540C\u3058\u6642\u523B\u306B\u56FA\u5B9A\u3002`NOW()` \u81EA\u4F53\u306E\u610F\u5473\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09 |\n| \u578B | \u4EE3\u5165\u5024\u304B\u3089 **string / number / string array** \u3092\u6C7A\u5B9A\u3002scalar/array \u306E\u53C2\u7167\u4F4D\u7F6E\u9055\u53CD\u306F\u5168\u30D0\u30C3\u30C1\u5B9F\u884C\u524D\u306B\u62D2\u5426\u3002\u6BD4\u8F03\u306E\u578B\u898F\u5247\u306F WHERE \u3068\u540C\u4E00 |\n| \u30B9\u30B3\u30FC\u30D7 | **1 \u30D0\u30C3\u30C1\u5185\u306E\u307F**\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3068\u540C\u3058\u5BFF\u547D\uFF09\u3002\u30D0\u30C3\u30C1\u3092\u307E\u305F\u304C\u306A\u3044 |\n| \u30D0\u30C3\u30C1\u5FC5\u9808 | **2 \u6587\u4EE5\u4E0A\u306E\u30D0\u30C3\u30C1\u3067\u306E\u307F\u4F7F\u7528\u53EF**\u3002\u5358\u6587\u306E `SET`\u30FB\u5358\u6587\u3067\u306E `@\u53C2\u7167` \u306F\u30A8\u30E9\u30FC |\n| \u9759\u7684\u691C\u67FB | **\u672A\u5B9A\u7FA9\u53C2\u7167\u30FB\u524D\u65B9\u53C2\u7167\u30FB\u518D\u4EE3\u5165\u306F\u30A8\u30E9\u30FC**\uFF08\u5B9F\u884C\u524D\u306B\u691C\u51FA\uFF09\u3002\u672A\u4F7F\u7528\u306F\u8B66\u544A\u3002`SET` \u306E\u8A55\u4FA1\u306B\u5931\u6557\u3057\u305F\u5834\u5408\u306F `continueOnError` \u306B\u95A2\u308F\u3089\u305A\u30D0\u30C3\u30C1\u3092\u505C\u6B62 |\n| \u4E0A\u9650 | \u5909\u6570\u306E\u9632\u5FA1\u4E0A\u9650\u306F **64 \u500B**\u3002\u305F\u3060\u3057\u30D0\u30C3\u30C1\u5168\u4F53\u306E**\u6700\u5927 20 \u6587**\uFF08\xA725 \u5192\u982D\uFF09\u304C\u5148\u306B\u52B9\u304F\u305F\u3081\u3001`SET` \u3082 1 \u6587\u305A\u3064\u6570\u3048\u308B\u73FE\u72B6\u306E\u5B9F\u52B9\u4E0A\u9650\u306F **20 \u500B\u4EE5\u4E0B** |\n| \u6F14\u7B97 | \u5F0F\u5185\u306E `+` \u306F**\u6570\u5024\u52A0\u7B97**\u3002\u6587\u5B57\u5217\u9023\u7D50\u306F `CONCAT()` \u3092\u4F7F\u3046\u3002**SET \u306E\u53F3\u8FBA\u304B\u3089\u5225\u306E\u5909\u6570\u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093**\uFF08`SET @b = @a + 1` \u306F\u4E0D\u53EF\uFF09 |\n| \u675F\u7E1B | \u5024\u3068\u3057\u3066\u30D0\u30A4\u30F3\u30C9\uFF08\u6587\u5B57\u5217\u9023\u7D50\u3067\u306F\u306A\u3044\uFF09\u305F\u3081\u3001**SQL \u30A4\u30F3\u30B8\u30A7\u30AF\u30B7\u30E7\u30F3\u306F\u767A\u751F\u3057\u307E\u305B\u3093**\u3002\u5909\u6570\u306B\u5165\u308B\u306E\u306F\u5024\u306E\u307F\u3067\u3001\u30A2\u30D7\u30EA ID\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u30FB\u6F14\u7B97\u5B50\u306A\u3069\u8B58\u5225\u5B50\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u5316\u306F\u3067\u304D\u307E\u305B\u3093 |\n\n#### \u30B9\u30AB\u30E9\u30FC\u5909\u6570\u306E\u914D\u7F6E\u8A73\u7D30\n\n\u4E0A\u306E\u300C\u53C2\u7167\u3067\u304D\u308B\u4F4D\u7F6E\u300D\u306F\u6982\u8981\u3067\u3059\u3002\u914D\u7F6E\u306E\u6587\u6CD5\u5883\u754C\u306F\u6B21\u306E\u8868\u3092\u6B63\u3068\u3057\u307E\u3059\u3002ID \u306F parser \u3068 batch analyzer \u306E\u7279\u6027\u5316\u30C6\u30B9\u30C8\u306B\u4E00\u5BFE\u4E00\u3067\u5BFE\u5FDC\u3057\u307E\u3059\u3002\n\n| ID | \u4F7F\u3048\u308B\u914D\u7F6E | \u5883\u754C |\n|---|---|---|\n| A01 | WHERE \u306E\u6BD4\u8F03\u53F3\u8FBA | `\u5217 >= @x` \u306E\u3088\u3046\u306B\u53F3\u8FBA\u306E\u76F4\u63A5\u5024\u3068\u3057\u3066\u4F7F\u3048\u308B\u3002VALIDATE WHERE\u3001APPLY PATCH/REMOVE WHERE \u3082\u540C\u3058\u6761\u4EF6\u6587\u6CD5\u3092\u4F7F\u3046 |\n| A02 | HAVING \u306E\u6BD4\u8F03\u53F3\u8FBA | \u96C6\u7D04\u7D50\u679C\u3068\u306E\u6BD4\u8F03\u53F3\u8FBA\u306B\u4F7F\u3048\u308B |\n| A03 | CHECK WHEN \u6761\u4EF6 | \u6BD4\u8F03\u53F3\u8FBA\u306B\u4F7F\u3048\u308B\u3002CHECK \u306E\u8A55\u4FA1\u884C\u306F \xA717.3 \u3092\u53C2\u7167 |\n| A04 | CASE / IF \u6761\u4EF6 | \u6761\u4EF6\u5185\u306E\u6BD4\u8F03\u53F3\u8FBA\u306B\u4F7F\u3048\u308B |\n| A05 | KLIKE \u53F3\u8FBA | `\u5217 KLIKE @x` / `\u5217 NOT KLIKE @x` \u306E\u30D1\u30BF\u30FC\u30F3\u5024\u306B\u4F7F\u3048\u308B |\n| A06 | IN \u30EA\u30B9\u30C8\u8981\u7D20 | \u30B9\u30AB\u30E9\u30FC\u5909\u6570\u3092 `IN (@a, @b)` \u306E\u8981\u7D20\u306B\u4F7F\u3048\u308B |\n| A07 | \u30AB\u30C3\u30B3\u7121\u3057 IN | \u6587\u5B57\u5217\u914D\u5217\u5909\u6570\u3060\u3051\u3092 `IN @list` / `NOT IN @list` \u306B\u4F7F\u3048\u308B |\n| A08 | SELECT \u5B9A\u6570\u5217 | `SELECT @x AS alias`\uFF08AS \u5FC5\u9808\uFF09\u3067\u30B9\u30AB\u30E9\u30FC\u5024\u3092\u5217\u3068\u3057\u3066\u5B9F\u4F53\u5316\u3067\u304D\u308B |\n| A09 | IMPORT SELECT \u5C04\u5F71 | IMPORT \u306E SELECT \u5C04\u5F71\u3067\u3082 `@x AS alias`\uFF08AS \u5FC5\u9808\uFF09\u3092\u4F7F\u3048\u308B |\n| A10 | UPDATE SET \u5024 | \u901A\u5E38 UPDATE \u306E SET \u53F3\u8FBA\u306E\u76F4\u63A5\u5024\u306B\u4F7F\u3048\u308B |\n| A11 | UPDATE FROM SET \u5024 | UPDATE FROM \u306E SET \u53F3\u8FBA\u306E\u76F4\u63A5\u5024\u306B\u3082\u4F7F\u3048\u308B |\n| A12 | ASSERT \u30AA\u30DA\u30E9\u30F3\u30C9 | \u6BD4\u8F03\u30FBBETWEEN \u306E\u76F4\u63A5\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u4F7F\u3048\u308B |\n| A13 | SET \u306E\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185 | \u5148\u884C\u5909\u6570\u3092 `(SELECT ... WHERE \u5217 = @a)` \u306E\u3088\u3046\u306B\u53C2\u7167\u3067\u304D\u308B\u3002\u5916\u5074\u306E SET \u5F0F\u3068\u306F\u5225\u6271\u3044 |\n| A14 | SELECT \u5217\u306E\u7B97\u8853\u30AA\u30DA\u30E9\u30F3\u30C9 | `SELECT (\u58F2\u4E0A * 100) / @total AS \u69CB\u6210\u6BD4` \u306E\u3088\u3046\u306B\u6570\u5024\u5909\u6570\u3092\u76F4\u63A5\u4F7F\u3048\u308B |\n\n| ID | \u4F7F\u3048\u306A\u3044\u914D\u7F6E | \u5883\u754C |\n|---|---|---|\n| R01 | VALUES \u306E\u76F4\u63A5\u8981\u7D20 | INSERT / UPSERT / APPEND \u306E `VALUES (@x)` \u306F\u4E0D\u53EF\u3002VALUES \u304C\u53D7\u7406\u3059\u308B CASE / IF \u306E\u5185\u90E8\u3067\u306F\u6761\u4EF6\u30FB\u5F0F\u306B\u5909\u6570\u304C\u5165\u308A\u5F97\u308B |\n| R02 | \u4EF6\u6570\u30FB\u4F4D\u7F6E\u3092\u8868\u3059\u56FA\u5B9A\u6570\u5024\u53E5 | `LIMIT @n` / `OFFSET @n` \u306F\u4E0D\u53EF\u3002EXPECT ROWS / REJECT LIMIT \u3082\u5909\u6570\u5316\u3067\u304D\u306A\u3044 |\n| R03 | \u6761\u4EF6\u5DE6\u8FBA\u30FB\u69CB\u9020\u4F4D\u7F6E | `@x = \u5217` \u306F\u4E0D\u53EF\u3002GROUP BY / ORDER BY\u3001\u30A2\u30D7\u30EA ID\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u30FB\u6F14\u7B97\u5B50\u306A\u3069\u306E\u8B58\u5225\u5B50\u4F4D\u7F6E\u306B\u3082\u7F6E\u3051\u306A\u3044 |\n| R04 | \u5916\u5074\u306E SET / DECLARE \u5F0F | `SET @b = @a / 2` \u3068 `DECLARE @b = @a` \u306F\u4E0D\u53EF\u3002A13 \u306E SET \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3060\u3051\u304C\u5148\u884C\u5909\u6570\u53C2\u7167\u306E\u4F8B\u5916 |\n| R05 | ASCII \u898F\u5247\u5916\u306E\u5909\u6570\u540D | \u5909\u6570\u540D\u306F `@[A-Za-z_][A-Za-z0-9_]{0,63}`\uFF08\u6700\u5927 64 \u6587\u5B57\uFF09\u3067\u3001\u540D\u524D\u306F\u5C0F\u6587\u5B57\u3078\u6B63\u898F\u5316\u3055\u308C\u308B\u3002`@max\u91D1\u984D` \u306F `@max` \u3068 `\u91D1\u984D` \u306E 2 \u30C8\u30FC\u30AF\u30F3\u306B\u5206\u304B\u308C\u3001\u5909\u6570\u540D\u3068\u3057\u3066\u53D7\u7406\u3055\u308C\u306A\u3044 |\n\nSELECT \u5217\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F\u6570\u5024\u304B\u3089\u59CB\u307E\u308B\u7B97\u8853\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u3068\u3057\u3066\u5909\u6570\u3092\u4F7F\u3048\u307E\u3059\u3002\u6761\u4EF6\u306E\u6BD4\u8F03\u53F3\u8FBA\u3092 `@avg / 2` \u306E\u3088\u3046\u306A\u4E00\u822C\u5F0F\u306B\u3059\u308B\u3053\u3068\u3001\u65E2\u5B58\u5909\u6570\u304B\u3089\u5225\u306E SET \u5909\u6570\u3092\u76F4\u63A5\u5C0E\u51FA\u3059\u308B\u3053\u3068\u3001VALUES \u306E\u76F4\u63A5\u8981\u7D20\u306B\u7F6E\u304F\u3053\u3068\u306F\u5F15\u304D\u7D9A\u304D\u3067\u304D\u307E\u305B\u3093\u3002SET \u3067\u6D3E\u751F\u5024\u304C\u5FC5\u8981\u306A\u3089\u5143\u306E\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u540C\u6642\u306B\u8A08\u7B97\u3057\u307E\u3059\u3002\n\n#### \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u4EE3\u5165 `SET @x = (SELECT ...)`\n\n`SET` \u306E\u53F3\u8FBA\u306B**\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA**\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002**\u4EF6\u6570\u30B2\u30FC\u30C8\u306E DRY \u5316**\u304C\u4E3B\u7528\u9014\u3067\u3059\u3002\n\n```sql\nSET @cnt = (SELECT COUNT(*) FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406'));\nASSERT @cnt BETWEEN 0 AND 10000;\nUPDATE APP100 SET \u5BFE\u8C61\u4EF6\u6570\u30E1\u30E2 = @cnt WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n```\n\n| \u898F\u5247 | \u5185\u5BB9 |\n|---|---|\n| \u8A55\u4FA1 | `SET` \u306E\u5B9F\u884C\u6642\u306B**\u4E00\u5EA6\u3060\u3051**\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u3057\u3001\u4EE5\u5F8C\u306F\u5B9A\u6570\uFF08\u540C\u3058\u5909\u6570\u3092\u8907\u6570\u6587\u3067\u53C2\u7167\u3057\u3066\u3082\u518D\u5B9F\u884C\u3057\u306A\u3044\uFF09 |\n| \u30B9\u30AB\u30E9\u30FC\u4FDD\u8A3C | \u30B5\u30D6\u30AF\u30A8\u30EA\u306F**\u5FC5\u305A 1 \u884C 1 \u5217**\u30020 \u884C\u30FB\u8907\u6570\u884C\u30FB\u8907\u6570\u5217\u306F\u30A8\u30E9\u30FC\u3002\u660E\u793A\u5217\u3067 2 \u5217\u4EE5\u4E0A\u306F\u30D1\u30FC\u30B9\u6642\u3001`SELECT *` \u7B49\u306F\u5B9F\u884C\u6642\u306B\u691C\u8A3C\u3002\u203B **GROUP BY \u306A\u3057\u306E\u96C6\u8A08\u306F 0 \u4EF6\u3067\u3082 1 \u884C\uFF08`COUNT` \u306F `0`\uFF09** \u3092\u8FD4\u3059\uFF08\xA78\uFF09\u305F\u3081 `COUNT(*)` \u4EF6\u6570\u53D6\u5F97\u306F 0 \u4EF6\u3067\u3082\u6210\u7ACB |\n| \u53C2\u7167 | \u30B5\u30D6\u30AF\u30A8\u30EA\u306F**\u5148\u884C\u3057\u3066\u4F5C\u6210\u3057\u305F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB**\u30FB**\u5148\u884C\u3057\u3066\u5B9A\u7FA9\u3057\u305F\u5909\u6570**\uFF08`(SELECT ... WHERE k < @prev)`\uFF09\u3092\u53C2\u7167\u53EF\u3002\u672A\u5B9A\u7FA9\u30FB\u524D\u65B9\u53C2\u7167\u306F\u5B9F\u884C\u524D\u306B\u691C\u51FA |\n| \u5F8C\u7F6E\u7B97\u8853 | \u30B5\u30D6\u30AF\u30A8\u30EA\u7D50\u679C\u3078\u306E\u7B97\u8853\u306F\u4E0D\u53EF\uFF08`(SELECT ...) * 2` \u306F\u4E0D\u53EF \u2192 `(SELECT COUNT(*) * 2 FROM ...)` \u3068\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\uFF09 |\n| \u30A8\u30E9\u30FC | \u8A55\u4FA1\u5931\u6557\uFF080 \u884C\u30FB\u8907\u6570\u884C\u30FB\u8907\u6570\u5217\u30FBAPI \u30A8\u30E9\u30FC\uFF09\u306F `ArgumentError` \u3067\u3001**`continueOnError` \u306B\u95A2\u308F\u3089\u305A\u30D0\u30C3\u30C1\u3092\u505C\u6B62**\uFF08fail-fast\u3002`ASSERT` \u5931\u6557\u306E\u505C\u6B62\uFF1D`assertion` \u3068\u306F\u533A\u5225\uFF09 |\n| EXPLAIN | \u30D0\u30C3\u30C1 EXPLAIN \u304C `SET @x = (SELECT ...)` \u306E\u30B5\u30D6\u30AF\u30A8\u30EA\u8A08\u753B\uFF08APP\uFF0F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\u30FB1 \u56DE\u8A55\u4FA1\uFF09\u3092\u8868\u793A |\n\n#### \u5916\u90E8\u30D1\u30E9\u30E1\u30FC\u30BF\u6CE8\u5165 `DECLARE @x = default`\n\n```sql\nDECLARE @since = '2026-01-01';\nSELECT * FROM APP100 WHERE \u767B\u9332\u65E5 >= @since;\n```\n\n- \u672A\u6CE8\u5165\u6642\u306F\u65E2\u5B9A\u5024\u3092\u5B9F\u884C\u6642\u306B1\u56DE\u8A55\u4FA1\u3002CLI \u306E `--var since=2026-07-01`\u3001MCP `variables: { \"since\": \"2026-07-01\" }` \u3067\u6587\u5B57\u5217\u5024\u3092\u4E0A\u66F8\u304D\u3067\u304D\u308B\u3002\u6CE8\u5165\u6642\u306F\u65E2\u5B9A\u5024\u5F0F\u3092\u8A55\u4FA1\u3057\u306A\u3044\u3002\n- \u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u3082 `DECLARE` \u6587\u306F\u5B9F\u884C\u3067\u304D\u308B\u304C\u6CE8\u5165 UI \u306F\u306A\u304F\u3001\u5E38\u306B\u65E2\u5B9A\u5024\u3092\u4F7F\u3046\u3002\n- \u30AD\u30FC\u306F `@` \u306A\u3057\u30FB\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\u3002\u672A\u5BA3\u8A00\u30AD\u30FC\u3001\u91CD\u8907\u3001\u4E0D\u6B63\u540D\u306F API \u547C\u3073\u51FA\u3057\u3084 DML \u3088\u308A\u524D\u306B\u30A8\u30E9\u30FC\u3002`SET` \u3067\u5B9A\u7FA9\u3057\u305F\u540D\u524D\u306F\u6CE8\u5165\u5BFE\u8C61\u306B\u306A\u3089\u306A\u3044\u3002\n- \u65E2\u5B9A\u5024\u306F\u30EA\u30C6\u30E9\u30EB\u30FB`NOW()` / `TODAY()`\u30FB\u6587\u5B57\u5217/\u6570\u5024\u95A2\u6570\u30FB\u6570\u5024\u7B97\u8853\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u3001\u5225\u5909\u6570\u3001`NULL`\u3001`LOGINUSER()`\u3001`PRIMARY_ORGANIZATION()` \u306F\u4E0D\u53EF\u3002\u63A1\u7528\u5024\u306F\u6587\u5B57\u5217\u3068\u3057\u3066\u675F\u7E1B\u3059\u308B\u3002\n- `DECLARE` \u3068\u4F7F\u7528\u6587\u3092\u542B\u30802\u6587\u4EE5\u4E0A\u306E\u30D0\u30C3\u30C1\u304C\u5FC5\u8981\u3002\u5024\u306F EXPLAIN\u3001\u7D50\u679C\u30E1\u30BF\u30C7\u30FC\u30BF\u306B\u8868\u793A\u3057\u306A\u3044\u3002CLI `--var` \u306F\u30D7\u30ED\u30BB\u30B9\u4E00\u89A7\u3084\u30B7\u30A7\u30EB\u5C65\u6B74\u306B\u6B8B\u308A\u5F97\u308B\u305F\u3081\u79D8\u5BC6\u60C5\u5831\u306B\u306F\u4F7F\u308F\u306A\u3044\u3002\n\n`RELATIVE_DATE` \u6CE8\u91C8\u3092\u4ED8\u3051\u308B\u3068\u3001\u6587\u5B57\u5217\u3067\u306F\u306A\u304F kintone \u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u30C8\u30FC\u30AF\u30F3\u3092\u5B89\u5168\u306B\u675F\u7E1B\u3067\u304D\u307E\u3059\u3002\n\n```sql\nDECLARE @period RELATIVE_DATE = THIS_MONTH();\nSELECT * FROM APP100 WHERE \u53D7\u6CE8\u4E88\u5B9A\u65E5 = @period;\n-- CLI: --var period=\"FROM_TODAY(-1, MONTHS)\"\n-- MCP / library: variables: { \"period\": \"THIS_YEAR()\" }\n```\n\n- `RELATIVE_DATE` \u306F\u5909\u6570\u540D\u76F4\u5F8C\u30FB`=` \u306E\u524D\u3060\u3051\u3067\u89E3\u91C8\u3059\u308B soft keyword \u3067\u3059\u3002\u65E2\u5B9A\u5024\u306F\u5FC5\u9808\u3067\u3059\u3002\n- \u53D7\u3051\u4ED8\u3051\u308B\u306E\u306F\u65E5\u4ED8\u7CFB14\u500B\u3067\u3059: `TODAY()` / `NOW()` / `YESTERDAY()` / `TOMORROW()` /\n `FROM_TODAY(n, DAYS|WEEKS|MONTHS|YEARS)` / `THIS_WEEK([\u66DC\u65E5])` / `LAST_WEEK([\u66DC\u65E5])` /\n `NEXT_WEEK([\u66DC\u65E5])` / `THIS_MONTH([\u65E5|LAST])` / `LAST_MONTH([\u65E5|LAST])` /\n `NEXT_MONTH([\u65E5|LAST])` / `THIS_YEAR()` / `LAST_YEAR()` / `NEXT_YEAR()`\u3002\n \u5F15\u6570\u306F\u901A\u5E38\u306E WHERE \u95A2\u6570\u3068\u540C\u3058\u898F\u5247\u3067\u691C\u8A3C\u3057\u3001\u30C8\u30FC\u30AF\u30F3\u306E\u524D\u5F8C\u306B\u4F59\u5206\u306A\u5B57\u53E5\u306F\u7F6E\u3051\u307E\u305B\u3093\u3002\n `LOGINUSER()` / `PRIMARY_ORGANIZATION()`\u3001\u65E5\u4ED8\u6587\u5B57\u5217\u3001\u4EFB\u610F\u306E\u5F0F\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n- \u4F7F\u7528\u4F4D\u7F6E\u306F **WHERE \u306E\u6BD4\u8F03\u53F3\u8FBA**\u3068 **BETWEEN \u306E\u5883\u754C**\u3060\u3051\u3067\u3059\u3002HAVING / CHECK / CASE\u30FBIF /\n KLIKE / IN / SELECT \u5B9A\u6570\u5217 / UPDATE SET / ASSERT / \u7B97\u8853\u306B\u306F\u7F6E\u3051\u307E\u305B\u3093\u3002\n- `RELATIVE_DATE` \u5909\u6570\u306F DML\uFF08`UPDATE` / `DELETE` / `INSERT ... SELECT` / `UPSERT`\uFF09\u3068\n `VALIDATE` \u3067\u306F fail-closed \u3067\u3059\u3002\u9055\u53CD\u30FB\u4E0D\u6B63\u306A\u6CE8\u5165\u5024\u306F\u5909\u6570\u540D\u3092\u542B\u3080\u30A8\u30E9\u30FC\u3067\u3001API \u547C\u3073\u51FA\u3057\u524D\u306B\u505C\u6B62\u3057\u307E\u3059\u3002\n SQL \u306B\u76F4\u63A5\u66F8\u3044\u305F\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u306E\u65E2\u5B58 DML \u898F\u5247\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n- \u6CE8\u91C8\u306A\u3057 `DECLARE` \u306F\u5F93\u6765\u3069\u304A\u308A\u3001\u6CE8\u5165\u5024\u3092\u5E38\u306B\u6587\u5B57\u5217\u3068\u3057\u3066\u675F\u7E1B\u3057\u307E\u3059\u3002\n\n`TODAY()` \u306F\u66F8\u304F\u4F4D\u7F6E\u3067\u8A55\u4FA1\u4E3B\u4F53\u304C\u7570\u306A\u308A\u307E\u3059\u3002\n\n| \u66F8\u304D\u65B9 | \u675F\u7E1B\u30FB\u62BC\u3057\u4E0B\u3052 | \u6642\u523B\u30FBTZ \u306E\u57FA\u6E96 |\n|---|---|---|\n| `DECLARE @p = TODAY(); ... WHERE \u65E5\u4ED8 = @p` | `\"YYYY-MM-DD\"` \u306E\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB | kSQL \u5B9F\u884C\u74B0\u5883\u306E\u30DB\u30B9\u30C8\u6642\u8A08\u30FB\u30DB\u30B9\u30C8 TZ |\n| `WHERE \u65E5\u4ED8 = TODAY()` | `TODAY()` \u306E\u307E\u307E server \u3078\u62BC\u3057\u4E0B\u3052 | kintone \u30B5\u30FC\u30D0\u30FC\u30FB\u5229\u7528\u8005\u8A2D\u5B9A |\n| `DECLARE @p RELATIVE_DATE = TODAY(); ... WHERE \u65E5\u4ED8 = @p` | `TODAY()` \u306E\u307E\u307E server \u3078\u62BC\u3057\u4E0B\u3052 | kintone \u30B5\u30FC\u30D0\u30FC\u30FB\u5229\u7528\u8005\u8A2D\u5B9A |\n\n#### SELECT \u5B9A\u6570\u5217\u3068\u914D\u5217 IN\n\n```sql\nSET @batch = NOW();\nSET @ranks = ['A', 'B'];\nSELECT @batch AS \u30D0\u30C3\u30C1ID, \u9867\u5BA2No FROM APP100 WHERE \u9867\u5BA2\u30E9\u30F3\u30AF IN @ranks;\n```\n\n- `@x AS alias` \u306F\u6587\u5B57\u5217\u30FB\u6570\u5024\u3060\u3051\u3002\u914D\u5217\u306F SELECT \u5217\u306B\u7F6E\u3051\u306A\u3044\u3002`@x || field` \u306F\u5F93\u6765\u3069\u304A\u308A\u4E00\u822C\u30B9\u30AB\u30E9\u30FC\u5F0F\u3068\u3057\u3066\u6271\u3046\u3002\n- `IN @list` \u306F\u975E\u7A7A\u914D\u5217\u3092\u901A\u5E38\u306E literal IN \u3078\u5C55\u958B\u3059\u308B\u3002`IN (@x)` \u306F\u5F93\u6765\u3069\u304A\u308A\u30B9\u30AB\u30E9\u30FC 1 \u8981\u7D20\u3067\u3001\u914D\u5217\u5C55\u958B\u3067\u306F\u306A\u3044\u3002\n- \u7A7A\u914D\u5217\u306F `IN @empty`=\u507D\u3001`NOT IN @empty`=\u771F\u3068\u3057\u3066 AND/OR/NOT/\u62EC\u5F27\u3092\u7C21\u7D04\u3059\u308B\u3002SELECT \u306E\u6052\u507D WHERE \u306F\u30EC\u30B3\u30FC\u30C9 API \u3092\u547C\u3070\u305A\u7A7A\u5165\u529B\u3092\u5F8C\u6BB5\u3078\u6E21\u3059\u3002UPDATE/DELETE/\u975E ALL REORDER \u306E\u6700\u7D42 WHERE \u304C\u6052\u771F\u306B\u306A\u308B\u5834\u5408\u306F\u5168\u4EF6\u66F4\u65B0\u9632\u6B62\u306E\u305F\u3081\u5B9F\u884C\u524D\u30A8\u30E9\u30FC\u3001\u6052\u507D\u306F 0 \u4EF6 no-op\u3002\n\n**\u73FE\u6642\u70B9\u3067\u975E\u5BFE\u5FDC\uFF08\u4ECA\u5F8C\u306E\u30D5\u30A7\u30FC\u30BA\uFF09**: `NULL` \u306E\u4EE3\u5165\u30FB\u6570\u5024/\u6DF7\u5728\u914D\u5217\u30FB\u914D\u5217\u306E\u30B5\u30D6\u30AF\u30A8\u30EA\u4EE3\u5165\u30FB`IN (@list)` \u3067\u306E\u914D\u5217\u5C55\u958B\u30FB`SET` \u53F3\u8FBA\u3067\u306E\u5225\u5909\u6570\u53C2\u7167\u30FB\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u7D50\u679C\u3078\u306E\u7B97\u8853\u30FB\u95A2\u6570\u5F15\u6570\u3078\u306E `NOW()` \u76F4\u63A5\u6307\u5B9A\u30FB`LOGINUSER()`\u30FB`PRIMARY_ORGANIZATION()`\u3002\n\n> **`APP@profile` \u3068\u306E\u4F75\u7528**: `SET @now = NOW(); SELECT * FROM APP100@dev WHERE \u4F5C\u6210\u65E5\u6642 = @now` \u306E\u3088\u3046\u306B\u3001`@profile`\uFF08\u30A2\u30D7\u30EA\u6307\u5B9A\uFF09\u3068 `@\u5909\u6570` \u306F\u540C\u5C45\u3067\u304D\u307E\u3059\uFF08CLI / MCP \u304C profile \u3060\u3051\u3092\u5148\u306B\u6B63\u898F\u5316\u3059\u308B\u305F\u3081\u6DF7\u540C\u3057\u307E\u305B\u3093\uFF09\u3002\n\n### \u6CE8\u610F\n\n- **\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306F\u3042\u308A\u307E\u305B\u3093**\u3002\u30D0\u30C3\u30C1\u3082\u975E\u30A2\u30C8\u30DF\u30C3\u30AF\u3067\u3059\uFF08DML \u30D0\u30C3\u30C1\u5BFE\u5FDC\u5F8C\u3082\u3001\u9014\u4E2D\u5931\u6557\u6642\u306B\u524D\u534A\u306E\u307F\u53CD\u6620\u3055\u308C\u305F\u72B6\u614B\u304C\u8D77\u3053\u308A\u5F97\u307E\u3059\uFF09\n- MCP \u3067\u306F `CREATE TEMP TABLE` \u306E\u5B9F\u4F53\u5316\u7D50\u679C\u306F\u8FD4\u5374\u3055\u308C\u307E\u305B\u3093\uFF08`tempTable` \u540D\u3068 `rowCount` \u306E\u307F\uFF09\u3002\u4E2D\u9593\u7D50\u679C\u3092\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306B\u8F09\u305B\u306A\u3044\u305F\u3081\u306E\u8A2D\u8A08\u3067\u3059\n\n---", uri: "ksql://language-reference/25-batch-temp-tables" }, "26-assert": { heading: "26. ASSERT", text: '## 26. ASSERT\n\n> \u6761\u4EF6\u304C\u6210\u7ACB\u3057\u306A\u3051\u308C\u3070 `AssertError` \u3067\u5B9F\u884C\u3092\u6B62\u3081\u308B**\u5B9F\u884C\u6642\u30B2\u30FC\u30C8**\u3067\u3059\u3002DML \u524D\u306E\u4EF6\u6570\u30AC\u30FC\u30C9\u3084 CLI \u30D8\u30EB\u30B9\u30C1\u30A7\u30C3\u30AF\uFF08exit code \u76E3\u8996\uFF09\u306B\u4F7F\u3044\u307E\u3059\u3002\n\n```sql\nASSERT <\u5F0F> <\u6BD4\u8F03\u6F14\u7B97\u5B50> <\u5F0F>;\nASSERT <\u5F0F> BETWEEN <\u5F0F> AND <\u5F0F>;\n```\n\n- \u6BD4\u8F03\u6F14\u7B97\u5B50: `=` `<>` `!=` `<` `<=` `>` `>=` \u304A\u3088\u3073 `BETWEEN`\uFF08\u5883\u754C\u3092\u542B\u3080\uFF09\n- \u5F0F\u306B\u4F7F\u3048\u308B\u3082\u306E: **\u30EA\u30C6\u30E9\u30EB**\uFF08\u6570\u5024\u30FB\u6587\u5B57\u5217\uFF09\u3001**\u7B97\u8853\u5F0F**\uFF08\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u306E\u307F\uFF09\u3001**\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA**\uFF08`(SELECT ...)`\u3002APP\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3068\u3082\u53C2\u7167\u53EF\uFF09\u3001**\u30D0\u30C3\u30C1\u5909\u6570**\uFF08`@\u540D\u524D`\u3002\u2192 [\xA725 \u30D0\u30C3\u30C1\u5909\u6570](#25-\u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB)\uFF09\n- \u6BD4\u8F03\u306E\u578B\u898F\u5247\u306F WHERE \u53E5\u3068\u540C\u4E00\uFF08`=` / `<>` \u306F\u6587\u5B57\u5217\u6BD4\u8F03\u3001\u5927\u5C0F\u6BD4\u8F03\u306F\u53CC\u65B9\u304C\u6570\u5024\u306A\u3089\u6570\u5024\u6BD4\u8F03\uFF09\u3002**\u6570\u5024\u304B\u3069\u3046\u304B\u306F\u5024\u306E\u51FA\u3069\u3053\u308D\u3067\u6C7A\u307E\u308A\u307E\u3059**: \u6570\u5024\u30EA\u30C6\u30E9\u30EB\u30FB\u7B97\u8853\u5F0F\u30FB\u6570\u5024\u306E `@\u5909\u6570`\u30FB`COUNT` / `SUM` / `AVG` \u7B49\u306E\u6570\u5024\u96C6\u8A08\u30B5\u30D6\u30AF\u30A8\u30EA\uFF1D\u6570\u5024\u3002\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u30FB\u6587\u5B57\u5217\u306E `@\u5909\u6570`\uFF08\u5916\u90E8\u6CE8\u5165\u542B\u3080\uFF09\uFF1D\u6587\u5B57\u5217\uFF08\u8F9E\u66F8\u9806\u3002ISO \u65E5\u4ED8\u6587\u5B57\u5217\u306E\u6BD4\u8F03\u306F\u3053\u3061\u3089\uFF09\u3002\u7247\u65B9\u3067\u3082\u6587\u5B57\u5217\u306A\u3089\u8F9E\u66F8\u9806\u3067\u3059\uFF08v3.72.0 \u3067\u5927\u5C0F\u6BD4\u8F03\u304C\u3053\u306E\u898F\u5247\u3069\u304A\u308A\u306B\u4FEE\u6B63\u3055\u308C\u307E\u3057\u305F\u3002\u305D\u308C\u4EE5\u524D\u306F\u6570\u5024\u96C6\u8A08\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5927\u5C0F\u6BD4\u8F03\u304C\u8F9E\u66F8\u9806\u306B\u306A\u308B\u4E0D\u5177\u5408\u304C\u3042\u308A\u307E\u3059\uFF09\n\n```sql\n-- \u5178\u578B\u4F8B1: UPDATE \u524D\u306E\u4EF6\u6570\u30AC\u30FC\u30C9\n-- \uFF08UPDATE \u306E\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u53C2\u7167\u3067\u304D\u306A\u3044\u305F\u3081\u3001ASSERT \u3067\u76F4\u63A5\u4EF6\u6570\u3092\u691C\u8A3C\u3057\n-- UPDATE \u306B\u306F\u540C\u3058\u6761\u4EF6\u3092\u66F8\u304F\uFF09\nASSERT (SELECT COUNT(*) FROM APP100 WHERE \u58F2\u4E0A > 1000000) BETWEEN 1 AND 500;\n\nUPDATE APP100 SET \u72B6\u614B = \'\u5BFE\u8C61\' WHERE \u58F2\u4E0A > 1000000;\n```\n\n```sql\n-- \u5178\u578B\u4F8B2: \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u30B2\u30FC\u30C8 + SELECT-based DML \u306E\u30BD\u30FC\u30B9\u306B\u4F7F\u3046\n-- \uFF08INSERT/UPSERT ... SELECT \u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30BD\u30FC\u30B9\u5BFE\u5FDC\u306E\u305F\u3081\u3001\u691C\u8A3C\u3057\u305F #src \u3092\u305D\u306E\u307E\u307E\u66F8\u304D\u8FBC\u3081\u308B\uFF09\nCREATE TEMP TABLE #src AS\nSELECT \u9867\u5BA2\u540D, SUM(\u91D1\u984D) AS \u5408\u8A08 FROM APP200 GROUP BY \u9867\u5BA2\u540D;\n\nASSERT (SELECT COUNT(*) FROM #src) BETWEEN 1 AND 500;\n\nINSERT INTO APP300 (\u9867\u5BA2\u540D, \u5408\u8A08\u91D1\u984D) SELECT \u9867\u5BA2\u540D, \u5408\u8A08 FROM #src;\n```\n\n```bash\n# CLI \u30D8\u30EB\u30B9\u30C1\u30A7\u30C3\u30AF\uFF08\u4E0D\u6210\u7ACB\u306A\u3089 exit code 1\uFF09\nksql -e "ASSERT (SELECT COUNT(*) FROM APP1 WHERE \u7570\u5E38\u30D5\u30E9\u30B0 = \'1\') = 0"\n```\n\n### \u52D5\u4F5C\n\n- **read-only \u6271\u3044**\u3067\u3059\uFF08kintone \u306B\u66F8\u304D\u8FBC\u307E\u306A\u3044\uFF09\u3002read-only \u30D0\u30C3\u30C1\u30FBDML \u30D0\u30C3\u30C1\u306E\u3069\u3061\u3089\u306B\u3082\u66F8\u3051\u307E\u3059\u3002\u5358\u6587\u3067\u3082\u5B9F\u884C\u3067\u304D\u307E\u3059\n- \u4E0D\u6210\u7ACB\u306E\u5834\u5408\u306F `AssertError: assertion failed: <\u6761\u4EF6> (actual: <\u5B9F\u6E2C\u5024>).` \u3067\u305D\u306E\u6587\u304C\u30A8\u30E9\u30FC\u306B\u306A\u308A\u3001**\u30D0\u30C3\u30C1\u306F\u5E38\u306B\u505C\u6B62**\u3057\u307E\u3059\uFF08`continueOnError` \u6307\u5B9A\u3082\u7121\u8996\u3002\u4EE5\u964D\u306E\u6587\u306F `skipped` / `skippedReason: "assertion"`\uFF09\n- \u30D0\u30C3\u30C1\u6210\u529F\u6642\u306E ASSERT \u306F\u7D50\u679C\u3092\u6301\u305F\u306A\u3044\u6587\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\uFF08`statements[]` \u306F `status: "success"` \u306E\u307F\uFF09\n- \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F**\u5FC5\u305A 1\u884C1\u5217**\u3092\u8981\u6C42\u3057\u307E\u3059\u30020\u884C\u30FB\u8907\u6570\u884C\u306F\u5B9F\u884C\u6642 `AssertError`\uFF080\u884C\u3092 NULL \u6271\u3044\u306B\u3057\u307E\u305B\u3093\uFF09\u3002\u8907\u6570\u5217\u306F select list \u304C\u660E\u793A\u7684\u306A\u3089\u30D1\u30FC\u30B9\u6642\u306B\u62D2\u5426\u3001`SELECT *` \u7B49\u306F\u5B9F\u884C\u6642\u306B\u691C\u8A3C\u3057\u307E\u3059\n- **GROUP BY \u306A\u3057\u306E\u96C6\u8A08\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u5BFE\u8C61 0 \u4EF6\u3067\u3082 1 \u884C\uFF08COUNT \u306F `0`\uFF09\u3092\u8FD4\u3059**\uFF08\xA78\u300C0 \u4EF6\u6642\u306E\u6319\u52D5\u300D\uFF09\u305F\u3081\u3001\u4E0A\u306E CLI \u4F8B\u306E\u3088\u3046\u306A `ASSERT (SELECT COUNT(*) ... WHERE \u7570\u5E38\u6761\u4EF6) = 0` \u306E\u5065\u5168\u6027\u30C1\u30A7\u30C3\u30AF\u304C\u8A72\u5F53 0 \u4EF6\uFF08\u5065\u5168\u6642\uFF09\u306B\u6210\u7ACB\u3057\u307E\u3059\u30020 \u884C\u30A8\u30E9\u30FC\u304C\u8D77\u304D\u308B\u306E\u306F\u3001\u975E\u96C6\u8A08\u30D7\u30ED\u30FC\u30D6\u306E\u7A7A\u632F\u308A\uFF08`SELECT \u30D5\u30A3\u30FC\u30EB\u30C9 FROM ... WHERE ...` \u304C 0 \u4EF6\uFF09\u3084 GROUP BY \u4ED8\u304D\u96C6\u8A08\u304C 0 \u884C\u306B\u306A\u308B\u5834\u5408\u3067\u3059\n\n### \u5236\u9650\uFF08\u521D\u671F\u7248\uFF09\n\n| \u9805\u76EE | \u5185\u5BB9 |\n|---|---|\n| `AND` / `OR` \u306E\u8907\u5408\u6761\u4EF6 | \u975E\u5BFE\u5FDC\uFF08\u8907\u6570\u306E `ASSERT` \u6587\u306B\u5206\u3051\u3066\u66F8\u304F\uFF09 |\n| \u88F8\u306E\u5024\u306E\u307F\uFF08`ASSERT 1`\uFF09 | \u975E\u5BFE\u5FDC\uFF08\u6BD4\u8F03\u6F14\u7B97\u5B50\u307E\u305F\u306F BETWEEN \u304C\u5FC5\u9808\uFF09 |\n| \u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167 | \u975E\u5BFE\u5FDC\uFF08FROM \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u306A\u3044\u305F\u3081\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u306F\u4F7F\u7528\u53EF\uFF09 |\n| \u95A2\u6570\u547C\u3073\u51FA\u3057 | \u5F0F\u306E\u76F4\u4E0B\u3067\u306F\u975E\u5BFE\u5FDC\uFF08\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3059\u308B\uFF09 |\n| \u30B5\u30D6\u30AF\u30A8\u30EA\u76F4\u5F8C\u306E\u7B97\u8853 | \u975E\u5BFE\u5FDC\uFF08`(SELECT ...) * 2` \u306F\u4E0D\u53EF\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3059\u308B\uFF09 |\n\n> **\u6CE8\u610F\uFF08\u65E2\u5B58\u5236\u9650\u3068\u306E\u7D44\u307F\u5408\u308F\u305B\uFF09**: `UPDATE` / `DELETE` \u306E\u30B5\u30D6\u30AF\u30A8\u30EA\u3067\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\uFF08`ArgumentError: temp table references in UPDATE are not supported yet.` \u2014 \xA725\uFF09\u3002`ASSERT` \u81EA\u4F53\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u53C2\u7167\u3067\u304D\u308B\u305F\u3081\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3067\u4EF6\u6570\u3092\u691C\u8A3C\u3057\u3064\u3064\u5F8C\u7D9A\u306E `UPDATE` / `DELETE` \u306B\u306F\u540C\u3058 WHERE \u6761\u4EF6\u3092\u76F4\u63A5\u66F8\u304F\u304B\u3001\u5F8C\u7D9A\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30BD\u30FC\u30B9\u5BFE\u5FDC\u306E `INSERT` / `UPSERT ... SELECT` \u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n---', uri: "ksql://language-reference/26-assert" }, "27-flow-dialect-1": { heading: "27. Flow dialect 1", text: "## 27. Flow dialect 1\n\n> \u30D0\u30C3\u30C1\u5B9F\u884C\u30E9\u30F3\u30CA\u30FC **kSQL Flow**\uFF08\u5225\u30EA\u30DD\u30B8\u30C8\u30EA\uFF09\u306E\u305F\u3081\u306E\u62E1\u5F35\u69CB\u6587\u30BB\u30C3\u30C8\u3067\u3059\u3002\u30B9\u30AF\u30EA\u30D7\u30C8\u5148\u982D\u306B `-- @ksql dialect: 1` \u3092**\u5BA3\u8A00\u3057\u305F\u3068\u304D\u3060\u3051**\u6709\u52B9\u306B\u306A\u308A\uFF08opt-in\uFF09\u3001\u5BA3\u8A00\u306E\u306A\u3044\u30B9\u30AF\u30EA\u30D7\u30C8\uFF08dialect 0\uFF1D\u65E2\u5B9A\uFF09\u306E\u6319\u52D5\u306F\u4E00\u5207\u5909\u308F\u308A\u307E\u305B\u3093\u3002dialect 0 \u3067\u672C\u7BC0\u306E\u69CB\u6587\u3092\u4F7F\u3046\u3068\u300C`-- @ksql dialect: 1` \u306E\u5BA3\u8A00\u304C\u5FC5\u8981\u3067\u3059\u300D\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\uFF08v3.69.0\uFF09\n\n\u5BFE\u5FDC\u9762: CLI\uFF08`-f`\u30FB\u30B3\u30F3\u30BD\u30FC\u30EB\uFF09\uFF0FMCP\uFF08`ksql_validate` / `ksql_explain` / `ksql_query`\uFF09\uFF0F\u30D7\u30E9\u30B0\u30A4\u30F3\uFF0F\u516C\u5F0F API `@rex0220/kintone-sql-tools/flow`\u3002\n\n### 27.1 `-- @ksql` \u30D8\u30C3\u30C0\n\n\u30D5\u30A1\u30A4\u30EB\u5148\u982D\u306E\u9023\u7D9A\u3059\u308B\u30B3\u30E1\u30F3\u30C8\u884C\u306E\u3046\u3061 `-- @ksql key: value` \u5F62\u5F0F\u3092\u89E3\u6790\u3057\u307E\u3059\u3002\u884C\u672B\u306E `# \u30B3\u30E1\u30F3\u30C8` \u306F\u7121\u8996\u3057\u307E\u3059\u3002\n\n```sql\n-- @ksql name: monthly_sales_sync # \u8AD6\u7406\u540D\u3002\u7701\u7565\u6642\u306F null\uFF08\u30E9\u30F3\u30CA\u30FC\u304C\u30D5\u30A1\u30A4\u30EB\u540D\u3067\u88DC\u5B8C\uFF09\n-- @ksql depends_on: job_a, job_b # \u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u8AD6\u7406\u540D\u30EA\u30B9\u30C8\uFF08\u30A8\u30F3\u30B8\u30F3\u306F\u89E3\u6790\u306E\u307F\uFF09\n-- @ksql timeout: 600 # \u6B63\u306E\u6574\u6570\uFF08\u79D2\uFF09\u3002\u30A8\u30F3\u30B8\u30F3\u306F\u89E3\u6790\u306E\u307F\n-- @ksql dialect: 1 # 0 \u307E\u305F\u306F 1\u3002\u7701\u7565\u6642\u306F 0\uFF08\u65E2\u5B58\u4E92\u63DB\u30E2\u30FC\u30C9\uFF09\n```\n\n| \u898F\u5247 | \u6319\u52D5 |\n|---|---|\n| \u672A\u77E5\u306E\u30AD\u30FC | \u30A8\u30E9\u30FC\u306B\u305B\u305A**\u8B66\u544A**\uFF08\u524D\u65B9\u4E92\u63DB\uFF09 |\n| \u540C\u4E00\u30AD\u30FC\u306E\u91CD\u8907 | \u8B66\u544A\u30FB**\u6700\u521D\u306E\u5024**\u3092\u4FDD\u6301 |\n| `timeout` \u304C\u6B63\u306E\u6574\u6570\u3067\u306A\u3044 / `dialect` \u304C 0\u30FB1 \u4EE5\u5916 / `name`\u30FB`depends_on` \u304C\u7A7A | \u30A8\u30E9\u30FC\uFF08\u5B9F\u884C\u524D\u306B\u505C\u6B62\uFF09 |\n\n### 27.2 `ASSERT <\u6761\u4EF6>, '\u30E1\u30C3\u30BB\u30FC\u30B8'` / `ASSERT WARN` \u2014 \u7570\u5E38\u4E2D\u65AD\u3068\u8B66\u544A\u7D9A\u884C\n\n\u65E2\u5B58\u306E `ASSERT`\uFF08\xA726\uFF09\u306B\u3001**\u672B\u5C3E\u306E\u30E1\u30C3\u30BB\u30FC\u30B8**\u3068 **`WARN` \u4FEE\u98FE**\u304C\u52A0\u308F\u308A\u307E\u3059\u3002\u6761\u4EF6\u90E8\u306E\u6587\u6CD5\u30FB\u6BD4\u8F03\u898F\u5247\u306F \xA726 \u3068\u540C\u4E00\u3067\u3059\u3002\n\n```sql\nASSERT (SELECT COUNT(*) FROM APP100 WHERE \u91D1\u984D < 0) = 0,\n '\u3010\u7570\u5E38\u4E2D\u65AD\u3011\u30DE\u30A4\u30CA\u30B9\u306E\u58F2\u4E0A\u30C7\u30FC\u30BF\u304C\u5B58\u5728\u3059\u308B\u305F\u3081\u51E6\u7406\u3092\u505C\u6B62\u3057\u307E\u3057\u305F';\n\nASSERT WARN (SELECT COUNT(*) FROM #summary) < 10000, '\u4EF6\u6570\u304C\u60F3\u5B9A\u3088\u308A\u591A\u3044\uFF08\u7D9A\u884C\u3057\u307E\u3059\uFF09';\n```\n\n| \u5F62 | \u4E0D\u6210\u7ACB\u6642 | \u5F8C\u7D9A\u6587 |\n|---|---|---|\n| `ASSERT <\u6761\u4EF6>, 'msg'` | `AssertError`\uFF08msg \u3092\u542B\u3080\uFF09\u3067**\u4E2D\u65AD** | \u5B9F\u884C\u3057\u306A\u3044\uFF08skip\uFF09 |\n| `ASSERT WARN <\u6761\u4EF6>, 'msg'` | **\u8B66\u544A\u3092\u8A18\u9332\u3057\u3066\u7D9A\u884C** | \u5B9F\u884C\u3059\u308B |\n\n### 27.3 `EXIT SUCCESS IF <\u6761\u4EF6>, '\u30E1\u30C3\u30BB\u30FC\u30B8'` \u2014 \u6B63\u5E38\u306A\u65E9\u671F\u7D42\u4E86\n\n\u6761\u4EF6\u304C\u6210\u7ACB\u3057\u305F\u3089\u3001\u305D\u3053\u3067**\u6B63\u5E38\u7D42\u4E86**\u3057\u307E\u3059\uFF08\u5F8C\u7D9A\u6587\u306F `skippedReason: \"exit\"` \u3067 skip\u30FB\u30D0\u30C3\u30C1\u5168\u4F53\u306F\u6210\u529F\u6271\u3044\uFF09\u3002\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u5FC5\u9808\u3067\u3059\u3002\u30D0\u30C3\u30C1\u5C02\u7528\uFF08\u5358\u6587\u5B9F\u884C\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF09\u3002\n\n```sql\nEXIT SUCCESS IF (SELECT COUNT(*) FROM #summary) = 0,\n '\u96C6\u8A08\u5BFE\u8C61\u3068\u306A\u308B\u53D7\u6CE8\u30C7\u30FC\u30BF\u304C 0 \u4EF6\u306E\u305F\u3081\u30B9\u30AD\u30C3\u30D7';\n```\n\n> **ASSERT \u3068\u306E\u66F8\u304D\u5206\u3051\uFF08\u8A2D\u8A08\u4E0A\u306E\u7406\u7531\uFF09**: \u300C\u5BFE\u8C61 0 \u4EF6\u300D\u3092 ASSERT \u3067\u6B62\u3081\u308B\u3068\u3001\u6708\u521D\u3084\u4F11\u65E5\u306E\u305F\u3073\u306B\u8AA4\u30A2\u30E9\u30FC\u30C8\u304C\u51FA\u3066\u76E3\u8996\u304C\u5F62\u9AB8\u5316\u3057\u307E\u3059\u3002**\u696D\u52D9\u7570\u5E38\uFF1D`ASSERT`\uFF08\u5931\u6557\u30FB\u901A\u77E5\u5BFE\u8C61\uFF09\uFF0F\u5BFE\u8C61\u306A\u3057\uFF1D`EXIT SUCCESS IF`\uFF08\u6210\u529F\u30FB\u901A\u77E5\u4E0D\u8981\uFF09**\u3068\u8A9E\u5F59\u3092\u5206\u3051\u3066\u304F\u3060\u3055\u3044\u3002\n\n### 27.4 \u69CB\u6587\u30A8\u30A4\u30EA\u30A2\u30B9 \u2014 \u65E2\u5B58\u69CB\u6587\u3078\u306E\u6B63\u898F\u5316\n\n\u4EE5\u4E0B\u306F**\u30D1\u30FC\u30B9\u6642\u306B\u65E2\u5B58\u69CB\u6587\u3068\u540C\u4E00\u306E\u5185\u90E8\u8868\u73FE\u3078\u6B63\u898F\u5316**\u3055\u308C\u307E\u3059\uFF08\u5B9F\u884C\u30FBEXPLAIN \u306E\u6319\u52D5\u306F\u65E2\u5B58\u69CB\u6587\u3068\u540C\u4E00\uFF09\u3002\n\n| dialect 1 \u306E\u66F8\u304D\u65B9 | \u6B63\u898F\u5316\u5148\uFF08\u65E2\u5B58\uFF09 |\n|---|---|\n| `CREATE TEMP TABLE summary AS SELECT ...`\uFF08\u88F8\u540D\uFF09 | `CREATE TEMP TABLE #summary AS ...`\u3002`FROM summary` / `DROP TEMP TABLE summary` \u3082 `#summary` \u3068\u3057\u3066\u89E3\u6C7A |\n| `UPSERT INTO APPn (...) SELECT ... KEY (\u30AD\u30FC)` | `UPSERT ... ON DUPLICATE (\u30AD\u30FC)` |\n| `MERGE INTO APPn AS t USING src AS s ON t.k = s.k WHEN MATCHED THEN UPDATE SET ... WHEN NOT MATCHED THEN INSERT (...) VALUES (...)` | `UPSERT ... SELECT ... ON DUPLICATE (k)` |\n\n`MERGE` \u306E\u5236\u7D04:\n\n- \u30BF\u30FC\u30B2\u30C3\u30C8\u30FB`USING` \u30BD\u30FC\u30B9\u3068\u3082 **`AS` \u5225\u540D\u304C\u5FC5\u9808**\u3002\u30BD\u30FC\u30B9\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FBCTE\u30FB`APPn` \u3092\u6307\u5B9A\u53EF\n- `ON` \u306F **\u5358\u4E00\u30AD\u30FC\u306E\u7B49\u5024\uFF08`t.k = s.k`\uFF09\u306E\u307F**\u3002\u8907\u6570\u6761\u4EF6\u30FB\u975E\u7B49\u5024\u306F\u30A8\u30E9\u30FC\uFF08\u56DE\u907F\u7B56: \u9023\u7D50\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\uFF09\n- **`WHEN MATCHED` / `WHEN NOT MATCHED` \u306E\u4E21\u53E5\u304C\u5FC5\u9808**\u3002\u7247\u5074\u3060\u3051\u306E MERGE \u306F\u30A8\u30E9\u30FC\uFF08\u66F4\u65B0\u306E\u307F\u306F `UPDATE ... FROM`\u3001\u633F\u5165\u306E\u307F\u306F `INSERT ... SELECT` \u3092\u4F7F\u7528\uFF09\n- \u540C\u4E00\u5217\u306B\u4E21\u53E5\u3067**\u7570\u306A\u308B\u5F0F**\u3092\u4E0E\u3048\u308B\u3068\u30A8\u30E9\u30FC\uFF08`s.` \u4FEE\u98FE\u3092\u9664\u3044\u3066\u540C\u3058\u5F0F\u306A\u3089\u53EF\u30FB\u6570\u5024\u306F\u5024\u3067\u6BD4\u8F03\uFF09\n- `ON` \u306E\u30AD\u30FC\u5217\u306F INSERT \u5217\u30EA\u30B9\u30C8\u306B\u542B\u3081\u308B\u3053\u3068\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306F\u5BFE\u8C61\u5916\n- `CHECK WHEN` / `VALIDATE ONLY` / `ON ERROR SKIP` \u306F\u65E2\u5B58 UPSERT \u3068\u540C\u69D8\u306B\u4F7F\u3048\u307E\u3059\n\n### 27.5 `@NOW()` / `@TODAY()` / `@MONTH_START()` / `@NEXT_MONTH_START()` \u2014 as-of \u56FA\u5B9A\u306E\u6642\u523B\u95A2\u6570\n\n**\u30B9\u30AF\u30EA\u30D7\u30C8\u5168\u4F53\u3067\u5358\u4E00\u306E\u57FA\u6E96\u6642\u523B\uFF08as-of\uFF09**\u304B\u3089\u5C0E\u51FA\u3055\u308C\u308B\u6642\u523B\u95A2\u6570\u3067\u3059\uFF08\u5F15\u6570\u306A\u3057\u306E `()` \u56FA\u5B9A\uFF09\u3002\u5B9F\u884C\u306E\u305F\u3073\u306B\u6642\u8A08\u3092\u8AAD\u307F\u76F4\u3055\u306A\u3044\u305F\u3081\u3001\u65E5\u8DE8\u304E\u306E\u9577\u6642\u9593\u5B9F\u884C\u3067\u3082\u6587\u306E\u9593\u3067\u57FA\u6E96\u304C\u30BA\u30EC\u305A\u3001\u57FA\u6E96\u6642\u523B\u3092\u6CE8\u5165\u3059\u308C\u3070**\u904E\u53BB\u65E5\u4ED8\u3067\u306E\u518D\u96C6\u8A08\uFF08\u30D0\u30C3\u30AF\u30D5\u30A3\u30EB\uFF09\u3092\u540C\u3058\u30B9\u30AF\u30EA\u30D7\u30C8\u3067\u518D\u73FE**\u3067\u304D\u307E\u3059\u3002\n\n| \u95A2\u6570 | \u5024 | \u4F8B |\n|---|---|---|\n| `@NOW()` | as-of \u306E UTC ISO 8601\uFF08\u30DF\u30EA\u79D2\u4ED8\u304D\uFF09 | `2026-08-21T09:00:00.000Z` |\n| `@TODAY()` | as-of \u3092\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3067\u898B\u305F\u66A6\u65E5 | `2026-08-21` |\n| `@MONTH_START()` | \u305D\u306E\u66A6\u65E5\u306E\u6708\u521D | `2026-08-01` |\n| `@NEXT_MONTH_START()` | \u7FCC\u6708\u521D | `2026-09-01` |\n\n- \u4F7F\u3048\u308B\u5834\u6240: `WHERE` \u306E\u6BD4\u8F03\u30FB`SELECT` \u5217\uFF08**\u5225\u540D\u7701\u7565\u53EF**\uFF09\u30FBDML \u306E\u5024\u30FB**`INSERT ... VALUES`\uFF08v3.72.0\u301C\uFF09**\u30FB`SET` / `DECLARE` \u306E\u53F3\u8FBA\u306A\u3069\u3001\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u66F8\u3051\u308B\u4F4D\u7F6E\u3002`UPSERT ... VALUES` \u3068 APPLY \u306E\u5024\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08`INSERT ... SELECT` / `UPSERT ... SELECT` \u3067\u6CE8\u5165\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\u8A55\u4FA1\u5F8C\u306F\u901A\u5E38\u306E\u30EA\u30C6\u30E9\u30EB\u3068\u3057\u3066\u6271\u308F\u308C\u3001`WHERE` \u306E\u62BC\u3057\u4E0B\u3052\u306B\u3082\u305D\u306E\u307E\u307E\u4E57\u308A\u307E\u3059\n- \u57FA\u6E96\u6642\u523B\u3068\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u306E\u6CE8\u5165\u306F\u516C\u5F0F API\uFF08`/flow`\u30FB\u30A8\u30F3\u30B8\u30F3\u30AA\u30D7\u30B7\u30E7\u30F3 `asOf` / `timezone`\uFF09\u3067\u884C\u3044\u307E\u3059\u3002**\u7701\u7565\u6642\u306F\u5B9F\u884C\u958B\u59CB\u6642\u523B\u30FB\u5B9F\u884C\u74B0\u5883\u306E\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3**\u3067\u3059\uFF08CLI / MCP \u304B\u3089\u306E\u5B9F\u884C\u306F\u73FE\u72B6\u3053\u306E\u65E2\u5B9A\u306E\u307F\uFF09\n- \u65E5\u6642\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u306E\u7BC4\u56F2\u6BD4\u8F03\u306F**\u534A\u958B\u533A\u9593**\u3067\u66F8\u3044\u3066\u304F\u3060\u3055\u3044: `\u53D7\u6CE8\u65E5 >= @MONTH_START() AND \u53D7\u6CE8\u65E5 < @NEXT_MONTH_START()`\n\n> **`@` \u306A\u3057\u306E `TODAY()` / `NOW()` / `THIS_MONTH()` \u7B49\uFF08\xA76\uFF09\u3068\u306E\u9055\u3044**: `@` \u306A\u3057\u306F**\u6761\u4EF6\u3054\u3068 kintone \u30B5\u30FC\u30D0\u30FC\u3078\u9001\u3089\u308C\u3001kintone \u306E\u6642\u8A08\u3067\u8A55\u4FA1**\u3055\u308C\u307E\u3059\u3002as-of \u3092\u6CE8\u5165\u3057\u3066\u3082\u56FA\u5B9A\u3055\u308C\u307E\u305B\u3093\u3002dialect 1 \u30B9\u30AF\u30EA\u30D7\u30C8\u306E WHERE \u3067\u3053\u308C\u3089\u3092\u4F7F\u3046\u3068**\u8B66\u544A**\u304C\u51FA\u307E\u3059\uFF08\u518D\u73FE\u6027\u304C\u5FC5\u8981\u306A\u3089 `@` \u4ED8\u304D\u3078\u3002\u62BC\u3057\u4E0B\u3052\u6027\u80FD\u3092\u512A\u5148\u3057\u3066\u610F\u56F3\u7684\u306B\u4F7F\u3046\u5834\u5408\u306F\u8B66\u544A\u3092\u7121\u8996\u3057\u3066\u69CB\u3044\u307E\u305B\u3093\uFF09\u3002\n\n### 27.6 validate \u62E1\u5F35\u3068\u8A3A\u65AD\n\ndialect 1 \u30B9\u30AF\u30EA\u30D7\u30C8\u306B\u306F\u8FFD\u52A0\u306E\u691C\u8A3C\u304C\u50CD\u304D\u307E\u3059\u3002\u8A3A\u65AD\u306F `severity`\uFF08error / warning\uFF09\u30FB\u30B3\u30FC\u30C9\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u30FB\u4F4D\u7F6E\u3092\u6301\u3061\u307E\u3059\u3002\n\n| \u30B3\u30FC\u30C9 | \u5185\u5BB9 | \u533A\u5206 |\n|---|---|---|\n| `KSQL1001`\u301C`KSQL1006` | \u30D8\u30C3\u30C0\u306E\u672A\u77E5\u30AD\u30FC\u30FB\u91CD\u8907\u30FB\u5024\u4E0D\u6B63 | \u8B66\u544A / \u30A8\u30E9\u30FC |\n| `KSQL1101` | `LAPP_` \u8AD6\u7406\u30A2\u30D7\u30EA\u304C\u672A\u89E3\u6C7A | \u30A8\u30E9\u30FC |\n| `KSQL1201`\u301C`KSQL1203` | \u5B57\u53E5\u30FB\u69CB\u6587\u30A8\u30E9\u30FC / dialect 1 \u5BA3\u8A00\u304C\u5FC5\u8981 | \u30A8\u30E9\u30FC |\n| `KSQL1301` | UPSERT / MERGE \u306E**\u8907\u5408\u30AD\u30FC**\uFF08\u56DE\u907F\u7B56: \u9023\u7D50\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\uFF09 | \u30A8\u30E9\u30FC |\n| `KSQL1302` | \u30AD\u30FC\u306E\u578B\u304C\u6587\u5B57\u5217\uFF081\u884C\uFF09\u30FB\u6570\u5024\u4EE5\u5916 | \u30A8\u30E9\u30FC |\n| `KSQL1303` | \u30AD\u30FC\u304C**\u91CD\u8907\u7981\u6B62**\u8A2D\u5B9A\u3067\u306A\u3044\uFF08\u8A2D\u5B9A\u3092\u53D6\u5F97\u3067\u304D\u306A\u3044\u74B0\u5883\u3067\u306F\u8B66\u544A\uFF09 | \u30A8\u30E9\u30FC / \u8B66\u544A |\n| `KSQL1304` | \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3078\u306E DML\uFF08SELECT \u306F\u53EF\uFF09 | \u30A8\u30E9\u30FC |\n| `KSQL1305` | \u7D20\u306E `INSERT`\uFF08\u51AA\u7B49\u6027\u306E\u305F\u3081 UPSERT / MERGE \u3092\u63A8\u5968\u3002strict \u6307\u5B9A\u3067\u30A8\u30E9\u30FC\uFF09 | \u8B66\u544A / \u30A8\u30E9\u30FC |\n| `KSQL1306` | `@` \u306A\u3057\u6642\u523B\u95A2\u6570\u306F as-of \u306E\u5BFE\u8C61\u5916 | \u8B66\u544A |\n\n- `KSQL1301`\u301C`KSQL1304` \u306F**\u5B9F\u884C\u6642\u306B\u3082\u66F8\u8FBC API \u3092\u547C\u3076\u524D\u306B\u691C\u67FB**\u3055\u308C\u3001\u9055\u53CD\u306F\u30A8\u30E9\u30FC\u3067\u505C\u6B62\u3057\u307E\u3059\uFF08\u5B9F\u884C\u524D\u306F\u5B89\u5168\u5074\u306B\u5012\u3057\u3001\u91CD\u8907\u7981\u6B62\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3067\u304D\u306A\u3044\u5834\u5408\u3082\u30A8\u30E9\u30FC\uFF09\n- \u8907\u5408\u30AD\u30FC\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DML \u306F **dialect 0 \u3067\u306F\u5F93\u6765\u3069\u304A\u308A**\u4F7F\u3048\u307E\u3059\uFF08\u672C\u691C\u8A3C\u306F dialect 1 \u9650\u5B9A\uFF09\n\n### 27.7 EXPLAIN \u306E\u63A8\u5B9A API \u6D88\u8CBB\n\n`@NOW()` \u7B49\u306E as-of \u95A2\u6570\u306F **EXPLAIN / dry-run \u7D4C\u8DEF\u3067\u3082\u8A55\u4FA1**\u3055\u308C\u307E\u3059\uFF08\u57FA\u6E96\u6642\u523B\u306F EXPLAIN \u958B\u59CB\u6642\u306B\u78BA\u5B9A\u3002\u516C\u5F0F API `explainScript` \u3067\u306F `asOf` / `timezone` \u3092\u6CE8\u5165\u53EF\u80FD\u30FBv3.70.0\uFF09\u3002\n\ndialect 1 \u30D0\u30C3\u30C1\u306E `EXPLAIN` \u306B\u306F\u3001\u5404\u6587\u306E**\u63A8\u5B9A API \u6D88\u8CBB**\uFF08HTTP \u30EA\u30AF\u30A8\u30B9\u30C8\u5358\u4F4D\uFF09\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3059\u3002\u8AAD\u53D6\uFF08500 \u4EF6/\u56DE\uFF09\u30FB\u30D5\u30A9\u30FC\u30E0\u60C5\u5831\u53D6\u5F97\u30FBUPSERT \u306E\u4E8B\u524D GET\uFF08\u91CD\u8907\u5224\u5B9A\uFF09\u30FB\u66F8\u8FBC\uFF08100 \u4EF6/\u56DE\uFF09\u3092\u5206\u89E3\u3057\u3066\u8868\u793A\u3057\u3001\u5B9F\u884C\u524D\u306B\u4EF6\u6570\u304C\u5206\u304B\u3089\u306A\u3044\u9805\u306F\u300C**\u4E0D\u660E\uFF08\u4E0A\u9650 N \u3068\u4EEE\u5B9A: \u6700\u5927 M \u56DE\uFF09**\u300D\u306E\u5F62\u5F0F\u3067\u793A\u3057\u307E\u3059\uFF08\u6570\u5B57\u3092\u634F\u9020\u3057\u307E\u305B\u3093\uFF09\u3002`bulkRequest` \u306F\u672A\u5B9F\u88C5\u306E\u305F\u3081\u3001\u66F8\u8FBC\u306F 1 \u30EA\u30AF\u30A8\u30B9\u30C8 100 \u4EF6\u3067\u6570\u3048\u307E\u3059\u3002\n\n### 27.8 \u30B5\u30F3\u30D7\u30EB\u30B8\u30E7\u30D6\uFF08\u5168\u90E8\u5165\u308A\uFF09\n\n```sql\n-- @ksql name: monthly_sales_sync\n-- @ksql depends_on: sync_master_customers\n-- @ksql timeout: 600\n-- @ksql dialect: 1\n\n-- Step 1: \u696D\u52D9\u7570\u5E38\u306A\u3089\u4E2D\u65AD\uFF08\u901A\u77E5\u5BFE\u8C61\uFF09\nASSERT (\n SELECT COUNT(*) FROM LAPP_\u53D7\u6CE8\n WHERE \u53D7\u6CE8\u65E5 >= @MONTH_START() AND \u53D7\u6CE8\u65E5 < @NEXT_MONTH_START() AND \u91D1\u984D < 0\n) = 0, '\u3010\u7570\u5E38\u4E2D\u65AD\u3011\u30DE\u30A4\u30CA\u30B9\u306E\u58F2\u4E0A\u30C7\u30FC\u30BF\u304C\u5B58\u5728\u3059\u308B\u305F\u3081\u51E6\u7406\u3092\u505C\u6B62\u3057\u307E\u3057\u305F';\n\n-- Step 2: \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u96C6\u8A08\uFF08\u88F8\u540D\u306F #\u4ED8\u304D\u306B\u6B63\u898F\u5316\u3055\u308C\u308B\uFF09\nCREATE TEMP TABLE temp_monthly_summary AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, COUNT(\u30EC\u30B3\u30FC\u30C9\u756A\u53F7) AS \u53D7\u6CE8\u4EF6\u6570, SUM(\u91D1\u984D) AS \u5F53\u6708\u58F2\u4E0A\u5408\u8A08\nFROM LAPP_\u53D7\u6CE8\nWHERE \u53D7\u6CE8\u65E5 >= @MONTH_START() AND \u53D7\u6CE8\u65E5 < @NEXT_MONTH_START() AND \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8\u5B8C\u4E86'\nGROUP BY \u9867\u5BA2\u30B3\u30FC\u30C9;\n\n-- Step 3: \u5BFE\u8C61 0 \u4EF6\u306F\u6B63\u5E38\u7D42\u4E86\uFF08\u901A\u77E5\u4E0D\u8981\uFF09\nEXIT SUCCESS IF (SELECT COUNT(*) FROM temp_monthly_summary) = 0,\n '\u96C6\u8A08\u5BFE\u8C61\u3068\u306A\u308B\u53D7\u6CE8\u30C7\u30FC\u30BF\u304C 0 \u4EF6\u306E\u305F\u3081\u30B9\u30AD\u30C3\u30D7';\n\n-- Step 4: \u30AD\u30FC\u4E00\u81F4\u3067\u66F4\u65B0\u30FB\u306A\u3051\u308C\u3070\u633F\u5165\uFF08\u30AD\u30FC\u306F\u91CD\u8907\u7981\u6B62\u8A2D\u5B9A\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\uFF09\nUPSERT INTO LAPP_\u9867\u5BA2\u30DE\u30B9\u30BF (\u9867\u5BA2\u30B3\u30FC\u30C9, \u5F53\u6708\u53D7\u6CE8\u4EF6\u6570, \u5F53\u6708\u58F2\u4E0A\u5B9F\u7E3E, \u6700\u7D42\u96C6\u8A08\u65E5\u6642)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u53D7\u6CE8\u4EF6\u6570, \u5F53\u6708\u58F2\u4E0A\u5408\u8A08, @NOW()\nFROM temp_monthly_summary\nKEY (\u9867\u5BA2\u30B3\u30FC\u30C9);\n```\n\n### 27.9 \u516C\u5F0F API `/flow` \u306E\u5B9F\u884C\u4E0A\u9650\u30AA\u30D7\u30B7\u30E7\u30F3\n\n- **\u8AAD\u53D6\u4E0A\u9650 `maxRecords`\uFF08\u65E2\u5B9A 10,000\uFF09**: \u6587\u5358\u4F4D\u306E\u8AAD\u53D6\u5019\u88DC\u884C\u6570\u4E0A\u9650\u3002`createExecutionContext` \u306E options \u3067\u6307\u5B9A\u3057\u3001`executeStatement`\uFF0F`previewStatement` \u306F\u540C\u3058\u5B9F\u884C\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306E\u5024\u3092\u5171\u6709\u3057\u307E\u3059\u3002`explainScript` \u306F\u81EA\u8EAB\u306E options \u306E `maxRecords` \u3092\u4F7F\u3044\u307E\u3059\uFF08\u5B9F\u884C\u30FBpreview\u30FBEXPLAIN \u306E 3 \u9762\u3067\u540C\u5024\u30FB\u5B9F\u6E2C v3.72.0\uFF09\n- **\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5B9F\u4F53\u5316\u4E0A\u9650 `tempTableMaxRows`\uFF08\u65E2\u5B9A 10,000\u30FB\u72EC\u7ACB\uFF09**: \u8D85\u904E\u306F `onLimitReached` \u306B\u304B\u304B\u308F\u3089\u305A\u5E38\u306B\u30A8\u30E9\u30FC\u3067\u3059\u3002`maxRecords` \u3060\u3051\u5F15\u304D\u4E0A\u3052\u3066\u3082 10,000 \u884C\u8D85\u306E\u5B9F\u4F53\u5316\u306F\u505C\u6B62\u3059\u308B\u305F\u3081\u3001\u5B9F\u4F53\u5316\u3092\u4F34\u3046\u30D0\u30C3\u30C1\u3067\u306F\u4E21\u65B9\u3092\u4F75\u305B\u3066\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: `{ maxRecords: 25000, tempTableMaxRows: 25000 }`\uFF09\n- **\u5024\u306E\u4E0A\u9650\u306F\u8A2D\u3051\u3066\u3044\u307E\u305B\u3093**\uFF08\u6B63\u306E\u6574\u6570\u3092\u53D7\u7406\uFF09\u3002\u305F\u3060\u3057\u8AAD\u53D6\u306F fetch-all \u65B9\u5F0F\u3067\u5019\u88DC\u884C\u304C\u5168\u4EF6\u30E1\u30E2\u30EA\u306B\u8F09\u308B\u305F\u3081\u3001\u300C\u53D7\u7406\u3055\u308C\u308B\u300D\u3053\u3068\u3068\u300C\u305D\u306E\u898F\u6A21\u3067\u52D5\u4F5C\u304C\u5B9F\u6E2C\u6E08\u307F\u3067\u3042\u308B\u300D\u3053\u3068\u306F\u5225\u3067\u3059\u3002\u5927\u304D\u306A\u5024\u3092\u5E38\u7528\u3059\u308B\u5834\u5408\u306F\u3001\u547C\u3073\u51FA\u3057\u5074\uFF08\u30E9\u30F3\u30CA\u30FC\u7B49\uFF09\u3067\u904B\u7528\u4E0A\u306E\u4E0A\u9650\u3092\u691C\u8A3C\u3059\u308B\u3053\u3068\u3092\u63A8\u5968\u3057\u307E\u3059\n\n---", uri: "ksql://language-reference/27-flow-dialect-1" } } }, recipes: { title: "kSQL \u30D0\u30C3\u30C1\u8A2D\u8A08\u30EC\u30B7\u30D4\u96C6", index: "# kSQL \u30D0\u30C3\u30C1\u8A2D\u8A08\u30EC\u30B7\u30D4\u96C6 index\n\nSafe, rerunnable batch design recipes for CLI, MCP, and the plugin.\n\nSource: `docs/ksql_batch_recipes.md`\n\n## \u8A2D\u8A08\u539F\u5247\uFF08\u30EA\u30E9\u30F3\u53EF\u80FD\u30D0\u30C3\u30C1\uFF09\n\nkSQL \u30D0\u30C3\u30C1\u306F**\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u3092\u6301\u305F\u305A\u975E\u30A2\u30C8\u30DF\u30C3\u30AF**\u3067\u3059\u3002\u3044\u3064\u5931\u6557\u3057\u3066\u3082**\u5148\u982D\u304B\u3089\u306E\u30EA\u30E9\u30F3\u3060\u3051\u3067\u6B63\u3057\u304F\u56DE\u5FA9\u3067\u304D\u308B**\u8A2D\u8A08\u306B\u3057\u307E\u3059\u3002\n\n1. **\u30B9\u30C6\u30FC\u30BF\u30B9\u99C6\u52D5**: \u5BFE\u8C61\u3092\u300C\u672A\u51E6\u7406 \u2192 \u51E6\u7406\u4E2D \u2192 \u51E6\u7406\u6E08\u300D\u3067\u7BA1\u7406\u3059\u308B\u3002\n2. **\u4E2D\u65AD\u5FA9\u65E7\u3092\u5148\u982D\u306B**: \u524D\u56DE\u306E\u4E2D\u65AD\u3067\u300C\u51E6\u7406\u4E2D\u300D\u306B\u6B8B\u3063\u305F\u5BFE\u8C61\u3092\u3001\u30EA\u30E9\u30F3\u5192\u982D\u3067\u300C\u672A\u51E6\u7406\u300D\u306B\u623B\u3059\uFF08R1 \u306E 0\uFF09\u3002\u3053\u308C\u304C\u7121\u3044\u3068 claim-first \u306F\u300C\u51E6\u7406\u4E2D\u300D\u3092\u62FE\u3048\u305A\u56DE\u5FA9\u3067\u304D\u306A\u3044\u3002\n3. **\u78BA\u4FDD \u2192 \u672C\u51E6\u7406 \u2192 \u5B8C\u4E86 \u306E\u9806\uFF08fail-fast\uFF09**: \u5BFE\u8C61\u3092\u81EA\u5206\u306E\u30D0\u30C3\u30C1 ID \u3067\u300C\u51E6\u7406\u4E2D\u300D\u306B\u78BA\u4FDD \u2192 \u30DE\u30B9\u30BF\u66F8\u304D\u8FBC\u307F \u2192 \u300C\u51E6\u7406\u6E08\u300D\u3002\u9014\u4E2D\u5931\u6557\u306F fail-fast \u3067\u5F8C\u6BB5\u306B\u9032\u307E\u305A\u3001\u6B21\u56DE\u30EA\u30E9\u30F3\u3067 0\uFF09\u304C\u56DE\u53CE\u3057\u3066\u518D\u51E6\u7406\u3059\u308B\u3002\u203B \u90E8\u5206\u6210\u529F\u3092\u691C\u51FA\u3057\u3066\u5DEE\u5206\u3060\u3051\u66F4\u65B0\u3059\u308B\u4ED5\u7D44\u307F\u3067\u306F\u306A\u3044\u3002\n4. **\u4EF6\u6570\u30B2\u30FC\u30C8**: \u78BA\u4FDD\u5BFE\u8C61\u306E\u4E0A\u9650\u306F\u78BA\u4FDD\u306E\u524D\u306B\u3001\u5B9F\u969B\u306B\u78BA\u4FDD\u3067\u304D\u305F\u4EF6\u6570\u306F\u78BA\u4FDD\u306E\u5F8C\u306B ASSERT \u3059\u308B\u3002**v3.72.0 \u672A\u6E80\u306E\u30A8\u30F3\u30B8\u30F3\u3067\u306F\u3001\u30B5\u30D6\u30AF\u30A8\u30EA\u4EF6\u6570\u306E\u5927\u5C0F\u6BD4\u8F03\u30FBBETWEEN \u304C\u8F9E\u66F8\u9806\u306B\u306A\u308B\u4E0D\u5177\u5408\uFF08B171\uFF09\u304C\u3042\u308A\u3001\u672C\u66F8\u306E\u30B2\u30FC\u30C8\u4F8B\u306F\u6841\u8DE8\u304E\u3067\u8AA4\u52D5\u4F5C\u3057\u307E\u3059\u3002v3.72.0 \u4EE5\u4E0A\u3067\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5B9F\u6E2C\u30FBv3.72.0\uFF09**\u3002**\u5DEE\u5206 0 \u4EF6\u3092\u6B63\u5E38\u3068\u3059\u308B\u304B\u7570\u5E38\u3068\u3059\u308B\u304B\u306F\u904B\u7528\u3067\u9078\u3076**\uFF08\u4E0B\u8A18\uFF09\u3002\n5. **\u51AA\u7B49**: `UPSERT`\uFF08\u30AD\u30FC\u4E00\u81F4\u3067\u66F4\u65B0\u30FB\u306A\u3051\u308C\u3070\u633F\u5165\uFF09\u3002\u305F\u3060\u3057**\u30AD\u30FC\u304C\u30BD\u30FC\u30B9\u30FB\u30DE\u30B9\u30BF\u53CC\u65B9\u3067\u4E00\u610F**\u304C\u524D\u63D0\u3002\n6. **\u6642\u523B\u30FB\u30D0\u30C3\u30C1 ID \u306E\u56FA\u5B9A**: `SET @now = NOW()` \u3092 1 \u56DE\u3060\u3051\u8A55\u4FA1\u3057\u3001\u78BA\u4FDD\u30FB\u5B8C\u4E86\u30FB\u7A81\u5408\u3067\u4F7F\u3044\u56DE\u3059\uFF081a \u3067\u306F `SET @b = @a` \u4E0D\u53EF\uFF09\u3002\n\n---\n\n## Sections\n\n- [R1. \u5DEE\u5206\u66F4\u65B0\u30D0\u30C3\u30C1\uFF08\u5FA9\u65E7 \u2192 \u78BA\u4FDD \u2192 \u51E6\u7406 \u2192 \u5B8C\u4E86\uFF09](ksql://recipes/r1)\n- [R2. \u4E8B\u524D\u30B2\u30FC\u30C8\uFF08\u4EF6\u6570\u30C1\u30A7\u30C3\u30AF\u30FBinserts/updates \u5185\u8A33\uFF09](ksql://recipes/r2)\n- [R3. \u66F4\u65B0\u524D\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\uFF08`#before`\uFF09](ksql://recipes/r3)\n- [R4. \u30D0\u30C3\u30C1\u5909\u6570\u306E\u6D3B\u7528\uFF08v2.1.0\uFF09](ksql://recipes/r4)\n- [R5. \u30EA\u30C6\u30E9\u30EB\u5024\u30EA\u30B9\u30C8\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5316\u3057\u3066\u4E00\u62EC\u51E6\u7406](ksql://recipes/r5)\n- [R6. \u4E0D\u826F\u30C7\u30FC\u30BF\u3092\u9694\u96E2\u3057\u3066\u6B8B\u308A\u3092\u6D41\u3059\uFF08`ON ERROR SKIP`\u30FBv2.13.0\uFF09](ksql://recipes/r6)\n- [R7. kintone \u306E REST API \u3068\u540C\u3058\u4E26\u3073\u3067\u5927\u91CF\u53D6\u5F97\u3059\u308B\uFF08`KORDER BY`\u30FBv3.0.0 / v3.1.0\uFF09](ksql://recipes/r7)\n- [R8. Shift_JIS \u3067\u51FA\u529B\u3067\u304D\u306A\u3044\u6F22\u5B57\u3092\u5909\u63DB\u3059\u308B\uFF08v3.2.0\uFF09](ksql://recipes/r8)\n- [R9. \u30C7\u30FC\u30BF\u54C1\u8CEA\u30C1\u30A7\u30C3\u30AF \u2014 \u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u30FB\u6587\u5B57\u6570\u4E88\u7B97\uFF08v3.2.0\uFF09](ksql://recipes/r9)\n- [R10. \u8868\u8A18\u306E\u6B63\u898F\u5316\u3092\u66F8\u304D\u623B\u3059\uFF08`UPDATE SET` \u306E\u6587\u5B57\u5217\u95A2\u6570\u30FBv3.2.0\uFF09](ksql://recipes/r10)\n- [R11. \u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A2\u30D7\u30EA\u3078\u53D6\u8FBC\u3080\uFF08`IMPORT`\u30FBv3.6.0\uFF09](ksql://recipes/r11)\n- [R12. cli-kintone \u3068 round-trip \u3059\u308B\uFF08`BY NAME`\u30FB\u30EC\u30B3\u30FC\u30C9\u756A\u53F7 UPDATE\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FBv3.6.0\uFF09](ksql://recipes/r12)\n- [R13. \u660E\u7D30\uFF0B\u5C0F\u8A08\u30FB\u7DCF\u8A08\u3092 1 \u30AF\u30A8\u30EA\u3067\u4F5C\u308B\uFF08`ROLLUP` / `GROUPING`\u30FBv3.17.0\uFF09](ksql://recipes/r13)\n- [R14. \u7D2F\u7A4D\u6B8B\u9AD8\uFF08\u53F0\u5E33\uFF09\u3092\u53D6\u5F15\u9806\u3067\u8A08\u7B97\u3059\u308B](ksql://recipes/r14)\n- [R15. \u5168\u4F53\u3067\u5272\u308B\uFF08\u69CB\u6210\u6BD4\u30FB\u7D2F\u7A4D\u69CB\u6210\u6BD4\u30FBABC\uFF09](ksql://recipes/r15)\n- [R16. \u524D\u6708\u6BD4\u3092\u51FA\u3059\uFF08`LAG`\uFF09](ksql://recipes/r16)\n- [R17. \u300C\u884C\u306E\u7121\u3044\u3082\u306E\u300D\u3092 0 \u3068\u3057\u3066\u4E26\u3079\u308B\uFF08\u30DE\u30B9\u30BF\u8D77\u70B9\u306E `LEFT JOIN`\uFF09](ksql://recipes/r17)\n- [R18. Flow dialect 1 \u3067\u6708\u6B21\u540C\u671F\u30B8\u30E7\u30D6\u3092\u66F8\u304F\uFF08`-- @ksql` \u30D8\u30C3\u30C0\u30FB`ASSERT`/`EXIT` \u30B2\u30FC\u30C8\u30FB`KEY()`\uFF09](ksql://recipes/r18)\n\nIndex URI: ksql://recipes", sections: { r1: { heading: "R1. \u5DEE\u5206\u66F4\u65B0\u30D0\u30C3\u30C1\uFF08\u5FA9\u65E7 \u2192 \u78BA\u4FDD \u2192 \u51E6\u7406 \u2192 \u5B8C\u4E86\uFF09", text: "## R1. \u5DEE\u5206\u66F4\u65B0\u30D0\u30C3\u30C1\uFF08\u5FA9\u65E7 \u2192 \u78BA\u4FDD \u2192 \u51E6\u7406 \u2192 \u5B8C\u4E86\uFF09\n\n\u89AA DML \u306E WHERE \u306B\u306F `IN (SELECT \u2026)` \u3092\u66F8\u3051\u306A\u3044\u305F\u3081\u3001**\u5BFE\u8C61\u3092\u30D0\u30C3\u30C1 ID \u3067\u78BA\u4FDD\u3057\u3066\u304B\u3089\u76F4\u63A5\u6761\u4EF6\u3067\u5B8C\u4E86**\u3055\u305B\u3001**\u4E2D\u65AD\u3067\u300C\u51E6\u7406\u4E2D\u300D\u306B\u6B8B\u3063\u305F\u5BFE\u8C61\u306F\u5192\u982D\u3067\u56DE\u53CE**\u3057\u307E\u3059\u3002\n\n```sql\nSET @now = NOW(); -- 1 \u56DE\u3060\u3051\u8A55\u4FA1\u3057\u3001\u78BA\u4FDD\u30FB\u5B8C\u4E86\u3067\u4F7F\u3044\u56DE\u3059\n\n-- 0) \u5FA9\u65E7: \u524D\u56DE\u306E\u4E2D\u65AD\u3067\u300C\u51E6\u7406\u4E2D\u300D\u306B\u6B8B\u3063\u305F\u5BFE\u8C61\u3092\u300C\u672A\u51E6\u7406\u300D\u306B\u623B\u3059\uFF08\u30EA\u30E9\u30F3\u56DE\u5FA9\u306E\u8981\uFF09\n-- \u78BA\u4FDD\u65E5\u6642\u306B\u7336\u4E88\u3092\u8A2D\u3051\u3001\u5F53\u65E5\u5B9F\u884C\u4E2D\u306E\u4ED6\u30D7\u30ED\u30BB\u30B9\u304C\u78BA\u4FDD\u3057\u305F\u884C\u3092\u6A2A\u53D6\u308A\u3057\u306A\u3044\n-- \uFF08WHERE \u306E \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 \u306F\u9078\u629E\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u60F3\u5B9A\u3067 IN\u3002SET \u306F = \u306E\u307E\u307E\uFF09\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u672A\u51E6\u7406'\nWHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u51E6\u7406\u4E2D') AND \u78BA\u4FDD\u65E5\u6642 < TODAY();\n\n-- 1) \u4EF6\u6570\u30B2\u30FC\u30C8\uFF08\u78BA\u4FDD\u5BFE\u8C61\u306E\u4E0A\u9650\u30020 \u4EF6\u3092\u6B63\u5E38\u306B\u3059\u308B\u306A\u3089 BETWEEN 0 \u2026\u3001\u7570\u5E38\u691C\u77E5\u3057\u305F\u3044\u306A\u3089 BETWEEN 1 \u2026\uFF09\nASSERT (SELECT COUNT(*) FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406')) BETWEEN 0 AND 10000;\n\n-- 2) \u78BA\u4FDD: \u672A\u51E6\u7406\u3092\u81EA\u5206\u306E\u30D0\u30C3\u30C1 ID \u3067\u300C\u51E6\u7406\u4E2D\u300D\u306B\uFF08\u76F4\u63A5\u6761\u4EF6\u30FB\u78BA\u4FDD\u65E5\u6642\u3082\u4ED8\u4E0E\uFF09\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u51E6\u7406\u4E2D', \u30D0\u30C3\u30C1ID = @now, \u78BA\u4FDD\u65E5\u6642 = @now\nWHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n\n-- 3) \u78BA\u4FDD\u3057\u305F\u5206\u3092\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\uFF08\u30D0\u30C3\u30C1 ID\uFF0B\u51E6\u7406\u4E2D\u306E\u76F4\u63A5\u6761\u4EF6\uFF09\nCREATE TEMP TABLE #tgt AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP100 WHERE \u30D0\u30C3\u30C1ID = @now AND \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u51E6\u7406\u4E2D');\n\n-- 4) \u78BA\u4FDD\u5F8C\u30B2\u30FC\u30C8\uFF08\u5B9F\u969B\u306B\u78BA\u4FDD\u3067\u304D\u305F\u4EF6\u6570\u306E\u4E0A\u9650\uFF09\uFF0B\u30AD\u30FC\u4E00\u610F\u30B2\u30FC\u30C8\uFF08\u51AA\u7B49\u6027\u306E\u524D\u63D0\uFF09\nASSERT (SELECT COUNT(*) FROM #tgt) <= 10000;\nASSERT (SELECT COUNT(*) FROM #tgt) = (SELECT COUNT(DISTINCT \u9867\u5BA2\u30B3\u30FC\u30C9) FROM #tgt);\n\n-- 5) \u672C\u51E6\u7406: \u30DE\u30B9\u30BF\u3078 UPSERT\uFF08UPSERT \u2026 SELECT \u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\u53EF\uFF09\nUPSERT INTO APP200 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM #tgt\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9);\n\n-- 6) \u5B8C\u4E86: \u78BA\u4FDD\u3057\u305F\u5206\u3092\u300C\u51E6\u7406\u6E08\u300D\u306B\uFF08\u76F4\u63A5\u6761\u4EF6\uFF09\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u51E6\u7406\u6E08', \u51E6\u7406\u65E5\u6642 = @now\nWHERE \u30D0\u30C3\u30C1ID = @now AND \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u51E6\u7406\u4E2D');\n```\n\n**\u306A\u305C\u3053\u306E\u5F62\u304B**\n- **0) \u306E\u5FA9\u65E7\u304C\u300C\u5148\u982D\u304B\u3089\u306E\u30EA\u30E9\u30F3\u3060\u3051\u3067\u56DE\u5FA9\u300D\u3092\u6210\u7ACB\u3055\u305B\u308B**: 5) \u3084 6) \u3067\u5931\u6557\u3059\u308B\u3068\u5BFE\u8C61\u306F\u300C\u51E6\u7406\u4E2D\u300D\u3067\u6B8B\u308B\u3002\u5FA9\u65E7\u304C\u7121\u3044\u3068\u3001\u6B21\u56DE\u30EA\u30E9\u30F3\u306F\u65B0\u3057\u3044 `@now` \u3067\u300C\u672A\u51E6\u7406\u300D\u3060\u3051\u3092\u898B\u308B\u305F\u3081\u53D6\u308A\u6B8B\u3059\u30020) \u304C\u7336\u4E88\uFF08`\u78BA\u4FDD\u65E5\u6642 < TODAY()`\uFF09\u4ED8\u304D\u3067\u56DE\u53CE\u3059\u308B\u306E\u3067\u3001\u7FCC\u5B9F\u884C\u3067\u518D\u51E6\u7406\u3055\u308C\u308B\u3002\n - **\u7336\u4E88\u306E\u610F\u5473**: `\u78BA\u4FDD\u65E5\u6642 < TODAY()` \u306F\u300C\u5F53\u65E5\u5B9F\u884C\u4E2D\u306E\u5225\u30D7\u30ED\u30BB\u30B9\u304C\u78BA\u4FDD\u3057\u305F\u884C\u3092\u6A2A\u53D6\u308A\u3057\u306A\u3044\u300D\u305F\u3081\u306E\u6700\u5C0F\u306E\u7336\u4E88\u3067\u3059\u3002\u5F53\u65E5\u4E2D\u306E\u518D\u5B9F\u884C\u3067\u56DE\u5FA9\u3057\u305F\u3044\u5834\u5408\u306F\u3001\u7336\u4E88\uFF08\u30EA\u30FC\u30B9\u671F\u9650\uFF09\u3092\u30B8\u30E7\u30D6\u5236\u5FA1\u5074\u3067\u6301\u3064\u304B\u3001\u624B\u52D5\u3067\u300C\u51E6\u7406\u4E2D \u2192 \u672A\u51E6\u7406\u300D\u306B\u623B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n- **\u78BA\u4FDD\uFF082\uFF09\u30FB\u5B8C\u4E86\uFF086\uFF09\u306F\u76F4\u63A5\u6761\u4EF6**\u3067\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u53C2\u7167\u3057\u306A\u3044 \u2192 \u5B9F\u884C\u62D2\u5426\u3092\u907F\u3051\u308B\u3002\u672C\u51E6\u7406\uFF085\uFF09\u3060\u3051\u304C `UPSERT \u2026 SELECT FROM #tgt`\uFF08\u8A31\u53EF\uFF09\u3002\n- **\u591A\u91CD\u8D77\u52D5\u306E\u7DE9\u548C**: 2) \u3067\u300C\u51E6\u7406\u4E2D\u300D\u306B\u78BA\u4FDD\u3059\u308B\u305F\u3081\u3001\u5225\u5B9F\u884C\u304C\u540C\u3058\u300C\u672A\u51E6\u7406\u300D\u3092\u4E8C\u91CD\u306B\u62FE\u3044\u306B\u304F\u3044\u3002\u305F\u3060\u3057 kintone \u306B\u30EC\u30B3\u30FC\u30C9\u30ED\u30C3\u30AF\u306F\u7121\u304F\u3001**\u78BA\u4FDD UPDATE \u81EA\u4F53\u306F\u7AF6\u5408\u3057\u5F97\u308B\uFF1D\u5B8C\u5168\u306A\u6392\u4ED6\u3067\u306F\u306A\u3044**\u3002\u5225\u5B9F\u884C\u304C\u5148\u306B\u5168\u4EF6\u78BA\u4FDD\u3059\u308B\u3068\u3001\u3053\u306E\u30D0\u30C3\u30C1\u306E\u78BA\u4FDD\u306F 0 \u4EF6\u306B\u306A\u308A\u3001\u4EE5\u964D\u306F\u300C\u3084\u308B\u3053\u3068\u306A\u3057\u300D\u3067\u6B63\u5E38\u7D42\u4E86\u3059\u308B\uFF080 \u4EF6\u3092\u8A31\u5BB9\u3059\u308B\u5834\u5408\uFF09\u3002**\u53B3\u5BC6\u306A\u6392\u4ED6\u306F\u30B8\u30E7\u30D6\u5236\u5FA1\u5074**\uFF08cron \u306E\u591A\u91CD\u8D77\u52D5\u9632\u6B62\u30FB\u30ED\u30C3\u30AF\uFF09\u3067\u4FDD\u8A3C\u3002\n - `NOW()` \u306F**\u53B3\u5BC6\u306B\u4E00\u610F\u306A ID \u3067\u306F\u306A\u3044**\uFF08\u540C\u4E00\u30DF\u30EA\u79D2\u8D77\u52D5\u3067\u540C\u5024\uFF09\u3002\u78BA\u5B9F\u306A\u4E00\u610F\u6027\u304C\u8981\u308B\u5834\u5408\u306F\u547C\u3073\u51FA\u3057\u5074\u3067\u63A1\u756A\u3057\u305F ID \u3092 `DECLARE @batchId = ...` \uFF0B CLI `--var`\uFF0FMCP `variables` \u3067\u6CE8\u5165\u3059\u308B\uFF08R4 \u53C2\u7167\uFF09\u3002\n\n**\u5DEE\u5206 0 \u4EF6\uFF08\uFF1D\u7A7A\u65E5\uFF09\u306E\u6271\u3044**\n- \u65E5\u6B21 cron \u3067\u306F\u300C\u4ECA\u65E5\u306F\u5DEE\u5206\u306A\u3057\u300D\u306F\u6B63\u5E38\u7CFB\u3067\u3059\u30021) \u3092 `BETWEEN 0 AND 10000` \u306B\u3059\u308B\u3068 0 \u4EF6\u3067\u6B63\u5E38\u7D42\u4E86\u3057\u307E\u3059\u3002`BETWEEN 1 \u2026` \u306B\u3059\u308B\u3068 0 \u4EF6\u3067 ASSERT \u5931\u6557\uFF1D\u30A2\u30E9\u30FC\u30C8\u306B\u306A\u308B\u306E\u3067\u3001**\u5DEE\u5206\u30BC\u30ED\u3092\u7570\u5E38\u3068\u3057\u3066\u691C\u77E5\u3057\u305F\u3044\u5834\u5408\u306E\u307F**\u305D\u3061\u3089\u306B\u3057\u307E\u3059\u3002\n- 0 \u4EF6\u306E\u3068\u304D `#tgt` \u306F 0 \u884C\u3067\u3001`UPSERT \u2026 SELECT FROM #tgt` \u306F **`inserted=0 / updated=0` \u306E no-op** \u3068\u3057\u3066\u305D\u306E\u307E\u307E\u5B8C\u8D70\u3057\u307E\u3059\uFF08\u66F8\u304D\u8FBC\u307F API \u3082\u547C\u3070\u308C\u307E\u305B\u3093\uFF09\u3002**v2.1.1 \u4EE5\u964D**\u306E\u6319\u52D5\u3067\u3059\uFF08v2.1.0 \u4EE5\u524D\u306F\u7A7A\u30BD\u30FC\u30B9\u306E `UPSERT \u2026 SELECT` \u304C\u300CSELECT \u306E\u5217\u6570\uFF080\uFF09\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u300D\u3067\u505C\u6B62\u3057\u305F\u305F\u3081\u3001`BETWEEN 1` \u3067 0 \u4EF6\u3092\u66F8\u304D\u8FBC\u307F\u524D\u306B\u6B62\u3081\u308B\u30FB\u547C\u3073\u51FA\u3057\u5074\u3067\u4EF6\u6570\u3092\u5148\u306B\u78BA\u8A8D\u3057\u3066\u30B9\u30AD\u30C3\u30D7\u3001\u3068\u3044\u3063\u305F\u56DE\u907F\u7B56\u304C\u5FC5\u8981\u3067\u3057\u305F\u3002v2.1.1 \u3067\u3053\u308C\u3089\u306F\u4E0D\u8981\u3067\u3059\uFF09\u3002\u5B9F\u6A5F\u3067\u3082\u5DEE\u5206 0 \u4EF6\u30EA\u30E9\u30F3\u304C\u5168\u6587 0 \u4EF6\u3067\u5B8C\u8D70\u3059\u308B\u3053\u3068\u3092\u78BA\u8A8D\u6E08\u307F\u3067\u3059\u3002\n- **v2.11.0 \u4EE5\u964D**\u306F\u3001\u540C\u3058\u7A7A\u65E5\u306B `SELECT * FROM #tgt` \u3092 `INSERT` / `UPSERT` \u30BD\u30FC\u30B9\u306B\u3057\u3066\u3082\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5B9F\u4F53\u5316\u6642\u306E\u5217\u30B9\u30AD\u30FC\u30DE\u304C\u4FDD\u6301\u3055\u308C\u308B\u305F\u3081\u540C\u3058 no-op \u3067\u5B8C\u8D70\u3057\u307E\u3059\u3002\u5217\u3092\u660E\u793A\u3059\u308B\u73FE\u884C R1 \u30EC\u30B7\u30D4\u306E\u6319\u52D5\u306F\u4E0D\u5909\u3067\u3059\u3002\n\n**\u51AA\u7B49\u6027\u30FB\u30EA\u30E9\u30F3\u306E\u6CE8\u610F**\n- **\u30AD\u30FC\u4E00\u610F\u304C\u524D\u63D0**: `#tgt`\u30FB`APP200` \u53CC\u65B9\u3067 `\u9867\u5BA2\u30B3\u30FC\u30C9` \u304C\u4E00\u610F\u306E\u3068\u304D\u3060\u3051 UPSERT \u304C\u51AA\u7B49\u3002\u30BD\u30FC\u30B9\u5185\u30AD\u30FC\u91CD\u8907\u306F\u521D\u56DE\u306B\u91CD\u8907\u767B\u9332\u3055\u308C\uFF08\u6B21\u56DE\u4EE5\u964D\u306F\u66F4\u65B0\u306B\u56DE\u308B\u306E\u3067\u7121\u9650\u306B\u306F\u5897\u3048\u306A\u3044\u304C\u3001\u3067\u304D\u305F\u91CD\u8907\u306F\u6B8B\u308A\u6B63\u3057\u3044\u56DE\u5FA9\u3082\u4FDD\u8A3C\u3067\u304D\u306A\u3044\uFF09\u30014) \u3067\u6B62\u3081\u308B\u3002\u30DE\u30B9\u30BF\u5074\u91CD\u8907\u6642\u306F\u66F4\u65B0\u304C\u6700\u5927 `$id` \u306E 1 \u4EF6\u306E\u307F\u3002\n- **\u4E8B\u5F8C\u7A81\u5408\u306F\u4EFB\u610F\uFF08\u691C\u51FA\u529B\u306F\u4E0B\u304C\u3063\u305F\uFF09**: claim-first \u3067\u306F `#tgt` \u3092\u300C\u78BA\u4FDD\u5F8C\u306E `\u30D0\u30C3\u30C1ID=@now`\u300D\u304B\u3089\u4F5C\u308A 6) \u3082\u540C\u6761\u4EF6\u3067\u66F4\u65B0\u3059\u308B\u305F\u3081\u3001`\u51E6\u7406\u6E08\u4EF6\u6570 = #tgt\u4EF6\u6570` \u306F\u307B\u307C\u81EA\u660E\uFF08\u304B\u3064\u5931\u6557\u3059\u308C\u3070 fail-fast \u3067\u5230\u9054\u3057\u306A\u3044\uFF09\u3002\u4ED8\u3051\u308B\u306A\u3089\u6B21\u3092 6) \u306E\u5F8C\u306B\u3002\n ```sql\n ASSERT (SELECT COUNT(*) FROM APP100 WHERE \u30D0\u30C3\u30C1ID = @now AND \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u51E6\u7406\u6E08'))\n = (SELECT COUNT(*) FROM #tgt);\n ```\n\n---", uri: "ksql://recipes/r1" }, r2: { heading: "R2. \u4E8B\u524D\u30B2\u30FC\u30C8\uFF08\u4EF6\u6570\u30C1\u30A7\u30C3\u30AF\u30FBinserts/updates \u5185\u8A33\uFF09", text: "## R2. \u4E8B\u524D\u30B2\u30FC\u30C8\uFF08\u4EF6\u6570\u30C1\u30A7\u30C3\u30AF\u30FBinserts/updates \u5185\u8A33\uFF09\n\n\u66F8\u304D\u8FBC\u307F\u524D\u306B\u300C\u4F55\u4EF6\u3092\u65B0\u898F\u4F5C\u6210\u3057\u3001\u4F55\u4EF6\u3092\u66F4\u65B0\u3059\u308B\u304B\u300D\u3092\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u3067\u78BA\u8A8D\u3057\u307E\u3059\uFF08\u66F8\u304D\u8FBC\u307F\u306A\u3057\uFF09\u3002\n\n```sql\nCREATE TEMP TABLE #tgt AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n\n-- \u60F3\u5B9A\u5916\u4EF6\u6570\u306A\u3089\u505C\u6B62\uFF08\u30B2\u30FC\u30C8\u306F\u5148\u982D\u306B\uFF09\nASSERT (SELECT COUNT(*) FROM #tgt) BETWEEN 1 AND 10000;\n\n-- inserts\uFF08\u30DE\u30B9\u30BF\u672A\u5B58\u5728\uFF09\u3068 updates\uFF08\u30DE\u30B9\u30BF\u5B58\u5728\uFF09\u3092 1 \u7D50\u679C\u30BB\u30C3\u30C8\u3067\n-- COUNT(\u30D5\u30A3\u30FC\u30EB\u30C9) \u306F\u7A7A\u6587\u5B57\u30FBNULL\uFF08\uFF1DLEFT JOIN \u672A\u30DE\u30C3\u30C1\uFF09\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u6570\u3048\u308B\uFF08\xA78\uFF09\nSELECT\n COUNT(*) AS \u5BFE\u8C61\u4EF6\u6570,\n COUNT(m.\u9867\u5BA2\u30B3\u30FC\u30C9) AS updates,\n COUNT(*) - COUNT(m.\u9867\u5BA2\u30B3\u30FC\u30C9) AS inserts\nFROM #tgt t LEFT JOIN APP200 m ON t.\u9867\u5BA2\u30B3\u30FC\u30C9 = m.\u9867\u5BA2\u30B3\u30FC\u30C9;\n```\n\n> **1 \u7D50\u679C\u30BB\u30C3\u30C8\u306B\u307E\u3068\u3081\u308B\u7406\u7531**: \u30D7\u30E9\u30B0\u30A4\u30F3 UI \u306F**\u6700\u5F8C\u306B\u7D50\u679C\u3092\u8FD4\u3057\u305F\u6587\u3060\u3051**\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u3001`SELECT COUNT(*)` \u3092 2 \u672C\u4E26\u3079\u308B\u3068\u4E21\u65B9\u3092\u540C\u6642\u306B\u898B\u3089\u308C\u307E\u305B\u3093\u3002LEFT JOIN \u3067 1 \u884C\u306B\u307E\u3068\u3081\u308B\u3068\u5168\u5165\u53E3\u3067\u540C\u3058\u898B\u3048\u65B9\u306B\u306A\u308A\u307E\u3059\u3002`COUNT(m.\u9867\u5BA2\u30B3\u30FC\u30C9)` \u304C\u300C\u30DE\u30B9\u30BF\u306B\u30DE\u30C3\u30C1\u3057\u305F\u4EF6\u6570\uFF08\uFF1Dupdates\uFF09\u300D\u306B\u306A\u308B\u306E\u306F [\xA78 \u96C6\u8A08\u95A2\u6570](ksql_language_reference.md#8-group-by--\u96C6\u8A08\u95A2\u6570) \u306E\u300C`COUNT(\u30D5\u30A3\u30FC\u30EB\u30C9)` \u306F\u7A7A\u6587\u5B57\u30FBNULL \u3092\u30B9\u30AD\u30C3\u30D7\u300D\u4ED5\u69D8\u306B\u3088\u308A\u307E\u3059\u3002\n\n### \u5024\u306E\u59A5\u5F53\u6027\u3082\u5148\u306B\u898B\u308B\uFF08`VALIDATE ONLY`\u30FBv2.13.0\uFF09\n\n\u4EF6\u6570\u30B2\u30FC\u30C8\u306F\u300C\u4F55\u4EF6\u304B\u300D\u3057\u304B\u898B\u307E\u305B\u3093\u3002**\u5FC5\u9808\u30FB\u578B\u30FB\u7BC4\u56F2\u30FB\u6587\u5B57\u5217\u9577\u30FB\u9078\u629E\u80A2\u30FBUPSERT \u30AD\u30FC**\u304C\u901A\u308B\u304B\u306F `VALIDATE ONLY` \u3067\u66F8\u304D\u8FBC\u307F\u30BC\u30ED\u306E\u307E\u307E\u5168\u884C\u691C\u8A3C\u3067\u304D\u307E\u3059\uFF08[\xA717.1](ksql_language_reference.md#171-validate-only\u66F8\u304D\u8FBC\u307F\u524D\u691C\u8A3C)\uFF09\u3002\n\n```sql\nCREATE TEMP TABLE #tgt AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n\n-- \u66F8\u304D\u8FBC\u307E\u305A\u306B\u5168\u884C\u691C\u8A3C\u3002#err \u306B 1 \u884C = 1 \u30A8\u30E9\u30FC\uFF081 \u884C\u306B\u8907\u6570\u30A8\u30E9\u30FC\u306A\u3089\u8907\u6570\u884C\uFF09\nUPSERT INTO APP200 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM #tgt\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\nVALIDATE ONLY INTO #err;\n\n-- \u3069\u306E\u30AD\u30FC\u304C\u306A\u305C\u843D\u3061\u308B\u304B\u3092 1 \u884C\u306B\u307E\u3068\u3081\u3066\u78BA\u8A8D\uFF08GROUP_CONCAT \u306F v2.15.0\uFF09\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, GROUP_CONCAT($err_message SEPARATOR ' / ') AS \u30A8\u30E9\u30FC\u5185\u5BB9\nFROM #err GROUP BY \u9867\u5BA2\u30B3\u30FC\u30C9;\n```\n\n- `VALIDATE ONLY` \u306F **read-only \u6271\u3044**\u3067\u3001`ksql_query` / CLI \u304B\u3089 DML \u627F\u8A8D\u306A\u3057\u306B\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF08\u66F8\u304D\u8FBC\u307F 0 \u4EF6\uFF09\u3002\n- \u305F\u3060\u3057**\u5B8C\u5168\u306A\u5165\u529B\u3092\u8981\u6C42**\u3059\u308B\u305F\u3081\u3001`truncate` \u8A2D\u5B9A\u306F\u5E38\u306B `error` \u3078\u4E0A\u66F8\u304D\u3055\u308C\u307E\u3059\u3002\n- **\u901A\u904E\u306F kintone \u306E\u66F8\u304D\u8FBC\u307F\u6210\u529F\u3092\u4FDD\u8A3C\u3057\u307E\u305B\u3093**\uFF08\u6A29\u9650\u30FB\u7AF6\u5408\u30FB\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA JS \u306A\u3069\u3001\u30ED\u30FC\u30AB\u30EB\u3067\u5224\u5B9A\u3067\u304D\u306A\u3044\u8981\u56E0\u304C\u3042\u308B\u305F\u3081\uFF09\u3002\n\n> **\u78BA\u8A8D\u624B\u6BB5\u306E\u5F79\u5272\u5206\u62C5**: \u69CB\u6587\u30FB\u9759\u7684\u691C\u67FB \u2192 `ksql_validate`\uFF08kintone\u975E\u30A2\u30AF\u30BB\u30B9\uFF09\uFF0F\u5B9F\u884C\u8A08\u753B\uFF08**\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3068\u5FC5\u8981\u6642\u306E\u30D7\u30ED\u30BB\u30B9\u72B6\u614Bmetadata\u3060\u3051\u3092\u53D6\u5F97\u3057\u3001\u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u30FB\u66F8\u8FBC\u307F\u306A\u3057**\uFF09\u2192 `ksql_explain` / `--dry-run`\uFF0F\u5B9F\u30C7\u30FC\u30BF\u306E\u4EF6\u6570 \u2192 \u4E0A\u306E R2 \u3092 `ksql_query` / CLI \u3067**\u5B9F\u884C**\uFF08read-only\uFF09\uFF0F**\u5024\u306E\u59A5\u5F53\u6027** \u2192 `VALIDATE ONLY`\u3002\n>\n> **`ksql_validate` \u306F\u300C\u5B9F\u884C\u3067\u304D\u308B\u3053\u3068\u300D\u3092\u4FDD\u8A3C\u3057\u307E\u305B\u3093**\uFF08\u69CB\u6587\u30FB\u9759\u7684\u89E3\u6790\u306E\u307F\uFF09\u3002\u305F\u3068\u3048\u3070 `UPDATE \u2026 WHERE $id IN (SELECT \u2026 FROM #tmp)` \u306F `ksql_validate` \u304C `ok` \u3092\u8FD4\u3057\u307E\u3059\u304C\u3001\u5B9F\u884C\u6642\u306B `IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093` \u3067\u5931\u6557\u3057\u307E\u3059\uFF08\u4E0B\u8A18\u306E\u6CE8\u8A18\uFF09\u3002\u5B9F\u884C\u53EF\u5426\u306F read-only\uFF08`VALIDATE ONLY`\u30FB`SELECT`\uFF09\u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002\n\n---", uri: "ksql://recipes/r2" }, r3: { heading: "R3. \u66F4\u65B0\u524D\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\uFF08`#before`\uFF09", text: "## R3. \u66F4\u65B0\u524D\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\uFF08`#before`\uFF09\n\n\u4E0A\u66F8\u304D\u3055\u308C\u308B\u524D\u306E\u30DE\u30B9\u30BF\u306E\u5024\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306B\u9000\u907F\u3057\u3001\u7D50\u679C\u306B\u542B\u3081\u307E\u3059\uFF08\u5DEE\u5206\u306E\u8A18\u9332\u30FB\u76EE\u8996\u78BA\u8A8D\u7528\uFF09\u3002\n\n```sql\nCREATE TEMP TABLE #tgt AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n\n-- \u66F4\u65B0\u5BFE\u8C61\u306E\u300C\u66F4\u65B0\u524D\u306E\u5024\u300D\u3092\u9000\u907F\uFF08$ \u59CB\u307E\u308A\u306E\u5217\u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u4ED8\u3051\u308B\uFF09\nCREATE TEMP TABLE #before AS\nSELECT $id AS \u30EC\u30B3\u30FC\u30C9ID, \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP200\nWHERE \u9867\u5BA2\u30B3\u30FC\u30C9 IN (SELECT \u9867\u5BA2\u30B3\u30FC\u30C9 FROM #tgt);\n\n-- \u672C\u51E6\u7406\uFF08UPSERT \u2026 SELECT \u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\u53EF\uFF09\nUPSERT INTO APP200 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM #tgt\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9);\n\n-- \u9000\u907F\u3057\u305F\u66F4\u65B0\u524D\u306E\u5024\u3092\u78BA\u8A8D\uFF08\u30D0\u30C3\u30C1\u306F\u6700\u5F8C\u306E\u7D50\u679C\u30BB\u30C3\u30C8\u3092\u8868\u793A\uFF09\nSELECT * FROM #before;\n```\n\n\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306F\u30D0\u30C3\u30C1\u5185\u30B9\u30B3\u30FC\u30D7\uFF08\u547C\u3073\u51FA\u3057\u7D42\u4E86\u3067\u7834\u68C4\uFF09\u306A\u306E\u3067\u3001\u6052\u4E45\u4FDD\u5B58\u304C\u8981\u308B\u5834\u5408\u306F\u5225\u9014\u30A2\u30D7\u30EA\u3078 INSERT \u3057\u307E\u3059\u3002R1 \u306B\u7D44\u307F\u8FBC\u3080\u5834\u5408\u306F\u3001\u78BA\u4FDD\uFF08R1 \u306E 2\uFF09\u306E\u5F8C\u30FBUPSERT \u306E\u524D\u306B `#before` \u3092\u4F5C\u308A\u307E\u3059\u3002\n\n---", uri: "ksql://recipes/r3" }, r4: { heading: "R4. \u30D0\u30C3\u30C1\u5909\u6570\u306E\u6D3B\u7528\uFF08v2.1.0\uFF09", text: "## R4. \u30D0\u30C3\u30C1\u5909\u6570\u306E\u6D3B\u7528\uFF08v2.1.0\uFF09\n\n- **\u6642\u523B\u56FA\u5B9A**: `SET @now = NOW();` \u2026 \u4EE5\u964D\u306E\u3059\u3079\u3066\u306E\u6587\u3067\u540C\u3058\u6642\u523B\uFF08`NOW()` \u3092\u6587\u3054\u3068\u306B\u8A55\u4FA1\u3059\u308B\u3068\u5024\u304C\u3076\u308C\u308B\uFF09\u3002**1a \u3067\u306F\u5909\u6570\u304B\u3089\u5909\u6570\u3078\u306E\u4EE3\u5165\uFF08`SET @b = @a`\uFF09\u306F\u3067\u304D\u306A\u3044**\u305F\u3081\u3001\u540C\u3058\u5024\u3092\u8907\u6570\u7528\u9014\u306B\u4F7F\u3046\u306A\u3089\u540C\u3058 `@now` \u3092\u4F7F\u3044\u56DE\u3057\u307E\u3059\u3002\n- **\u6761\u4EF6\u5024\u306E DRY \u5316**:\n ```sql\n SET @cutoff = TODAY();\n DELETE FROM APP100 WHERE \u4F5C\u6210\u65E5\u6642 < @cutoff AND \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u51E6\u7406\u6E08');\n ```\n \u3053\u306E DELETE \u306F**\u540C\u4E00\u5B9F\u884C\u306E\u4E2D\u3067\u306F\u51AA\u7B49**\uFF08`@cutoff` \u306F\u305D\u306E\u5B9F\u884C\u3067\u56FA\u5B9A\uFF09\u3002\u305F\u3060\u3057 `TODAY()` \u306F\u30D0\u30C3\u30C1\u3054\u3068\u306B\u518D\u8A55\u4FA1\u3055\u308C\u308B\u305F\u3081\u3001**\u7FCC\u65E5\u306E\u30EA\u30E9\u30F3\u3067\u306F\u5BFE\u8C61\u7BC4\u56F2\u304C 1 \u65E5\u5E83\u304C\u308A\u307E\u3059**\uFF08\u540C\u3058 cutoff \u306B\u5BFE\u3057\u3066\u306F\u51AA\u7B49\u3060\u304C\u3001\u65E5\u3092\u307E\u305F\u3044\u3067\u540C\u3058\u5BFE\u8C61\u96C6\u5408\u3092\u4FDD\u8A3C\u3057\u306A\u3044\uFF09\u3002\u53B3\u5BC6\u306B\u540C\u3058\u5BFE\u8C61\u3092\u518D\u73FE\u3059\u308B\u306A\u3089\u56FA\u5B9A\u306E\u65E5\u4ED8\u30EA\u30C6\u30E9\u30EB\u3092\u4F7F\u3046\u3002\n- **\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9/\u8907\u6570\u9078\u629E\u30D5\u30A3\u30FC\u30EB\u30C9**: `=` \u3092\u4F7F\u3048\u306A\u3044\u30D5\u30A3\u30FC\u30EB\u30C9\u306F `IN (@\u5909\u6570)` \u3067\uFF08v2.1.0\uFF09\u3002\n ```sql\n SET @a = 'A'; SET @b = 'B';\n SELECT \u9867\u5BA2No FROM APP100 WHERE \u9867\u5BA2\u30E9\u30F3\u30AF IN (@a, @b);\n ```\n- **\u30D0\u30C3\u30C1\u7531\u6765\u30E9\u30D9\u30EB\u3068\u914D\u5217\u6761\u4EF6**: 1 \u3064\u306E\u914D\u5217\u3092\u8907\u6570\u6587\u3067\u4F7F\u3044\u56DE\u3057\u3001\u51E6\u7406\u30E9\u30D9\u30EB\u3092\u7D50\u679C\u3078\u4ED8\u3051\u308B\u3002\n ```sql\n SET @batch = NOW();\n SET @ranks = ['A', 'B'];\n SELECT @batch AS \u30D0\u30C3\u30C1ID, \u9867\u5BA2No FROM APP100 WHERE \u9867\u5BA2\u30E9\u30F3\u30AF IN @ranks;\n ```\n \u7A7A\u914D\u5217\u306E `IN @ranks` \u306F 0 \u4EF6\u3001`NOT IN @ranks` \u306F\u5168\u4EF6\u6761\u4EF6\u306B\u306A\u308B\u3002\u66F4\u65B0\u7CFB\u3067\u6700\u7D42 WHERE \u304C\u5168\u4EF6\u6761\u4EF6\u3078\u7C21\u7D04\u3055\u308C\u308B\u5834\u5408\u306F\u5B89\u5168\u306E\u305F\u3081\u62D2\u5426\u3055\u308C\u308B\u3002\n- **\u4EF6\u6570\u30B2\u30FC\u30C8\u306E DRY \u5316\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u4EE3\u5165\u30FBv2.3.0\uFF1DPhase 1b\uFF09**: `SET @cnt = (SELECT COUNT(*) ...)` \u3067\u4EF6\u6570\u3092**\u4E00\u5EA6\u3060\u3051**\u53D6\u5F97\u3057\u3001\u30B2\u30FC\u30C8\u30FB\u8A18\u9332\u30FB\u5F8C\u7D9A\u6761\u4EF6\u3067\u4F7F\u3044\u56DE\u3059\u3002\n ```sql\n SET @cnt = (SELECT COUNT(*) FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406'));\n ASSERT @cnt BETWEEN 0 AND 10000; -- \u60F3\u5B9A\u5916\u4EF6\u6570\u306A\u3089\u505C\u6B62\n UPDATE APP100 SET \u5BFE\u8C61\u4EF6\u6570\u30E1\u30E2 = @cnt WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n ```\n - \u30B5\u30D6\u30AF\u30A8\u30EA\u306F **SET \u6642\u306B 1 \u56DE\u3060\u3051\u5B9F\u884C**\uFF08\u8907\u6570\u6587\u3067 `@cnt` \u3092\u53C2\u7167\u3057\u3066\u3082\u518D\u5B9F\u884C\u3057\u306A\u3044\uFF09\u3002**\u5148\u884C\u3057\u3066\u4F5C\u6210\u3057\u305F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB**\uFF08`SET @cnt = (SELECT COUNT(*) FROM #tgt)`\uFF09\u3084**\u5148\u884C\u5909\u6570**\uFF08`... WHERE \u671F\u9650 < @cutoff`\uFF09\u3082\u53C2\u7167\u53EF\u3002\n - **1 \u884C 1 \u5217**\u304C\u5FC5\u9808\u3002`GROUP BY` \u306A\u3057\u306E\u96C6\u8A08\u306F 0 \u4EF6\u3067\u3082 1 \u884C\uFF08`COUNT` \u306F `0`\uFF09\u3092\u8FD4\u3059\u305F\u3081\u3001\u4EF6\u6570\u53D6\u5F97\u306F\u5DEE\u5206 0 \u4EF6\u3067\u3082\u6210\u7ACB\u3059\u308B\uFF08\xA78\uFF09\u3002SET \u306E\u8A55\u4FA1\u5931\u6557\u306F `continueOnError` \u306B\u95A2\u308F\u3089\u305A\u30D0\u30C3\u30C1\u505C\u6B62\uFF08fail-fast\uFF09\u3002\n - **R2 \u306E\u4E8B\u524D\u30B2\u30FC\u30C8\u3092 DRY \u5316**\u3059\u308B\u4F8B\uFF08`(SELECT COUNT(*) FROM #tgt)` \u3092\u76F4\u63A5\u66F8\u304F\u4EE3\u308F\u308A\u306B\uFF09:\n ```sql\n CREATE TEMP TABLE #tgt AS SELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n SET @cnt = (SELECT COUNT(*) FROM #tgt);\n ASSERT @cnt BETWEEN 1 AND 10000;\n ```\n- **\u5B9A\u578B\u30D0\u30C3\u30C1\u306E\u5916\u90E8\u30D1\u30E9\u30E1\u30FC\u30BF\u5316\uFF08v2.4.0\uFF1DPhase 1c\uFF09**: SQL \u5074\u3067\u65E2\u5B9A\u5024\u3092\u5BA3\u8A00\u3057\u3001CLI/MCP \u3060\u3051\u5FC5\u8981\u6642\u306B\u5DEE\u3057\u66FF\u3048\u308B\u3002\n ```sql\n DECLARE @since = '2026-01-01';\n SELECT \u9867\u5BA2No FROM APP100 WHERE \u767B\u9332\u65E5 >= @since;\n ```\n CLI \u306F `--var since=2026-07-01`\u3001MCP \u306F `variables: { \"since\": \"2026-07-01\" }`\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u65E2\u5B9A\u5024\u3067\u540C\u3058 SQL \u3092\u5B9F\u884C\u3059\u308B\u3002`--var` \u306F\u79D8\u5BC6\u60C5\u5831\u306B\u306F\u4F7F\u7528\u3057\u306A\u3044\u3002\n\n\u5909\u6570\u306E\u8A73\u7D30\u30FB\u5236\u7D04\u306F\u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 [\xA725 \u30D0\u30C3\u30C1\u5909\u6570](ksql_language_reference.md#25-\u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB) \u3092\u53C2\u7167\u3002\n\n---", uri: "ksql://recipes/r4" }, r5: { heading: "R5. \u30EA\u30C6\u30E9\u30EB\u5024\u30EA\u30B9\u30C8\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5316\u3057\u3066\u4E00\u62EC\u51E6\u7406", text: "## R5. \u30EA\u30C6\u30E9\u30EB\u5024\u30EA\u30B9\u30C8\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5316\u3057\u3066\u4E00\u62EC\u51E6\u7406\n\n\u5916\u90E8\uFF08CSV\u30FB\u5225\u30B7\u30B9\u30C6\u30E0\uFF09\u7531\u6765\u306E **\u56FA\u5B9A\u30EA\u30B9\u30C8**\u3092 **`FROM` \u306A\u3057\u306E `SELECT \u2026 UNION ALL \u2026`** \u3067\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306B\u5B9F\u4F53\u5316\u3057\u3001\u30B2\u30FC\u30C8 \u2192 \u53D6\u308A\u8FBC\u307F\uFF08`UPSERT \u2026 SELECT`\uFF09\u3059\u308B\u3002\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306F\u3001**`ASSERT` \u304B\u3089\u306F `IN` \u30B5\u30D6\u30AF\u30A8\u30EA\uFF0F`COUNT`** \u3067\u3001**`INSERT \u2026 SELECT` / `UPSERT \u2026 SELECT` \u304B\u3089\u306F `FROM` \u30BD\u30FC\u30B9**\u3068\u3057\u3066\u518D\u5229\u7528\u3059\u308B\u3002\n\n```sql\n-- 1) \u5916\u90E8\u30EA\u30B9\u30C8\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306B\u5B9F\u4F53\u5316\uFF08\u66F8\u304D\u8FBC\u307F\u53EF\u80FD\u30AD\u30FC\u300C\u53D6\u5F15\u5148\u30B3\u30FC\u30C9\u300D\u3068\u5024\u3092\u6301\u3064\uFF09\nCREATE TEMP TABLE #incoming AS\n SELECT '1001' AS \u53D6\u5F15\u5148\u30B3\u30FC\u30C9, '\u5B8C\u4E86' AS \u72B6\u614B\n UNION ALL SELECT '1005', '\u5B8C\u4E86'\n UNION ALL SELECT '1012', '\u5B8C\u4E86';\n\n-- 2) \u4E8B\u524D\u30B2\u30FC\u30C8: \u53D6\u308A\u8FBC\u307F\u4EF6\u6570\u3092\u78BA\u8A8D\uFF08ASSERT \u306F COUNT \u3067 #t \u3092\u53C2\u7167\uFF09\nASSERT (SELECT COUNT(*) FROM #incoming) BETWEEN 1 AND 1000;\n\n-- 3) \u53D6\u308A\u8FBC\u307F: \u66F8\u304D\u8FBC\u307F\u53EF\u80FD\u30AD\u30FC\u3067\u767B\u9332/\u66F4\u65B0\uFF08UPSERT \u2026 SELECT \u306F #t \u3092 FROM \u30BD\u30FC\u30B9\u306B\uFF09\nUPSERT INTO APP100 (\u53D6\u5F15\u5148\u30B3\u30FC\u30C9, \u72B6\u614B)\n SELECT \u53D6\u5F15\u5148\u30B3\u30FC\u30C9, \u72B6\u614B FROM #incoming\n ON DUPLICATE (\u53D6\u5F15\u5148\u30B3\u30FC\u30C9);\n```\n\n- **DRY**: \u5916\u90E8\u30EA\u30B9\u30C8\u3092 `#incoming` \u306E 1 \u7B87\u6240\u306B\u96C6\u7D04\u3057\u3001`ASSERT`\uFF08`COUNT` / `IN` \u30B5\u30D6\u30AF\u30A8\u30EA\uFF09\u3068 `UPSERT \u2026 SELECT`\uFF08`FROM` \u30BD\u30FC\u30B9\uFF09\u304B\u3089\u518D\u5229\u7528\u3059\u308B\u3002\n- **`UPSERT` \u306B\u306F\u30AD\u30FC\u304C\u5FC5\u9808**: `ON DUPLICATE (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9)` \u304C\u5FC5\u8981\u3067\u3001\u30AD\u30FC\u306F**\u30A2\u30D7\u30EA\u5074\u306E\u66F8\u304D\u8FBC\u307F\u53EF\u80FD\u30D5\u30A3\u30FC\u30EB\u30C9**\uFF08\u4F8B: `\u53D6\u5F15\u5148\u30B3\u30FC\u30C9` / `\u5916\u90E8ID`\uFF09\u3002**\u30B7\u30B9\u30C6\u30E0\u30D5\u30A3\u30FC\u30EB\u30C9 `$id` \u306F UPSERT \u30AD\u30FC\u306B\u3067\u304D\u306A\u3044**\u3002\n- **\u91CD\u8981\u306A\u5236\u7D04 \u2014 `UPDATE` / `DELETE` \u306E `WHERE` \u306B `IN (SELECT \u2026)` \u306F\u66F8\u3051\u306A\u3044**\uFF08`\u2026 WHERE $id IN (SELECT id FROM #t)` \u306F**\u5B9F\u884C\u6642**\u306B `IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093`\u3002\u6CE8\u610F\u306E\u300C\u30B5\u30D6\u30AF\u30A8\u30EA\u53C2\u7167\u306E\u975E\u5BFE\u79F0\u300D\u53C2\u7167\uFF09\u3002**\u5BFE\u8C61\u30A2\u30D7\u30EA\u306E\u65E2\u5B58\u884C\u3092 `$id` \u3067\u66F4\u65B0/\u524A\u9664**\u3057\u305F\u3044\u5834\u5408\u306F\u3001`UPDATE APP100 SET \u72B6\u614B='\u5B8C\u4E86' WHERE $id IN ('1001','1005','1012')` \u306E\u3088\u3046\u306B **`UPDATE` / `DELETE` \u5074\u3067\u306F\u30EA\u30B9\u30C8\u3092\u76F4\u63A5 `IN (...)` \u306B\u518D\u63B2**\u3059\u308B\uFF08\u3053\u306E\u7D4C\u8DEF\u3067\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E DRY \u306F\u52B9\u304B\u306A\u3044\uFF09\u3002**\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5024\u3067\u66F4\u65B0\u3059\u308B**\u306A\u3089 `UPDATE \u2026 FROM`\uFF08v2.12.0\u30FBR6\uFF09\u304C\u4F7F\u3048\u308B\u3002\n- **\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\uFF08\u81EA\u52D5\u30D0\u30A4\u30F3\u30C9\u3067\u306F\u306A\u3044\uFF09**: \u4E0A\u8A18\u306E\u5024\u306F **SQL \u6587\u4E2D\u306B\u30EA\u30C6\u30E9\u30EB\u3068\u3057\u3066\u8A18\u8FF0**\u3057\u3066\u304A\u308A\u3001kSQL \u304C\u5916\u90E8\u30EA\u30B9\u30C8\u3092\u81EA\u52D5\u3067\u30D0\u30A4\u30F3\u30C9\u3059\u308B\u6A5F\u80FD\u3067\u306F\u306A\u3044\u3002\u5916\u90E8\u5024\u304B\u3089 SQL \u3092\u751F\u6210\u3059\u308B\u5834\u5408\u306F\u3001**ID \u3092\u6570\u5B57\u3060\u3051\u306B\u691C\u8A3C**\u3059\u308B\u304B\u3001**\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u306E `'` \u3092 `''` \u306B\u30A8\u30B9\u30B1\u30FC\u30D7**\u3059\u308B\u3053\u3068\uFF08\u8AA4\u308C\u3070\u30A4\u30F3\u30B8\u30A7\u30AF\u30B7\u30E7\u30F3\u304C\u8D77\u3053\u308A\u5F97\u308B\uFF09\u3002\n- **kintone \u5185\u304B\u3089\u5C0E\u3051\u308B\u96C6\u5408**\u306A\u3089 `#incoming` \u3092\u4F7F\u308F\u305A\u76F4\u63A5 `IN (SELECT \u2026 FROM APPxxx WHERE \u2026)` \u306E\u65B9\u304C\u7C21\u5358\u3002R5 \u306F **kintone \u5916\u7531\u6765\u306E\u56FA\u5B9A\u30EA\u30B9\u30C8**\u304C\u5BFE\u8C61\u3002\n- **\u524D\u63D0\u30D0\u30FC\u30B8\u30E7\u30F3**: `CREATE TEMP TABLE AS <FROM \u306A\u3057 SELECT / UNION>` \u306E\u5B9F\u4F53\u5316\u306F **v2.10.0 \u4EE5\u964D**\uFF08\u305D\u308C\u4EE5\u524D\u306F 0 \u884C\u306B\u306A\u308B\u4E0D\u5177\u5408\u304C\u3042\u3063\u305F\uFF09\u3002\n\n---", uri: "ksql://recipes/r5" }, r6: { heading: "R6. \u4E0D\u826F\u30C7\u30FC\u30BF\u3092\u9694\u96E2\u3057\u3066\u6B8B\u308A\u3092\u6D41\u3059\uFF08`ON ERROR SKIP`\u30FBv2.13.0\uFF09", text: "## R6. \u4E0D\u826F\u30C7\u30FC\u30BF\u3092\u9694\u96E2\u3057\u3066\u6B8B\u308A\u3092\u6D41\u3059\uFF08`ON ERROR SKIP`\u30FBv2.13.0\uFF09\n\nR1 \u306F fail-fast \u3067\u3001**1 \u4EF6\u306E\u4E0D\u826F\u30C7\u30FC\u30BF\u304C\u30D0\u30C3\u30C1\u5168\u4F53\u3092\u6B62\u3081\u307E\u3059**\u3002\u591C\u9593\u306E\u7121\u4EBA\u30D0\u30C3\u30C1\u3067\u306F\u300C\u4E0D\u826F\u884C\u3060\u3051\u9664\u3051\u3066\u6B8B\u308A\u306F\u6D41\u3057\u3001\u7FCC\u671D\u306B\u539F\u56E0\u3092\u898B\u308B\u300D\u307B\u3046\u304C\u671B\u307E\u3057\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002`ON ERROR SKIP INTO #err` \u306F\u3001**\u66F8\u304D\u8FBC\u307F\u524D\u306E\u30ED\u30FC\u30AB\u30EB\u691C\u8A3C\uFF08\u5FC5\u9808\u30FB\u578B\u30FB\u7BC4\u56F2\u30FB\u6587\u5B57\u5217\u9577\u30FB\u9078\u629E\u80A2\u30FB\u30AD\u30FC\uFF09\u306B\u843D\u3061\u305F\u884C\u3060\u3051**\u3092 `#err` \u3078\u9694\u96E2\u3057\u3001\u5408\u683C\u884C\u3060\u3051\u3092\u66F8\u304D\u8FBC\u307F\u307E\u3059\u3002\n\n```sql\nSET @now = NOW();\n\n-- 1) \u78BA\u4FDD\uFF08R1 \u3068\u540C\u3058 claim-first\u3002\u76F4\u63A5\u6761\u4EF6\u3067\u66F4\u65B0\uFF09\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u51E6\u7406\u4E2D', \u30D0\u30C3\u30C1ID = @now, \u78BA\u4FDD\u65E5\u6642 = @now\nWHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n\nCREATE TEMP TABLE #tgt AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, \u4F4F\u6240 FROM APP100\nWHERE \u30D0\u30C3\u30C1ID = @now AND \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u51E6\u7406\u4E2D');\n\nASSERT (SELECT COUNT(*) FROM #tgt) BETWEEN 0 AND 10000;\n\n-- 2) \u672C\u51E6\u7406: NG \u884C\u306F #err \u3078\u9694\u96E2\u3057\u3001\u5408\u683C\u884C\u3060\u3051\u66F8\u304F\u3002\u9694\u96E2\u304C 100 \u884C\u3092\u8D85\u3048\u305F\u3089\u4F55\u3082\u66F8\u304B\u305A\u505C\u6B62\nUPSERT INTO APP200 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, \u4F4F\u6240)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, \u4F4F\u6240 FROM #tgt\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\nON ERROR SKIP INTO #err REJECT LIMIT 100;\n\n-- 3) \u30A8\u30E9\u30FC\u884C\u306E\u66F8\u304D\u623B\u3057: \u696D\u52D9\u30AD\u30FC\u5358\u4F4D\u306B\u5168\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u9023\u7D50\u3057\u3066 1 \u884C\u5316\nCREATE TEMP TABLE #err_summary AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, GROUP_CONCAT($err_message SEPARATOR ' / ') AS \u30A8\u30E9\u30FC\u5185\u5BB9\nFROM #err GROUP BY \u9867\u5BA2\u30B3\u30FC\u30C9;\n\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u30A8\u30E9\u30FC', \u30A8\u30E9\u30FC\u5185\u5BB9 = e.\u30A8\u30E9\u30FC\u5185\u5BB9, \u51E6\u7406\u65E5\u6642 = @now\nFROM #err_summary e\nWHERE APP100.\u9867\u5BA2\u30B3\u30FC\u30C9 = e.\u9867\u5BA2\u30B3\u30FC\u30C9 AND APP100.\u30D0\u30C3\u30C1ID = @now;\n\n-- 4) \u6B63\u5E38\u884C\u306E\u5B8C\u4E86: #err \u306B\u7121\u3044\u696D\u52D9\u30AD\u30FC\u3092 temp \u3067\u78BA\u5B9A\u3057\u3066\u304B\u3089\u66F4\u65B0\nCREATE TEMP TABLE #ok AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9 FROM #tgt\nWHERE \u9867\u5BA2\u30B3\u30FC\u30C9 NOT IN (SELECT \u9867\u5BA2\u30B3\u30FC\u30C9 FROM #err);\n\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u51E6\u7406\u6E08', \u51E6\u7406\u65E5\u6642 = @now\nFROM #ok o\nWHERE APP100.\u9867\u5BA2\u30B3\u30FC\u30C9 = o.\u9867\u5BA2\u30B3\u30FC\u30C9 AND APP100.\u30D0\u30C3\u30C1ID = @now;\n```\n\n**\u306A\u305C\u3053\u306E\u5F62\u304B**\n\n- **3) \u3068 4) \u304C `UPDATE \u2026 FROM`\uFF08v2.12.0 / \u696D\u52D9\u30AD\u30FC\u7D50\u5408\u306F v2.13.0\uFF09**: `#err` \u306F UPSERT \u306E**\u5165\u529B\u30DA\u30A4\u30ED\u30FC\u30C9\u5217\u3057\u304B\u6301\u305F\u305A**\u3001\u5DEE\u5206\u30A2\u30D7\u30EA\u306E `$id` \u3092\u6301\u3061\u307E\u305B\u3093\u3002\u305D\u306E\u305F\u3081 `$id` \u7D50\u5408\u3067\u306F\u66F8\u304D\u623B\u305B\u305A\u3001**\u696D\u52D9\u30AD\u30FC\u7D50\u5408**\u304C\u5FC5\u8981\u3067\u3059\u3002\n- **`AND APP100.\u30D0\u30C3\u30C1ID = @now` \u3092\u5FC5\u305A\u4ED8\u3051\u308B**: `UPDATE \u2026 FROM` \u306F\u7D50\u5408\u7B49\u5024\u3068\u30BF\u30FC\u30B2\u30C3\u30C8\u7D5E\u308A\u8FBC\u307F\u3092\u4E21\u65B9\u66F8\u3051\u307E\u3059\u3002\u3053\u308C\u304C\u7121\u3044\u3068\u3001**\u4ECA\u56DE\u306E\u30D0\u30C3\u30C1\u304C\u78BA\u4FDD\u3057\u3066\u3044\u306A\u3044\u540C\u4E00\u30AD\u30FC\u306E\u884C\u307E\u3067\u66F4\u65B0**\u3055\u308C\u5F97\u307E\u3059\u3002\n- **4) \u306F `#ok` \u3092 `SELECT` \u3067\u5148\u306B\u78BA\u5B9A\u3055\u305B\u308B**: `UPDATE \u2026 WHERE \u9867\u5BA2\u30B3\u30FC\u30C9 NOT IN (SELECT \u2026 FROM #err)` \u3068\u66F8\u304D\u305F\u304F\u306A\u308A\u307E\u3059\u304C\u3001**DML \u306E `WHERE` \u306B `IN (SELECT \u2026)` \u306F\u66F8\u3051\u307E\u305B\u3093**\uFF08\u4E0B\u8A18\u306E\u6CE8\u8A18\uFF09\u3002`NOT IN (SELECT \u2026)` \u306F **`SELECT` \u6587\uFF08`CREATE TEMP TABLE \u2026 AS SELECT`\uFF09\u306A\u3089\u4F7F\u3048\u307E\u3059**\u3002\n- **`GROUP_CONCAT` \u3067\u5168\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u6B8B\u3059\uFF08v2.15.0\uFF09**: 1 \u884C\u306B\u8907\u6570\u30A8\u30E9\u30FC\u304C\u3042\u308B\u3068 `#err` \u306F\u8907\u6570\u884C\u306B\u306A\u308A\u307E\u3059\u3002`UPDATE \u2026 FROM` \u306F**\u8907\u6570\u30DE\u30C3\u30C1\u3092\u5B9F\u884C\u524D\u30A8\u30E9\u30FC**\u306B\u3059\u308B\u305F\u3081\u3001\u696D\u52D9\u30AD\u30FC\u5358\u4F4D\u3078 1 \u884C\u5316\u304C\u5FC5\u9808\u3067\u3059\u3002`MIN($err_message)` \u3060\u3068\u4EE3\u8868 1 \u4EF6\u3057\u304B\u6B8B\u308A\u307E\u305B\u3093\u304C\u3001`GROUP_CONCAT` \u306A\u3089\u5168\u4EF6\u3092\u9023\u7D50\u3067\u304D\u307E\u3059\u3002\n- **`REJECT LIMIT n`**: \u9694\u96E2\u304C n \u884C\u3092\u8D85\u3048\u305F\u3089**\u5168\u884C\u691C\u8A3C\u3092\u7D42\u3048\u305F\u3046\u3048\u3067\u66F8\u304D\u8FBC\u307F\u30BC\u30ED\u3067\u505C\u6B62**\u3057\u307E\u3059\uFF08\u90E8\u5206\u66F8\u304D\u8FBC\u307F\u306F\u8D77\u304D\u307E\u305B\u3093\uFF09\u3002`#err` \u306F\u7D50\u679C\u3068\u3057\u3066\u8FD4\u308B\u306E\u3067\u539F\u56E0\u8ABF\u67FB\u306B\u4F7F\u3048\u307E\u3059\u3002\u300C\u4E0D\u826F\u304C\u5927\u91CF\uFF1D\u4E0A\u6D41\u306E\u7570\u5E38\u300D\u3092\u691C\u77E5\u3059\u308B\u30B2\u30FC\u30C8\u3067\u3059\u3002\n\n**\u9694\u96E2\u3055\u308C\u308B\u7BC4\u56F2\uFF08\u91CD\u8981\uFF09**\n\n- \u9694\u96E2\u3067\u304D\u308B\u306E\u306F **kSQL \u304C API \u9001\u4FE1\u524D\u306B\u30ED\u30FC\u30AB\u30EB\u3067\u5224\u5B9A\u3067\u304D\u308B\u30A8\u30E9\u30FC\u3060\u3051**\uFF08Tier 0\uFF09\u3067\u3059\u3002**kintone API \u306E\u5B9F\u884C\u6642\u30A8\u30E9\u30FC**\uFF08\u6A29\u9650\u30FB\u7AF6\u5408\u30FB\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA JS \u306B\u3088\u308B\u4FDD\u5B58\u62D2\u5426\u306A\u3069\uFF09\u306F**\u5F93\u6765\u3069\u304A\u308A fail-fast**\u3067\u3001\u884C\u5358\u4F4D\u306B\u9694\u96E2\u3055\u308C\u307E\u305B\u3093\u3002\n- \u9006\u306B\u3001\u30ED\u30FC\u30AB\u30EB\u691C\u8A3C\u306F**\u66F8\u304D\u8FBC\u307F\u7D4C\u8DEF\u3088\u308A\u53B3\u3057\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059**\u3002\u691C\u8A3C\u3092\u901A\u3063\u3066\u3082\u66F8\u304D\u8FBC\u307F\u6210\u529F\u306F\u4FDD\u8A3C\u3055\u308C\u307E\u305B\u3093\u3002\n- **\u524D\u63D0\u30D0\u30FC\u30B8\u30E7\u30F3**: `ON ERROR SKIP` / `VALIDATE ONLY` / \u696D\u52D9\u30AD\u30FC\u7D50\u5408\u306F **v2.13.0 \u4EE5\u964D**\u3001`GROUP_CONCAT` \u3068 `#err` \u5217\u306E\u578B\u4F1D\u64AD\u306F **v2.15.0 \u4EE5\u964D**\u3002\n\n---", uri: "ksql://recipes/r6" }, r7: { heading: "R7. kintone \u306E REST API \u3068\u540C\u3058\u4E26\u3073\u3067\u5927\u91CF\u53D6\u5F97\u3059\u308B\uFF08`KORDER BY`\u30FBv3.0.0 / v3.1.0\uFF09", text: "## R7. kintone \u306E REST API \u3068\u540C\u3058\u4E26\u3073\u3067\u5927\u91CF\u53D6\u5F97\u3059\u308B\uFF08`KORDER BY`\u30FBv3.0.0 / v3.1.0\uFF09\n\nCSV \u9023\u643A\u3084\u7A81\u5408\u3067\u300C**kintone REST API \u306E\u4E26\u3073\uFF08\u578B\u5225\u9806\u5E8F\uFF09**\u300D\u304C\u8981\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002v3.0.0 \u4EE5\u964D\u3001\u901A\u5E38\u306E `ORDER BY` \u306F\u300C\u3069\u306E\u5B9F\u884C\u9762\uFF08CLI / MCP / \u30D7\u30E9\u30B0\u30A4\u30F3\uFF09\u3067\u3082\u30FB\u4F55\u5EA6\u5B9F\u884C\u3057\u3066\u3082\u540C\u3058\u7D50\u679C\u306B\u306A\u308B\u300D\u3088\u3046\u306B **kSQL \u304C\u578B\u3054\u3068\u306B\u5B9A\u7FA9\u3057\u305F\u4E26\u3073**\uFF08\u6570\u5024\u306F\u6570\u5024\u9806\u30FB\u6587\u5B57\u5217\u306F Unicode \u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3002[\u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 \xA710](ksql_language_reference.md#10-order-by)\uFF09\u3067\u4E26\u3079\u307E\u3059\u3002\u3053\u306E\u305F\u3081\u3001**kintone \u304C\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3054\u3068\u306B\u6301\u3064\u72EC\u81EA\u306E\u4E26\u3073** \u2014 \u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u30FB\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u306E\u9078\u629E\u80A2\u5B9A\u7FA9\u9806\u3001\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u30D7\u30ED\u30BB\u30B9\u5B9A\u7FA9\u9806\u306A\u3069 \u2014 \u3068\u306F\u4E00\u81F4\u3057\u306A\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002kintone \u5074\u306E\u4E26\u3073\u304C\u5FC5\u8981\u306A\u5834\u5408\u306F **`KORDER BY`** \u3092\u4F7F\u3044\u307E\u3059\u3002\u4E00\u89A7\u753B\u9762\u3068\u540C\u3058\u4E26\u3073\u306B**\u8FD1\u3065\u3051\u308B**\u306B\u306F\u3001\u753B\u9762\u3068\u540C\u3058\u30AD\u30FC\u30FB\u65B9\u5411\u3092\u6307\u5B9A\u3057\u3001\u540C\u5024\u7FA4\u306E\u9806\u5E8F\u306F\u6697\u9ED9\u4FDD\u8A3C\u3055\u308C\u306A\u3044\u305F\u3081**\u6700\u5F8C\u306E\u30AD\u30FC\u3078 `$id ASC` \u3092\u660E\u793A**\u3057\u307E\u3059\uFF08kSQL \u306F\u6697\u9ED9\u8FFD\u52A0\u3057\u307E\u305B\u3093\uFF09\u3002\n\n```sql\n-- kintone \u56FA\u6709\u9806\u306E\u307E\u307E\u5148\u982D 10,001 \u4EF6\uFF08v3.1.0 \u304B\u3089\u5358\u767A GET \u306B\u53CE\u307E\u3089\u306A\u3044\u7A93\u3082\u53EF\uFF09\nSELECT $id, \u90F5\u4FBF\u756A\u53F7, \u4F4F\u62401\nFROM APP730\nKORDER BY \u90F5\u4FBF\u756A\u53F7 ASC, $id ASC\nLIMIT 10001\n```\n\n- **`LIMIT` \u306F\u5FC5\u9808**\u3002**\u5358\u767A API \u306B\u306A\u308B\u306E\u306F `LIMIT \u2264 500` \u304B\u3064 `OFFSET \u2264 10000` \u304B\u3064 `LIMIT \u2264 maxRecords` \u306E 3 \u6761\u4EF6\u3092\u6E80\u305F\u3059\u5834\u5408**\u3067\u3001\u3053\u306E\u3068\u304D OFFSET \u306F\u30B5\u30FC\u30D0\u30FC\u304C\u8AAD\u307F\u98DB\u3070\u3059\u305F\u3081 `maxRecords` \u306E\u5F15\u304D\u4E0A\u3052\u306F\u4E0D\u8981\u3067\u3059\uFF08\u4F8B: `LIMIT 500 OFFSET 10000` \u306F `maxRecords=500` \u306E\u307E\u307E\u3067\u6210\u529F\uFF09\n- 3 \u6761\u4EF6\u304B\u3089\u5916\u308C\u308B\u7A93\u306F **Cursor API**\uFF08v3.1.0\uFF09\u3067 500 \u4EF6\u305A\u3064\u9023\u7D50\u3057\u307E\u3059\uFF08\u7D50\u679C\u9806\u306F raw API \u3068\u5B8C\u5168\u4E00\u81F4\u3059\u308B\u3053\u3068\u3092\u5B9F\u6E2C\u6E08\u307F\uFF09\u3002**Cursor \u306E\u3068\u304D\u3060\u3051**\u8D70\u67FB\u4EF6\u6570 `OFFSET + LIMIT` \u2264 \u5B9F\u884C\u6642 `maxRecords` \u304C\u6761\u4EF6\u306B\u306A\u308A\u307E\u3059\uFF08OFFSET \u5206\u3092 kSQL \u304C\u53D7\u4FE1\u3057\u3066\u8AAD\u307F\u6368\u3066\u308B\u305F\u3081\uFF09\u3002CLI/MCP \u306E\u65E2\u5B9A\u306F 500 \u306A\u306E\u3067\u3001\u4E0A\u306E\u4F8B\u306F `--max-records 10001`\uFF08MCP \u306F `maxRecords: 10001`\uFF09\u3078\u5F15\u304D\u4E0A\u3052\u307E\u3059\u3002\u8D85\u904E\u306F\u5B9F\u884C\u524D\u306E planning error\uFF08\u9ED9\u3063\u3066\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3057\u307E\u305B\u3093\uFF09\n- \u30AB\u30FC\u30BD\u30EB\u306E\u5BFE\u8C61\u96C6\u5408\u306F\u4F5C\u6210\u6642\u70B9\u3067\u56FA\u5B9A\u3067\u3059\u304C**\u5024\u306F\u53D6\u5F97\u6642\u70B9**\u3067\u3059\u3002\u66F4\u65B0\u304C\u8D70\u308B\u6642\u9593\u5E2F\u306E\u5B9F\u884C\u306F\u907F\u3051\u3066\u304F\u3060\u3055\u3044\u3002\u30AB\u30FC\u30BD\u30EB\u67A0\uFF081 \u30C9\u30E1\u30A4\u30F3 10 \u500B\u306E\u5171\u6709\u30FB\u540C\u6642\u4E0A\u9650 `cursorMaxActive`\uFF09\u30FB\u518D\u8A66\u884C\u7981\u6B62\u30FBcleanup \u8B66\u544A\u306E\u8A73\u7D30\u306F [v3.1.0 \u79FB\u884C\u30AC\u30A4\u30C9](ksql_v3_1_migration_guide.md)\u3092\u53C2\u7167\n- \u6761\u4EF6: \u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT\u30FB\u5358\u4E00\u30A2\u30D7\u30EA\u30FBWHERE \u5B8C\u5168\u62BC\u3057\u4E0B\u3052\u30FB\u578B allowlist \u7B49\uFF08\u8A73\u7D30\u306F[\u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 \xA710](ksql_language_reference.md#10-order-by)\uFF09\n\n---", uri: "ksql://recipes/r7" }, r8: { heading: "R8. Shift_JIS \u3067\u51FA\u529B\u3067\u304D\u306A\u3044\u6F22\u5B57\u3092\u5909\u63DB\u3059\u308B\uFF08v3.2.0\uFF09", text: "## R8. Shift_JIS \u3067\u51FA\u529B\u3067\u304D\u306A\u3044\u6F22\u5B57\u3092\u5909\u63DB\u3059\u308B\uFF08v3.2.0\uFF09\n\ncli-kintone \u306E CSV \u3092 Shift_JIS \u3067\u51FA\u529B\u3059\u308B\u3068\u3001CP932 \u306B\u7121\u3044\u6F22\u5B57\u3092\u542B\u3080\u30EC\u30B3\u30FC\u30C9\u3067\u51FA\u529B\u30A8\u30E9\u30FC\u306B\u306A\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002`TRANSLATE` \u3092\u4F7F\u3044\u3001\u8A72\u5F53\u3059\u308B 40 \u5B57\u3092 Shift_JIS \u3067\u6271\u3048\u308B\u5B57\u4F53\u3078 1 \u5BFE 1 \u3067\u5909\u63DB\u3057\u307E\u3059\u3002\u5909\u63DB\u8868\u306F [\u8A08\u7B97\u5F0F\u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u306E\u5B9F\u4F8B](https://qiita.com/rex0220/items/9db98b2cf027b686e0b5) \u3068\u540C\u3058\u3082\u306E\u3067\u3059\u3002\n\n| | \u5909\u63DB\u8868 |\n|---|---|\n| \u5909\u63DB\u5143 | `\u555E\u7130\u9DD7\u6451\u9EB4\u5653\u4FE0\u9830\u8EC0\u4FF1\u7E6B\u59F8\u9E7C\u5699\u6522\u{20B9F}\u7E61\u8523\u91AC\u87EC\u6414\u7626\u9A52\u7C1E\u5861\u985A\u79B1\u7006\u541E\u56CA\u525D\u6F51\u91B1\u5C5B\u5E77\u9EB5\u840A\u5C62\u6CAA\u881F` |\n| \u5909\u63DB\u5148 | `\u5516\u7114\u9D0E\u63B4\u9EB9\u5618\u4FA0\u982C\u8EAF\u5036\u7E4B\u598D\u9E78\u565B\u6505\u53F1\u7E4D\u848B\u91A4\u8749\u63BB\u75E9\u9A28\u7BAA\u586B\u985B\u7977\u6D9C\u5451\u56A2\u5265\u6E8C\u9197\u5C4F\u5E76\u9EBA\u83B1\u5C61\u6FFE\u874B` |\n\n```sql\nSELECT\n TRANSLATE(\u4F1A\u793E\u540D,\n '\u555E\u7130\u9DD7\u6451\u9EB4\u5653\u4FE0\u9830\u8EC0\u4FF1\u7E6B\u59F8\u9E7C\u5699\u6522\u{20B9F}\u7E61\u8523\u91AC\u87EC\u6414\u7626\u9A52\u7C1E\u5861\u985A\u79B1\u7006\u541E\u56CA\u525D\u6F51\u91B1\u5C5B\u5E77\u9EB5\u840A\u5C62\u6CAA\u881F',\n '\u5516\u7114\u9D0E\u63B4\u9EB9\u5618\u4FA0\u982C\u8EAF\u5036\u7E4B\u598D\u9E78\u565B\u6505\u53F1\u7E4D\u848B\u91A4\u8749\u63BB\u75E9\u9A28\u7BAA\u586B\u985B\u7977\u6D9C\u5451\u56A2\u5265\u6E8C\u9197\u5C4F\u5E76\u9EBA\u83B1\u5C61\u6FFE\u874B'\n ) AS \u4F1A\u793E\u540D,\n \u4F4F\u6240\nFROM APP100;\n```\n\n`\u{20B9F}` \u306F UTF-16 \u3067\u306F 2 \u30B3\u30FC\u30C9\u30E6\u30CB\u30C3\u30C8\u3067\u3059\u304C\u3001`TRANSLATE` \u306F\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u5358\u4F4D\u3067\u5909\u63DB\u8868\u3092\u305D\u308D\u3048\u308B\u305F\u3081\u3001\u5F8C\u7D9A\u306E\u5BFE\u5FDC\u3082\u305A\u308C\u307E\u305B\u3093\u3002\u5909\u63DB\u5143\u3068\u5909\u63DB\u5148\u306E\u6587\u5B57\u6570\u304C\u7570\u306A\u308B\u5834\u5408\u306F\u3001\u6B20\u843D\u6587\u5B57\u3092\u9ED9\u3063\u3066\u524A\u9664\u305B\u305A `ArgumentError` \u3067\u505C\u6B62\u3057\u307E\u3059\u3002\u5909\u63DB\u5F8C\u306E SELECT \u7D50\u679C\u3092 cli-kintone \u306E CSV \u51FA\u529B\u5BFE\u8C61\u306B\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n**kintone \u5074\u306E\u5024\u305D\u306E\u3082\u306E\u3092\u5909\u63DB\u3057\u3066\u66F8\u304D\u623B\u3059\uFF08`UPDATE`\u30FBv3.2.0\u301C\uFF09**\n\nCSV \u51FA\u529B\u306E\u305F\u3073\u306B\u5909\u63DB\u3059\u308B\u306E\u3067\u306F\u306A\u304F\u3001\u30EC\u30B3\u30FC\u30C9\u306E\u5024\u81EA\u4F53\u3092 Shift_JIS \u3067\u6271\u3048\u308B\u5B57\u4F53\u3078\u305D\u308D\u3048\u305F\u3044\u5834\u5408\u306F `UPDATE` \u3067\u66F8\u304D\u623B\u3057\u307E\u3059\u3002\n\n\u5F62 A: \u5BFE\u8C61\u5168\u884C\u3092\u305D\u306E\u307E\u307E\u5909\u63DB\u3059\u308B\uFF081 \u6587\uFF09\n\n```sql\nUPDATE APP100\nSET \u4F1A\u793E\u540D = TRANSLATE(\u4F1A\u793E\u540D,\n '\u555E\u7130\u9DD7\u6451\u9EB4\u5653\u4FE0\u9830\u8EC0\u4FF1\u7E6B\u59F8\u9E7C\u5699\u6522\u{20B9F}\u7E61\u8523\u91AC\u87EC\u6414\u7626\u9A52\u7C1E\u5861\u985A\u79B1\u7006\u541E\u56CA\u525D\u6F51\u91B1\u5C5B\u5E77\u9EB5\u840A\u5C62\u6CAA\u881F',\n '\u5516\u7114\u9D0E\u63B4\u9EB9\u5618\u4FA0\u982C\u8EAF\u5036\u7E4B\u598D\u9E78\u565B\u6505\u53F1\u7E4D\u848B\u91A4\u8749\u63BB\u75E9\u9A28\u7BAA\u586B\u985B\u7977\u6D9C\u5451\u56A2\u5265\u6E8C\u9197\u5C4F\u5E76\u9EBA\u83B1\u5C61\u6FFE\u874B')\nWHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n```\n\n- \u89AA DML \u306E `WHERE` \u306B\u306F\u95A2\u6570\u3092\u66F8\u3051\u306A\u3044\u305F\u3081\u3001\u5F62 A \u306F WHERE \u6761\u4EF6\u306E**\u5168\u884C**\u3078 PUT \u3057\u307E\u3059\u3002\u5909\u63DB\u5BFE\u8C61\u306E\u5B57\u3092\u542B\u307E\u306A\u3044\u884C\u3082\u66F4\u65B0\u6271\u3044\u306B\u306A\u308A\u3001\u66F4\u65B0\u65E5\u6642\u304C\u5909\u308F\u308A\u901A\u77E5\u30FBWebhook\u30FB\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA JS \u304C\u767A\u706B\u3057\u5F97\u307E\u3059\uFF08R10 \u5F62 A \u3068\u540C\u3058\u6CE8\u610F\uFF09\u3002\u526F\u4F5C\u7528\u3092\u6291\u3048\u305F\u3044\u30FB\u30EA\u30E9\u30F3\u3057\u305F\u3044\u5834\u5408\u306F\u5F62 B \u3078\u3002\n\n\u5F62 B: \u5909\u63DB\u304C\u5FC5\u8981\u306A\u884C\u3060\u3051\u3078\u7D5E\u308B\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\uFF09\n\n```sql\n-- \u5909\u63DB\u3059\u308B\u3068\u5024\u304C\u5909\u308F\u308B\u884C\uFF08\uFF1D\u5909\u63DB\u5BFE\u8C61\u5B57\u3092\u542B\u3080\u884C\uFF09\u3060\u3051\u3092\u5B9F\u4F53\u5316\nCREATE TEMP TABLE #sjis AS\n SELECT $id AS \u5BFE\u8C61id,\n TRANSLATE(\u4F1A\u793E\u540D, '\u555E\u2026\u881F', '\u5516\u2026\u874B') AS \u5909\u63DB\u5F8C\n FROM APP100\n WHERE \u4F1A\u793E\u540D <> TRANSLATE(\u4F1A\u793E\u540D, '\u555E\u2026\u881F', '\u5516\u2026\u874B');\nUPDATE APP100 SET \u4F1A\u793E\u540D = n.\u5909\u63DB\u5F8C FROM #sjis AS n WHERE APP100.$id = n.\u5BFE\u8C61id;\n```\n\n- `'\u555E\u2026\u881F'` / `'\u5516\u2026\u874B'` \u306F\u4E0A\u306E\u5168 40 \u5B57\uFF08\u5909\u63DB\u5143 / \u5909\u63DB\u5148\uFF09\u306E**\u7701\u7565\u8868\u8A18**\u3067\u3059\u3002\u5B9F\u969B\u306B\u306F\u7701\u7565\u305B\u305A\u5168\u5B57\u3092\u66F8\u304D\u307E\u3059\u3002\n- SELECT \u5074\u306E `WHERE` \u306B\u306F\u95A2\u6570\u3092\u66F8\u3051\u308B\u306E\u3067\u3001`\u4F1A\u793E\u540D <> TRANSLATE(\u2026)`\uFF08\uFF1D\u5909\u63DB\u3059\u308B\u3068\u5024\u304C\u5909\u308F\u308B\u884C\uFF09\u3060\u3051\u3092\u9078\u3079\u307E\u3059\u3002\u5BFE\u8C61 0 \u4EF6\u3067\u3082 `UPDATE \u2026 FROM` \u306F no-op \u3067\u5B8C\u8D70\u3057\u307E\u3059\uFF08\u30EA\u30E9\u30F3\u5B89\u5168\uFF09\u3002\n- \u66F8\u304D\u8FBC\u307F\u524D\u306E\u4E8B\u524D\u78BA\u8A8D\u306F\u672B\u5C3E\u306B `VALIDATE ONLY` \u3092\u4ED8\u3051\u308B\u3068\u3001\u66F8\u304D\u8FBC\u307F 0 \u3067\u691C\u8A3C\u3060\u3051\u3067\u304D\u307E\u3059\uFF08\u4F8B: `UPDATE APP100 SET \u4F1A\u793E\u540D = TRANSLATE(\u2026) WHERE \u2026 VALIDATE ONLY`\uFF09\u3002\n\n---", uri: "ksql://recipes/r8" }, r9: { heading: "R9. \u30C7\u30FC\u30BF\u54C1\u8CEA\u30C1\u30A7\u30C3\u30AF \u2014 \u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u30FB\u6587\u5B57\u6570\u4E88\u7B97\uFF08v3.2.0\uFF09", text: "## R9. \u30C7\u30FC\u30BF\u54C1\u8CEA\u30C1\u30A7\u30C3\u30AF \u2014 \u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u30FB\u6587\u5B57\u6570\u4E88\u7B97\uFF08v3.2.0\uFF09\n\n`LENGTH`\uFF08UTF-16 \u30B3\u30FC\u30C9\u30E6\u30CB\u30C3\u30C8\uFF1Dkintone \u306E\u300C\u6587\u5B57\u6570\u300D\uFF09\u3068 `LENGTH_CHAR`\uFF08\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\uFF09\u306E**\u5DEE\u306F\u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u306E\u500B\u6570**\u3067\u3059\u3002\u7D75\u6587\u5B57\u3084 `\u{20B9F}`\u30FB`\u{20BB7}`\uFF08\u5E38\u7528\u6F22\u5B57\u30FB\u4EBA\u540D\u3067\u666E\u901A\u306B\u73FE\u308C\u308B\uFF09\u3092\u542B\u3080\u884C\u3092\u3001\u5916\u90E8\u9023\u643A\u306E\u524D\u306B\u6D17\u3044\u51FA\u305B\u307E\u3059\u3002\n\n```sql\n-- \u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u3092\u542B\u3080\u884C\u3092\u691C\u51FA\uFF08\u5DEE = \u30DA\u30A2\u6570\uFF09\nSELECT $id, \u4F1A\u793E\u540D,\n LENGTH(\u4F1A\u793E\u540D) AS \u6587\u5B57\u6570,\n LENGTH(\u4F1A\u793E\u540D) - LENGTH_CHAR(\u4F1A\u793E\u540D) AS \u30DA\u30A2\u6570\nFROM APP100\nWHERE LENGTH(\u4F1A\u793E\u540D) - LENGTH_CHAR(\u4F1A\u793E\u540D) > 0\n```\n\n- SELECT \u306E `WHERE` \u306F\u95A2\u6570\u30FB\u7B97\u8853\u5F0F\u3092\u66F8\u3051\u307E\u3059\uFF08FULL_SCAN \u3067 JS \u8A55\u4FA1\uFF09\u3002**\u89AA DML \u306E `WHERE` \u306B\u306F\u66F8\u3051\u306A\u3044**\u70B9\u304C\u5BFE\u7167\u7684\u3067\u3059\uFF08R10\uFF09\n- `\xE9\xE9` \u306E\u3088\u3046\u306A\u300CUTF-8 \u3060\u3068 2 \u30D0\u30A4\u30C8\uFF0F1 \u30E6\u30CB\u30C3\u30C8\u300D\u306E\u6587\u5B57\u306F\u5DEE 0 \u306B\u306A\u308A\u8AA4\u691C\u77E5\u3057\u307E\u305B\u3093\uFF08\u30D0\u30A4\u30C8\u6570\u6BD4\u8F03\u3067\u306F\u539F\u7406\u7684\u306B\u5224\u5B9A\u3067\u304D\u306A\u304B\u3063\u305F\u30B1\u30FC\u30B9\uFF09\n- kintone \u306E `maxLength` \u306F UTF-16 \u3067\u6570\u3048\u308B\u305F\u3081\u3001**\u4E0A\u9650\u30C1\u30A7\u30C3\u30AF\u306F\u5F93\u6765\u3069\u304A\u308A `LENGTH`** \u3092\u4F7F\u3044\u307E\u3059\u3002\u300C\u4EBA\u304C\u6570\u3048\u308B\u6587\u5B57\u6570\u300D\u306B\u8FD1\u3044\u306E\u306F `LENGTH_CHAR` \u3067\u3059\uFF08IVS\u30FB\u7D50\u5408\u6587\u5B57\u30FBZWJ \u7D75\u6587\u5B57\u306F\u5BFE\u8C61\u5916\uFF09\n\n---", uri: "ksql://recipes/r9" }, r10: { heading: "R10. \u8868\u8A18\u306E\u6B63\u898F\u5316\u3092\u66F8\u304D\u623B\u3059\uFF08`UPDATE SET` \u306E\u6587\u5B57\u5217\u95A2\u6570\u30FBv3.2.0\uFF09", text: "## R10. \u8868\u8A18\u306E\u6B63\u898F\u5316\u3092\u66F8\u304D\u623B\u3059\uFF08`UPDATE SET` \u306E\u6587\u5B57\u5217\u95A2\u6570\u30FBv3.2.0\uFF09\n\nv3.2.0 \u304B\u3089\u6587\u5B57\u5217\u95A2\u6570\u3092 `UPDATE SET` \u306B\u76F4\u63A5\u66F8\u3051\u307E\u3059\uFF08\u5F93\u6765\u306F `CASE WHEN 1=1 THEN \u2026 ELSE \u2026 END` \u3067\u5305\u3080\u304B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\u304C\u5FC5\u8981\u3067\u3057\u305F\uFF09\u3002\n\n**\u5F62 A: \u5BFE\u8C61\u5168\u884C\u3092\u305D\u306E\u307E\u307E\u6B63\u898F\u5316\u3059\u308B\uFF081 \u6587\uFF09**\n\n```sql\n-- \u96FB\u8A71\u756A\u53F7\u306E\u30CF\u30A4\u30D5\u30F3\u30FB\u7A7A\u767D\u3092\u9664\u53BB\u3057\u3066\u66F8\u304D\u623B\u3059\nUPDATE APP100\nSET \u96FB\u8A71\u756A\u53F7 = REPLACE(REPLACE(\u96FB\u8A71\u756A\u53F7, '-', ''), ' ', '')\nWHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n```\n\n```sql\n-- \u9867\u5BA2\u30B3\u30FC\u30C9\u3092 8 \u6841\u30BC\u30ED\u57CB\u3081\u3078\uFF08\u5148\u982D\u30BC\u30ED\u306F\u6587\u5B57\u5217\u306E\u307E\u307E\u4FDD\u6301\u3055\u308C\u308B\uFF09\nUPDATE APP100 SET \u9867\u5BA2\u30B3\u30FC\u30C9 = LPAD(\u9867\u5BA2\u30B3\u30FC\u30C9, 8, '0') WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n```\n\n- **\u89AA DML \u306E `WHERE` \u306B\u95A2\u6570\u306F\u66F8\u3051\u306A\u3044**\u305F\u3081\u3001\u5F62 A \u306F\u300C\u5909\u63DB\u304C\u4E0D\u8981\u306A\u884C\u300D\u3082\u542B\u3081\u3066 WHERE \u6761\u4EF6\u306E\u5168\u884C\u3078 PUT \u3057\u307E\u3059\u3002**\u5024\u306F\u51AA\u7B49\u3067\u3082\u526F\u4F5C\u7528\u306F\u51AA\u7B49\u3067\u306F\u3042\u308A\u307E\u305B\u3093** \u2014 \u540C\u5024\u3067\u3082\u66F4\u65B0\u6271\u3044\u306B\u306A\u308A\u3001\u66F4\u65B0\u65E5\u6642\u304C\u5909\u308F\u308A\u3001\u901A\u77E5\u30FBWebhook\u30FB\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA JS \u304C\u767A\u706B\u3057\u5F97\u307E\u3059\u3002\u30EA\u30E9\u30F3\u3084\u526F\u4F5C\u7528\u3092\u6291\u3048\u305F\u3044\u5834\u5408\u306F\u5F62 B \u304C\u5B89\u5168\u3067\u3059\u3002`VALIDATE ONLY` \u306F**\u691C\u8A3C\u30A8\u30E9\u30FC\u306E\u6709\u7121**\u3092\u66F8\u304D\u8FBC\u307F\u30BC\u30ED\u3067\u4E8B\u524D\u78BA\u8A8D\u3059\u308B\u3082\u306E\u3067\uFF08\u30A8\u30E9\u30FC\u884C\u3060\u3051\u304C\u8FD4\u308B\uFF09\u3001\u6B63\u5E38\u884C\u306E\u5909\u63DB\u5F8C\u306E\u5024\u4E00\u89A7\u3092\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u6A5F\u80FD\u3067\u306F\u3042\u308A\u307E\u305B\u3093\n- `UPDATE \u2026 FROM` \u3068\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306E `SET` \u306B\u306F\u95A2\u6570\u3092\u76F4\u63A5\u66F8\u3051\u307E\u305B\u3093\uFF08\u660E\u793A\u30A8\u30E9\u30FC\uFF09\n\n**\u5F62 B: \u5909\u63DB\u304C\u5FC5\u8981\u306A\u884C\u3060\u3051\u3078\u7D5E\u308B\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\u30FB\u5F93\u6765\u306E\u5B9A\u77F3\uFF09**\n\n```sql\nCREATE TEMP TABLE #norm AS\n SELECT $id AS \u5BFE\u8C61id,\n REPLACE(REPLACE(\u96FB\u8A71\u756A\u53F7, '-', ''), ' ', '') AS \u6B63\u898F\u5316\n FROM APP100\n WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406')\n AND LENGTH(\u96FB\u8A71\u756A\u53F7) > LENGTH(REPLACE(REPLACE(\u96FB\u8A71\u756A\u53F7, '-', ''), ' ', ''));\nUPDATE APP100 SET \u96FB\u8A71\u756A\u53F7 = n.\u6B63\u898F\u5316 FROM #norm AS n WHERE APP100.$id = n.\u5BFE\u8C61id;\n```\n\nSELECT \u5074\u306E `WHERE` \u306A\u3089\u95A2\u6570\u3067\u300C\u5909\u63DB\u3059\u308B\u3068\u5909\u308F\u308B\u884C\u300D\u3060\u3051\u3092\u9078\u3079\u307E\u3059\u3002\u5BFE\u8C61 0 \u4EF6\u3067\u3082 `UPDATE \u2026 FROM` \u306F no-op \u3067\u5B8C\u8D70\u3057\u307E\u3059\uFF08\u30EA\u30E9\u30F3\u5B89\u5168\uFF09\u3002\n\n---", uri: "ksql://recipes/r10" }, r11: { heading: "R11. \u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A2\u30D7\u30EA\u3078\u53D6\u8FBC\u3080\uFF08`IMPORT`\u30FBv3.6.0\uFF09", text: "## R11. \u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A2\u30D7\u30EA\u3078\u53D6\u8FBC\u3080\uFF08`IMPORT`\u30FBv3.6.0\uFF09\n\nCSV / JSON \u30D5\u30A1\u30A4\u30EB\u3092\u3001**\u5909\u63DB\u30FB\u691C\u8A3C\u30FB\u4E0D\u826F\u884C\u9694\u96E2\u4ED8\u304D\u3067**\u30A2\u30D7\u30EA\u3078\u53D6\u8FBC\u3080\u81EA\u5DF1\u5B8C\u7D50\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u3002\u30BD\u30FC\u30B9\u306F**\u9762\u304C\u540D\u524D\u4ED8\u304D\u3067\u4F9B\u7D66**\u3057\u3001SQL \u306B\u30D1\u30B9\u3092\u57CB\u3081\u307E\u305B\u3093\uFF08`IMPORT` \u306F source \u4F9B\u7D66\u6642\u306E\u307F\u6709\u52B9\uFF1Doff-by-default\uFF09\u3002\n\n| \u9762 | \u30BD\u30FC\u30B9\u4F9B\u7D66 |\n|---|---|\n| CLI | `--import-csv <name>=<path>` / `--import-json <name>=<path>` |\n| MCP | `importSources: [{ name, text \\| base64, encoding? }]`\uFF08inline\u30FB\u30D1\u30B9\u4E0D\u53EF\uFF09 |\n| \u30D7\u30E9\u30B0\u30A4\u30F3 | \u30D8\u30C3\u30C0\u30FC\u306E\u300C\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E\u300D\uFF08\u30BD\u30FC\u30B9\u540D\uFF1D\u62E1\u5F35\u5B50\u3092\u9664\u53BB\u3057\u8B58\u5225\u5B50\u306B\u4F7F\u3048\u306A\u3044\u6587\u5B57\u3092 `_` \u306B\u6B63\u898F\u5316\u3002`sales.csv` \u2192 `sales`\u3001`sales 2026.csv` \u2192 `sales_2026`\uFF09 |\n\n**\u30D5\u30E9\u30C3\u30C8 CSV \u3092\u5C04\u5F71\u3057\u3066 UPSERT**\uFF08`CAST` \u3067\u6570\u5024\u5316\u30FB\u696D\u52D9\u30AD\u30FC\u3067\u91CD\u8907\u5224\u5B9A\uFF09:\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nFROM CSV sales\nSELECT code, CAST(amount AS NUMBER) AS \u91D1\u984D\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9);\n```\n\n**\u4E0D\u826F\u884C\u3092\u9694\u96E2\u3057\u3066\u6B8B\u308A\u3092\u6D41\u3059**\uFF08`ON ERROR SKIP`\u30FBR6 \u3068\u540C\u3058\u601D\u60F3\uFF09:\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D) FROM CSV sales BY NAME\nON ERROR SKIP INTO #err;\nSELECT * FROM #err;\n```\n\n**JSON**\uFF08\u53B3\u5BC610\u9032\u30FB\u7CBE\u5EA6\u5BFE\u8C61\u306E NUMBER \u306F string \u4F9B\u7D66\u30FB\u5168\u968E\u5C64 duplicate key \u62D2\u5426\uFF09:\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D) FROM JSON payload;\n```\n\n- `VALIDATE ONLY` \u3067**\u66F8\u8FBC\u307F\u524D\u306B\u5168\u884C\u691C\u8A3C**\uFF08`ksql_validate` \u306F\u69CB\u6587\u306E\u307F\u30FB\u5B9F\u884C\u53EF\u5426\u306F VALIDATE ONLY \u3067\u78BA\u8A8D\u3059\u308B\uFF09\u3002\n- `CHECK WHEN \u2026 THEN \u2026`\uFF08B37\uFF09\u3067\u884C\u30EC\u30D9\u30EB\u696D\u52D9\u30EB\u30FC\u30EB\u3092\u4ED8\u4E0E\u3067\u304D\u308B\u3002\n- **\u53D6\u8FBC\u884C\u6570\u306E\u4E0A\u9650 `maxRecords` \u306F\u9762\u30FB\u7D4C\u8DEF\u3067\u7570\u306A\u308B**\uFF08\u8D85\u904E\u306F fail-closed\u30FB\u30B5\u30A4\u30EC\u30F3\u30C8\u5207\u308A\u6368\u3066\u306A\u3057\uFF09: CLI=\u65E2\u5B9A **500**\uFF08`--max-records`\uFF09\uFF0F\u30D7\u30E9\u30B0\u30A4\u30F3=\u521D\u671F **3000**\uFF08UI \u53EF\u5909\uFF09\uFF0FMCP=\u901A\u5E38 mutation \u306F `dmlMaxRows`\uFF08\uFF0B1\uFF09\u3067\u89E3\u6C7A\u30FB`ON ERROR SKIP` / `VALIDATE ONLY` \u306F runtime `maxRecords` \u306B\u623B\u308B\u3002CSV \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u7F6E\u63DB\u3067\u306F\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u5168\u4EF6\u8D70\u67FB\u306B\u3082\u540C\u4E0A\u9650\u304C\u52B9\u304F\uFF08\u5F8C\u8FF0\uFF09\u3002", uri: "ksql://recipes/r11" }, r12: { heading: "R12. cli-kintone \u3068 round-trip \u3059\u308B\uFF08`BY NAME`\u30FB\u30EC\u30B3\u30FC\u30C9\u756A\u53F7 UPDATE\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FBv3.6.0\uFF09", text: "## R12. cli-kintone \u3068 round-trip \u3059\u308B\uFF08`BY NAME`\u30FB\u30EC\u30B3\u30FC\u30C9\u756A\u53F7 UPDATE\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FBv3.6.0\uFF09\n\nkintone \u516C\u5F0F CLI `cli-kintone` \u3067 export \u3057\u305F CSV \u3092\u3001\u305D\u306E\u307E\u307E kSQL \u3078\u623B\u305B\u307E\u3059\u3002\n\n**\u30D5\u30E9\u30C3\u30C8 export \u3092\u53D6\u8FBC\u3080**\uFF08\u30D8\u30C3\u30C0\uFF1D\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u540D\u3067\u5BFE\u5FDC\u30FB\u975E\u66F8\u8FBC\u307F\u5217\u306F\u76E3\u67FB\u4ED8\u304D\u7121\u8996\u30FB\u8907\u6570\u5024\u306F\u30BB\u30EB\u5185 LF\uFF09:\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D, \u62C5\u5F53\u8005)\nFROM CSV exported BY NAME IGNORE UNKNOWN COLUMNS;\n```\n\n**\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u3092\u30AD\u30FC\u306B\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3092\u66F4\u65B0**\uFF08\u7D14 UPDATE\u30FBINSERT 0\u30FB\u756A\u53F7\u306F\u7167\u5408\u5C02\u7528\uFF09:\n```sql\nIMPORT UPDATE INTO APP100 (\u91D1\u984D)\nFROM CSV exported BY NAME\nMATCH RECORD NUMBER SOURCE `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7`;\n```\n\n**\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB**\uFF08\u610F\u5473\u8AD6\u304C source \u3067\u7570\u306A\u308B\uFF09:\n- **JSON**\uFF08\u30CD\u30B9\u30C8\u914D\u5217\u30FB**\u65B0\u898F INSERT / \u696D\u52D9\u30AD\u30FC UPSERT**\u30FB\u884C ID \u306A\u3057\u5168\u7F6E\u63DB\uFF09:\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u660E\u7D30(\u54C1\u540D, \u6570\u91CF)) FROM JSON payload;\n```\n- **CSV `*` \u5F62\u5F0F**\uFF08cli-kintone export\u30FB**\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u306E UPDATE \u5168\u7F6E\u63DB**\u30FB\u884C ID \u7DAD\u6301\u66F4\u65B0/\u6B20\u843D\u524A\u9664\uFF09:\n```sql\nIMPORT UPDATE INTO APP100 (\u660E\u7D30(\u54C1\u540D, \u6570\u91CF) ROW ID SOURCE `\u660E\u7D30_\u884CID`)\nFROM CSV exported BY NAME\nMATCH RECORD NUMBER SOURCE `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7`\nREPLACE SUBTABLES (\u660E\u7D30);\n```\n\n**cli-kintone \u3068\u306E\u4F7F\u3044\u5206\u3051**:\n\n| \u7528\u9014 | \u63A8\u5968 |\n|---|---|\n| \u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u8FBC\u307F\u306E\u53D6\u8FBC\u30FB\u5358\u7D14\u306A\u4E00\u62EC\u30ED\u30FC\u30C9 | **cli-kintone** |\n| \u53D6\u8FBC\u6642\u306E\u5909\u63DB\uFF08`CAST`/\u95A2\u6570\uFF09\u30FB\u696D\u52D9\u30C1\u30A7\u30C3\u30AF\u30FB\u4E0D\u826F\u884C\u9694\u96E2\u30FBSQL \u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u7D71\u5408\u30FBMCP/\u30D6\u30E9\u30A6\u30B6\u304B\u3089 | **kSQL IMPORT** |\n\n- **\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\uFF08FILE\uFF09\u306F kSQL IMPORT \u975E\u5BFE\u5FDC**\uFF08cli-kintone \u3092\u4F7F\u3046\uFF09\u3002\n- **CSV \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F UPDATE \u5C02\u7528**\uFF08`REPLACE SUBTABLES` \u3067\u5168\u7F6E\u63DB\uFF09\u3002**\u65B0\u898F INSERT \u306F JSON**\u3002\n- **\u7834\u58CA\u7684\u5168\u7F6E\u63DB\u306F\u9762\u304C\u524A\u9664\u5185\u8A33\u3092 confirm \u8868\u793A\u3067\u304D\u308B\u3068\u304D\u3060\u3051\u5B9F\u884C**\uFF08fail-closed\uFF09\uFF0B\u524A\u9664\u4EF6\u6570\u3092\u660E\u793A\u3002\u5168\u7F6E\u63DB\u306E\u6307\u5B9A\u306F\u30BD\u30FC\u30B9\u7A2E\u5225\u3067\u7570\u306A\u308B\uFF1D**CSV \u306F `REPLACE SUBTABLES` \u5FC5\u9808\uFF0FJSON \u306F\u30CD\u30B9\u30C8\u914D\u5217\u304C\u5168\u7F6E\u63DB\u5BFE\u8C61**\uFF08JSON UPSERT \u3082\u65E2\u5B58\u5B50\u884C\u3092\u524A\u9664\u3059\u308B\u304C `REPLACE SUBTABLES` \u306F\u66F8\u304B\u306A\u3044\u30FB\u66F8\u304F\u3068\u69CB\u6587\u30A8\u30E9\u30FC\uFF09\u3002\n- **MCP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB mutation \u3092 fail-closed**\uFF08\u524A\u9664\u5185\u8A33\u3092\u5BFE\u8A71\u627F\u8A8D\u3067\u304D\u306A\u3044\u305F\u3081\uFF09\u2192 \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u66F8\u8FBC\u307F\u306F CLI / \u30D7\u30E9\u30B0\u30A4\u30F3\u3001MCP \u306F `ksql_query` \u306E `VALIDATE ONLY`\uFF0F`ksql_explain` \u306E `EXPLAIN` \u307E\u3067\u3002\n- **CSV \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u7F6E\u63DB\u306E\u8D70\u67FB\u4E0A\u9650**: \u884C ID \u6240\u6709\u6A29\u691C\u67FB\u3067\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3092\u5168\u4EF6\u8D70\u67FB\u3059\u308B\u305F\u3081\u3001\u53D6\u8FBC\u89AA\u304C\u5C11\u6570\u3067\u3082\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u304C `maxRecords` \u3092\u8D85\u3048\u308B\u3068 fail-closed \u306B\u306A\u308B\u3002\n- \u6A19\u6E96\u30B9\u30DA\u30FC\u30B9\u30FB**\u30B2\u30B9\u30C8\u30B9\u30DA\u30FC\u30B9**\u306E\u4E21\u65B9\u3067\u52D5\u4F5C\u3059\u308B\u3002\n\n---", uri: "ksql://recipes/r12" }, r13: { heading: "R13. \u660E\u7D30\uFF0B\u5C0F\u8A08\u30FB\u7DCF\u8A08\u3092 1 \u30AF\u30A8\u30EA\u3067\u4F5C\u308B\uFF08`ROLLUP` / `GROUPING`\u30FBv3.17.0\uFF09", text: "## R13. \u660E\u7D30\uFF0B\u5C0F\u8A08\u30FB\u7DCF\u8A08\u3092 1 \u30AF\u30A8\u30EA\u3067\u4F5C\u308B\uFF08`ROLLUP` / `GROUPING`\u30FBv3.17.0\uFF09\n\n\u30EC\u30DD\u30FC\u30C8\u3084\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u5B9A\u756A\u300C\u4F1A\u793E\u5225\u306E\u660E\u7D30\u306B**\u5168\u4F53\u5408\u8A08\u3092 1 \u884C\u8DB3\u3059**\u300D\u3092\u3001`GROUP BY ROLLUP` \u3068 `GROUPING()` \u3067 1 \u30AF\u30A8\u30EA\u30FB1 \u7D50\u679C\u30BB\u30C3\u30C8\u306B\u307E\u3068\u3081\u307E\u3059\u3002B64\uFF08v3.16.0\uFF09\u306E\u6761\u4EF6\u4ED8\u304D\u96C6\u8A08 `SUM(CASE WHEN \u2026 END)` \u3068\u305D\u306E\u307E\u307E\u4F75\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT\n CASE WHEN GROUPING(\u4F1A\u793E\u540D) = 1 THEN '\u5408\u8A08' ELSE \u4F1A\u793E\u540D END AS \u4F1A\u793E\u540D,\n COUNT(*) AS \u6848\u4EF6\u6570,\n SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08,\n SUM(CASE WHEN \u5546\u8AC7\u30D5\u30A7\u30FC\u30BA = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) AS \u53D7\u6CE8\u6E08\u58F2\u4E0A,\n SUM(CASE WHEN \u5546\u8AC7\u30D5\u30A7\u30FC\u30BA IN ('\u63D0\u6848\u4E2D','\u5185\u793A') THEN \u58F2\u4E0A ELSE 0 END) AS \u898B\u8FBC\u58F2\u4E0A,\n SUM(CASE WHEN \u5546\u8AC7\u30D5\u30A7\u30FC\u30BA = '\u53D7\u6CE8' THEN 1 ELSE 0 END) AS \u53D7\u6CE8\u4EF6\u6570\nFROM APP100\nGROUP BY ROLLUP(\u4F1A\u793E\u540D)\nORDER BY GROUPING(\u4F1A\u793E\u540D), \u58F2\u4E0A\u5408\u8A08 DESC\n```\n\n\u7D50\u679C\u306F\u300C\u4F1A\u793E\u5225\u306E\u660E\u7D30\u884C\uFF08`GROUPING(\u4F1A\u793E\u540D)=0`\uFF09\u300D\u306B\u7D9A\u3044\u3066\u3001\u6700\u5F8C\u306B\u300C\u7DCF\u8A08\u884C\uFF08`=1`\uFF09\u300D\u304C 1 \u884C\u4ED8\u304D\u307E\u3059\u3002\n\n| \u4F1A\u793E\u540D | \u6848\u4EF6\u6570 | \u58F2\u4E0A\u5408\u8A08 | \u53D7\u6CE8\u6E08\u58F2\u4E0A | \u898B\u8FBC\u58F2\u4E0A | \u53D7\u6CE8\u4EF6\u6570 |\n|---|--:|--:|--:|--:|--:|\n| \uFF08\u5404\u793E\u306E\u660E\u7D30\u2026\u58F2\u4E0A\u5408\u8A08\u306E\u964D\u9806\uFF09 | \u2026 | \u2026 | \u2026 | \u2026 | \u2026 |\n| **\u5408\u8A08** | **20** | **81,800,000** | **40,800,000** | **41,000,000** | **8** |\n\n**\u30DD\u30A4\u30F3\u30C8**\n\n- `GROUPING(field)` \u306F\u3001\u305D\u306E\u884C\u3067 `field` \u304C\u96C6\u7D04\u3055\u308C\u305F\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u306A\u3089 `1`\u3001\u30B0\u30EB\u30FC\u30D7\u30AD\u30FC\u3067\u6B8B\u3063\u3066\u3044\u308C\u3070 `0`\u3002**\u7DCF\u8A08\u884C\u306E `\u4F1A\u793E\u540D` \u306F\u7A7A\u6587\u5B57**\u306B\u306A\u308B\u306E\u3067\u3001`CASE WHEN GROUPING(\u4F1A\u793E\u540D)=1 THEN '\u5408\u8A08' \u2026` \u3067\u30E9\u30D9\u30EB\u5316\u3057\u307E\u3059\u3002\u6A5F\u68B0\u7684\u306B\u5224\u5225\u3057\u305F\u3044\u3068\u304D\u306F `GROUPING(\u4F1A\u793E\u540D) AS g` \u3092\u5217\u306B\u51FA\u3057\u307E\u3059\uFF08\u5B9F\u30C7\u30FC\u30BF\u306E\u7A7A\u30BB\u30EB\u3068\u7DCF\u8A08\u884C\u3092\u5024\u3060\u3051\u3067\u306F\u533A\u5225\u3067\u304D\u306A\u3044\u305F\u3081\uFF09\u3002\n- **`ORDER BY GROUPING(\u4F1A\u793E\u540D), \u58F2\u4E0A\u5408\u8A08 DESC`** \u3067\u3001\u660E\u7D30\uFF08`0`\uFF09\u3092\u5148\u306B\u30FB\u7DCF\u8A08\uFF08`1`\uFF09\u3092\u672B\u5C3E\u306B\u7F6E\u3051\u307E\u3059\u3002\n- **\u968E\u5C64\u5C0F\u8A08**\u306F\u8907\u6570\u5217 ROLLUP \u3067: `GROUP BY ROLLUP(\u5730\u57DF, \u4F1A\u793E\u540D)` \u306F\u300C\u5730\u57DF\xD7\u4F1A\u793E\u306E\u660E\u7D30 \u2192 \u5730\u57DF\u5C0F\u8A08 \u2192 \u7DCF\u8A08\u300D\u3092\u51FA\u3057\u307E\u3059\uFF08`GROUPING(\u5730\u57DF)` / `GROUPING(\u4F1A\u793E\u540D)` \u3067\u5404\u6BB5\u3092\u5224\u5225\uFF09\u3002\u51FA\u3059\u968E\u5C64\u3092\u9078\u3073\u305F\u3044\u3068\u304D\u306F `GROUP BY GROUPING SETS ((\u5730\u57DF, \u4F1A\u793E\u540D), (\u5730\u57DF), ())` \u3068\u660E\u793A\u3057\u307E\u3059\u3002\n\n**\u6CE8\u610F\uFF08v3.18.0 \u6642\u70B9\uFF09**\n\n- grouping item \u3068 `GROUPING()` \u306E\u5F15\u6570\u306F**\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u307F**\uFF08\u5F0F\u30FBSELECT alias\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB/CTE \u5B9F\u4F53\u5316\u5217\u306F\u4E0D\u53EF\uFF09\u3002\n- \u5C0F\u8A08\u30FB\u7DCF\u8A08\u306F**\u5168\u5165\u529B\u306B\u4F9D\u5B58**\u3059\u308B\u305F\u3081\u5E38\u306B\u5B8C\u5168\u5165\u529B\u304C\u5FC5\u8981\u3067\u3059\u3002`onLimit=truncate` \u306F\u4F7F\u3048\u305A\u3001\u53D6\u5F97\u4E0A\u9650\u306B\u9054\u3059\u308B\u3068**\u90E8\u5206\u7D50\u679C\u3092\u8FD4\u3055\u305A\u30A8\u30E9\u30FC**\uFF08fail-closed\uFF09\u3002\u5C55\u958B\u5F8C\u306E set \u6570\u30FBitem \u6570\u30FB\u751F\u6210\u884C\u6570\u306B\u3082\u5B89\u5168\u4E0A\u9650\u304C\u3042\u308A\u307E\u3059\u3002\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u306A\u306E\u3067 `ksql_query` \u3067\u5B9F\u884C\u3067\u304D\u307E\u3059\u3002\n- **v3.18.0 \u3067\u5BFE\u5FDC**: `CUBE(a, b, ...)`\uFF08\u5168 `2^n` \u7D44\u5408\u305B\uFF1D\u5404\u8EF8\u306E\u5C0F\u8A08\u3068\u7DCF\u8A08\u3002`2^n` \u304C\u4E0A\u9650\u8D85\u306A\u3089\u53D6\u5F97\u524D\u306B\u62D2\u5426\uFF09\u3001`HAVING` \u5185 `GROUPING()`\uFF08`= 1` \u3067\u7DCF\u8A08\u30FB\u5C0F\u8A08\u3060\u3051\u3001`= 0` \u3067\u660E\u7D30\u3060\u3051\uFF09\u3001`SELECT DISTINCT` \u3068\u306E\u4F75\u7528\uFF08`GROUPING()` \u3092\u6295\u5F71\u3057\u306A\u3044\u3068\u8868\u793A\u5024\u4E00\u81F4\u884C\u306F 1 \u884C\u306B\u96C6\u7D04\uFF09\u3002\n- **\u672A\u5BFE\u5FDC**: `KORDER BY`\u30FB\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u3068\u306E\u4F75\u7528\u3001`GROUPING()` \u306E\u5F0F\u5F15\u6570\u30FB\u8907\u6570\u5F15\u6570\u30FB`GROUPING_ID`\u3001grouping-set \u306E\u5165\u308C\u5B50\u30FB\u901A\u5E38 item \u3068\u306E\u6DF7\u5728\u3002\u8A73\u7D30\u306F\u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 [\xA78](ksql_language_reference.md#8-group-by--\u96C6\u8A08\u95A2\u6570)\u3002", uri: "ksql://recipes/r13" }, r14: { heading: "R14. \u7D2F\u7A4D\u6B8B\u9AD8\uFF08\u53F0\u5E33\uFF09\u3092\u53D6\u5F15\u9806\u3067\u8A08\u7B97\u3059\u308B", text: "## R14. \u7D2F\u7A4D\u6B8B\u9AD8\uFF08\u53F0\u5E33\uFF09\u3092\u53D6\u5F15\u9806\u3067\u8A08\u7B97\u3059\u308B\n\n\u540C\u3058\u65E5\u306E\u8907\u6570\u53D6\u5F15\u30921\u4EF6\u305A\u3064\u53CD\u6620\u3059\u308B\u53F0\u5E33\u3067\u306F\u3001\u65E2\u5B9A\u306E `RANGE` \u3067\u306F\u306A\u304F `ROWS` \u3092\u660E\u793A\u3057\u3001\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u3092\u30BF\u30A4\u30D6\u30EC\u30FC\u30AF\u30AD\u30FC\u306B\u3057\u307E\u3059\u3002\n\n```sql\nSELECT \u88FD\u54C1\u540D, \u65E5\u4ED8, \u30EC\u30B3\u30FC\u30C9\u756A\u53F7, \u500B\u6570_\u5728\u5EAB\u8A08\u7B97\u7528,\n SUM(\u500B\u6570_\u5728\u5EAB\u8A08\u7B97\u7528) OVER (\n PARTITION BY \u88FD\u54C1\u540D\n ORDER BY \u65E5\u4ED8, \u30EC\u30B3\u30FC\u30C9\u756A\u53F7\n ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW\n ) AS \u7D2F\u7A4D\u5728\u5EAB\nFROM APP4228\nORDER BY \u88FD\u54C1\u540D, \u65E5\u4ED8, \u30EC\u30B3\u30FC\u30C9\u756A\u53F7\n```\n\n- `PARTITION BY \u88FD\u54C1\u540D` \u3067\u88FD\u54C1\u3054\u3068\u306B\u6B8B\u9AD8\u3092\u5206\u3051\u307E\u3059\u3002\n- `ROWS` \u306F\u540C\u65E5\u53D6\u5F15\u30821\u884C\u305A\u3064\u53CD\u6620\u3057\u307E\u3059\u3002\u65E5\u6B21\u7DE0\u3081\u6B8B\u9AD8\u304C\u6B32\u3057\u3044\u5834\u5408\u306F\u30D5\u30EC\u30FC\u30E0\u53E5\u3092\u7701\u7565\u3057\u3001\u65E2\u5B9A `RANGE` \u3092\u4F7F\u3044\u307E\u3059\u3002\n- `ORDER BY \u65E5\u4ED8, \u30EC\u30B3\u30FC\u30C9\u756A\u53F7` \u306E\u3088\u3046\u306B\u4E00\u610F\u306B\u306A\u308B\u30AD\u30FC\u307E\u3067\u6307\u5B9A\u3059\u308B\u3068\u3001\u540C\u65E5\u5185\u306E\u9806\u5E8F\u3082\u6C7A\u5B9A\u7684\u306B\u306A\u308A\u307E\u3059\u3002\n- \u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u306F\u5B8C\u5168\u5165\u529B\u304C\u5FC5\u8981\u3067\u3059\u3002`maxRecords` \u3092\u5165\u529B\u4EF6\u6570\u4EE5\u4E0A\u306B\u8A2D\u5B9A\u3057\u3001\u4E0A\u9650\u5230\u9054\u6642\u306F\u90E8\u5206\u6B8B\u9AD8\u3092\u63A1\u7528\u305B\u305A\u30A8\u30E9\u30FC\u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002", uri: "ksql://recipes/r14" }, r15: { heading: "R15. \u5168\u4F53\u3067\u5272\u308B\uFF08\u69CB\u6210\u6BD4\u30FB\u7D2F\u7A4D\u69CB\u6210\u6BD4\u30FBABC\uFF09", text: "## R15. \u5168\u4F53\u3067\u5272\u308B\uFF08\u69CB\u6210\u6BD4\u30FB\u7D2F\u7A4D\u69CB\u6210\u6BD4\u30FBABC\uFF09\n\n**\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306E\u7D50\u679C\u306F\u540C\u3058 SELECT \u306E\u5F0F\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002** \u5272\u308A\u7B97\u30FB`ROUND`\u30FB`CASE` \u306F\u6B21\u306E\u6BB5\u3078\u79FB\u3057\u307E\u3059\u3002\n\u7DCF\u8A08\u3082\u300C1 \u884C\u306B\u7573\u3093\u3060\u5225\u306E\u96C6\u8A08\u300D\u3067\u306F\u306A\u304F **`SUM(x) OVER ()` \u3067\u5168\u884C\u306B\u8F09\u308B\u5217**\u3068\u3057\u3066\u51FA\u3059\u306E\u304C\u8981\u70B9\u3067\u3001\n\u3053\u308C\u3067 JOIN \u3082\u76F8\u95A2\u30B5\u30D6\u30AF\u30A8\u30EA\u3082\u8981\u3089\u306A\u304F\u306A\u308A\u307E\u3059\u3002\n\n```sql\nWITH base AS (\n SELECT \u88FD\u54C1\u540D, SUM(\u500B\u6570) AS \u51FA\u5EAB\u91CF\n FROM APP4228 WHERE \u5165\u51FA\u5EAB\u533A\u5206 = '\u51FA\u5EAB' GROUP BY \u88FD\u54C1\u540D\n), ranked AS (\n SELECT \u88FD\u54C1\u540D, \u51FA\u5EAB\u91CF,\n SUM(\u51FA\u5EAB\u91CF) OVER () AS \u7DCF\u8A08,\n SUM(\u51FA\u5EAB\u91CF) OVER (\n ORDER BY \u51FA\u5EAB\u91CF DESC, \u88FD\u54C1\u540D\n ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW\n ) AS \u7D2F\u8A08\n FROM base\n)\nSELECT \u88FD\u54C1\u540D, \u51FA\u5EAB\u91CF,\n ROUND(\u51FA\u5EAB\u91CF * 100.0 / \u7DCF\u8A08, 1) AS \u69CB\u6210\u6BD4,\n ROUND(\u7D2F\u8A08 * 100.0 / \u7DCF\u8A08, 1) AS \u7D2F\u7A4D\u69CB\u6210\u6BD4\nFROM ranked\nORDER BY \u51FA\u5EAB\u91CF DESC, \u88FD\u54C1\u540D\n```\n\n\u6BB5\u306E\u5F79\u5272\u306F 3 \u3064\u306B\u5206\u304B\u308C\u307E\u3059\u3002**\u3053\u306E\u5206\u3051\u65B9\u81EA\u4F53\u304C\u5236\u7D04\u3078\u306E\u5BFE\u51E6**\u3067\u3059\u3002\n\n| \u6BB5 | \u3059\u308B\u3053\u3068 |\n|---|---|\n| `base` | \u96C6\u8A08\u3057\u3066\u7C92\u5EA6\u3092\u6C7A\u3081\u308B\uFF08\u3053\u3053\u3067\u306F\u88FD\u54C1\u3054\u3068\uFF09 |\n| `ranked` | **\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u5217\u3068\u3057\u3066\u51FA\u3059\u3060\u3051**\u3002\u5F0F\u3067\u306F\u5305\u307E\u306A\u3044 |\n| \u6700\u7D42 SELECT | \u51FA\u305F\u5217\u3092\u4F7F\u3063\u3066\u5272\u308B\u30FB\u4E38\u3081\u308B\u30FB\u533A\u5206\u3059\u308B |\n\n- **`ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW` \u3092\u660E\u793A\u3057\u307E\u3059\u3002** \u65E2\u5B9A\u306F `RANGE` \u3067\u3001\n **\u540C\u984D\u306E\u884C\u304C\u3059\u3079\u3066\u540C\u3058\u7D2F\u8A08\u5024**\u306B\u306A\u308A\u307E\u3059\uFF08\u540C\u984D\u304C\u4E26\u3076\u3068\u7D2F\u7A4D\u69CB\u6210\u6BD4\u304C\u98DB\u3073\u307E\u3059\uFF09\u3002\n- **`ORDER BY` \u306F\u30BF\u30A4\u307E\u3067\u6C7A\u3081\u307E\u3059\u3002** \u4E0A\u306E\u4F8B\u306E `, \u88FD\u54C1\u540D` \u304C\u305D\u308C\u3067\u3001\n \u540C\u984D\u304C\u3042\u308B\u3068\u7D2F\u7A4D\u306E\u5272\u308A\u5F53\u3066\u304C\u4E0D\u5B9A\u306B\u306A\u308A\u307E\u3059\u3002\n- **`100.0` \u3068\u66F8\u304D\u307E\u3059\u3002** \u6574\u6570\u3069\u3046\u3057\u306E\u9664\u7B97\u306B\u3057\u306A\u3044\u305F\u3081\u3067\u3059\u3002\n- \u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u306F\u5B8C\u5168\u5165\u529B\u304C\u5FC5\u8981\u3067\u3059\u3002`maxRecords` \u3092\u5165\u529B\u4EF6\u6570\u4EE5\u4E0A\u306B\u3057\u3001\n \u4E0A\u9650\u5230\u9054\u6642\u306F\u90E8\u5206\u7D50\u679C\u3092\u63A1\u3089\u305A\u30A8\u30E9\u30FC\u3068\u3057\u3066\u6271\u3044\u307E\u3059\uFF08`onLimit=truncate` \u306F\u9069\u7528\u3055\u308C\u307E\u305B\u3093\uFF09\u3002\n\nABC \u533A\u5206\u307E\u3067\u4ED8\u3051\u308B\u306A\u3089\u3001\u6700\u7D42\u6BB5\u306B `CASE` \u3092\u8DB3\u3057\u307E\u3059\uFF08**\u7D2F\u7A4D\u69CB\u6210\u6BD4\u306E\u5F0F\u3092 `CASE` \u306E\u4E2D\u306B\u76F4\u63A5\u66F8\u3051\u307E\u3059**\u3002\n\u30A6\u30A3\u30F3\u30C9\u30A6\u306F\u3082\u3046 `ranked` \u3067\u5217\u306B\u306A\u3063\u3066\u3044\u308B\u305F\u3081\u3067\u3059\uFF09\u3002\n\n```sql\nSELECT \u88FD\u54C1\u540D, \u51FA\u5EAB\u91CF,\n ROUND(\u7D2F\u8A08 * 100.0 / \u7DCF\u8A08, 1) AS \u7D2F\u7A4D\u69CB\u6210\u6BD4,\n CASE WHEN \u7D2F\u8A08 * 100.0 / \u7DCF\u8A08 <= 80 THEN 'A'\n WHEN \u7D2F\u8A08 * 100.0 / \u7DCF\u8A08 <= 95 THEN 'B'\n ELSE 'C' END AS \u533A\u5206\nFROM ranked\nORDER BY \u51FA\u5EAB\u91CF DESC, \u88FD\u54C1\u540D\n```\n\n\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3067\u3082\u540C\u3058\u5F62\u304C\u66F8\u3051\u307E\u3059\uFF08`CREATE TEMP TABLE #base AS ...; CREATE TEMP TABLE #ranked AS ...; SELECT ...`\uFF09\u3002\n**1 \u6587\u3067\u5B8C\u7D50\u3059\u308B CTE \u306E\u307B\u3046\u304C\u3001\u4FDD\u5B58\u30AF\u30A8\u30EA\u306B\u3082 CLI \u306B\u3082\u305D\u306E\u307E\u307E\u8F09\u305B\u3089\u308C\u307E\u3059\u3002**", uri: "ksql://recipes/r15" }, r16: { heading: "R16. \u524D\u6708\u6BD4\u3092\u51FA\u3059\uFF08`LAG`\uFF09", text: "## R16. \u524D\u6708\u6BD4\u3092\u51FA\u3059\uFF08`LAG`\uFF09\n\n\u6708\u6B21\u96C6\u7D04\u306E\u76F4\u524D\u884C\u3092 `LAG` \u3067\u53C2\u7167\u3057\u3001\u524D\u6708\u6BD4\u3092\u51FA\u3057\u307E\u3059\u3002\u30A6\u30A3\u30F3\u30C9\u30A6\u7D50\u679C\u3092\u540C\u3058SELECT\u306E\u5F0F\u306B\u542B\u3081\u3089\u308C\u306A\u3044\u305F\u3081\u3001**\u6708\u6B21\u96C6\u7D04 \u2192 \u524D\u6708\u5217 \u2192 \u6BD4\u7387\u8A08\u7B97**\u306E3\u6BB5\u306B\u5206\u3051\u307E\u3059\u3002\n\n```sql\nWITH \u6708\u6B21 AS (\n SELECT DATE_FORMAT(\u65E5\u4ED8, '%Y-%m') AS \u5E74\u6708, SUM(\u500B\u6570) AS \u51FA\u5EAB\u6570\n FROM APP4228\n WHERE \u5165\u51FA\u5EAB\u533A\u5206 = '\u51FA\u5EAB'\n GROUP BY \u5E74\u6708\n), \u524D\u6708\u4ED8\u304D AS (\n SELECT \u5E74\u6708, \u51FA\u5EAB\u6570,\n LAG(\u51FA\u5EAB\u6570) OVER (ORDER BY \u5E74\u6708) AS \u524D\u6708\n FROM \u6708\u6B21\n)\nSELECT \u5E74\u6708, \u51FA\u5EAB\u6570, \u524D\u6708,\n CASE WHEN \u524D\u6708 = '' THEN ''\n ELSE ROUND((\u51FA\u5EAB\u6570 - \u524D\u6708) * 100.0 / \u524D\u6708, 1) END AS \u524D\u6708\u6BD4\nFROM \u524D\u6708\u4ED8\u304D\nORDER BY \u5E74\u6708\n```\n\n- \u5148\u982D\u6708\u306F\u53C2\u7167\u5148\u304C\u306A\u3044\u305F\u3081 `\u524D\u6708 = ''`\u3002\u6700\u7D42\u6BB5\u306E `CASE` \u3067\u524D\u6708\u6BD4\u3082\u7A7A\u6587\u5B57\u306B\u3057\u307E\u3059\u3002\n **`= 0` \u3067\u306F\u6355\u307E\u308A\u307E\u305B\u3093**\uFF08\u7A7A\u6587\u5B57\u306F\u7B97\u8853\u3067\u306F 0 \u306B\u306A\u308A\u307E\u3059\u304C\u3001\u6BD4\u8F03\u3067\u306F 0 \u3068\u7B49\u3057\u304F\u306A\u3044\u305F\u3081\uFF09\u3002`CASE WHEN \u524D\u6708 = 0` \u3068\u66F8\u304F\u3068\u5148\u982D\u884C\u304C `NaN` \u306B\u306A\u308A\u307E\u3059\u3002\n **\u540C\u3058\u7F60\u306F\u524D\u6708\u6BD4\u4EE5\u5916\u3067\u3082\u8E0F\u307F\u307E\u3059**\uFF1D**\u5728\u5EAB\u65E5\u6570**\uFF08\u5728\u5EAB \xF7 \u51FA\u5EAB\u30DA\u30FC\u30B9\uFF09\u30FB**\u5358\u4FA1**\u30FB**1 \u4EF6\u3042\u305F\u308A**\u30FB**\u56DE\u8EE2\u7387**\u306A\u3069\u3001**\u5206\u6BCD\u304C\u300C\u52D5\u304D\u306E\u7121\u3044\u5BFE\u8C61\u300D\u3067\u7A7A\u306B\u306A\u308B\u6307\u6A19**\u3002\u524D\u6708\u6BD4\u3060\u3051\u3092\u63A2\u3057\u3066\u3044\u308B\u3068\u6C17\u3065\u304D\u307E\u305B\u3093\u3002\n- `LAG(\u51FA\u5EAB\u6570)` \u306E\u7D50\u679C\u306F\u6570\u5024\u578B\u306E\u6BD4\u8F03\u898F\u5247\u3092\u5F15\u304D\u7D99\u3050\u305F\u3081\u3001\u5F8C\u6BB5\u306E\u8A08\u7B97\u30FB\u4E26\u3079\u66FF\u3048\u3067\u6587\u5B57\u5217\u9806\u306B\u306F\u306A\u308A\u307E\u305B\u3093\u3002\n- `ORDER BY \u5E74\u6708` \u304C\u91CD\u8907\u3057\u5F97\u308B\u7C92\u5EA6\u306A\u3089\u3001\u305D\u306E\u8868\u306E\u4E2D\u3067\u4E00\u610F\u306B\u306A\u308B\u5217\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002**CTE \u306B\u306F `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7` \u304C\u7121\u3044\u306E\u3067\u3001\u5143\u306E\u96C6\u7D04\u30AD\u30FC\u3092\u3059\u3079\u3066\u542B\u3081\u307E\u3059**\u3002\n **\u3053\u306E\u4F8B\u306F\u6708\u6B21\u96C6\u7D04\u306A\u306E\u3067 `\u5E74\u6708` \u306F 1 \u884C\u306B\u5B9A\u307E\u308A\u307E\u3059\u304C\u3001\u5B9F\u884C\u3059\u308B\u3068\u5168\u9806\u5E8F\u306E\u8B66\u544A\u304C\u51FA\u307E\u3059\u3002** \u30A8\u30F3\u30B8\u30F3\u304C\u96C6\u7D04\u7D50\u679C\u306E\u4E00\u610F\u6027\u3092\u9759\u7684\u306B\u8A3C\u660E\u3067\u304D\u306A\u3044\u305F\u3081\u3067\u3059\u3002\u305F\u3060\u3057\u3001\u5404 window partition \u5185\u3067 `ORDER BY` \u5024\u306E\u7D44\u304C\u5165\u529B\u884C\u3092\u4E00\u610F\u306B\u8B58\u5225\u3059\u308B\u3068\u30AF\u30A8\u30EA\u69CB\u9020\u307E\u305F\u306F\u4FDD\u8A3C\u6E08\u307F\u5236\u7D04\u304B\u3089\u78BA\u8A8D\u3067\u304D\u308B\u5834\u5408\u306B\u9650\u308A\u3001\u8B66\u544A\u306F\u7121\u8996\u3067\u304D\u307E\u3059\u3002**\u3053\u306E\u4F8B\u306F\u5143\u306E\u96C6\u7D04\u30AD\u30FC `\u5E74\u6708` \u3092\u3059\u3079\u3066\u542B\u3080\u305F\u3081\u3001\u305D\u306E\u80AF\u5B9A\u4F8B\u3067\u3059\u3002** \u751F\u6210\u5217\u30FB\u518D\u5E30\u306E\u6DF1\u3055\u5217\u30FB`$id` \u7531\u6765\u3068\u3044\u3046\u7406\u7531\u3060\u3051\u3067\u306F\u7121\u8996\u3067\u304D\u307E\u305B\u3093\u3002\n- \u6708\u304C\u6B20\u3051\u3066\u3044\u308B\u5834\u5408\u3001`LAG` \u306F\u300C\u66A6\u4E0A\u306E\u524D\u6708\u300D\u3067\u306F\u306A\u304F\u300C\u76F4\u524D\u306B\u5B58\u5728\u3059\u308B\u884C\u300D\u3092\u8FD4\u3057\u307E\u3059\u3002\u6B20\u640D\u6708\u306E0\u57CB\u3081\u304C\u5FC5\u8981\u306A\u3089\u3001\u5148\u306B\u6708\u30DE\u30B9\u30BF\u7B49\u3067\u884C\u3092\u4F5C\u3063\u3066\u304B\u3089\u9069\u7528\u3057\u307E\u3059\u3002\n- \u5B8C\u5168\u5165\u529B\u304C\u5FC5\u8981\u3067\u3059\u3002`maxRecords` \u3092\u5165\u529B\u4EF6\u6570\u4EE5\u4E0A\u306B\u3057\u3001\u53D6\u5F97\u4E0A\u9650\u5230\u9054\u6642\u306F\u90E8\u5206\u7D50\u679C\u3092\u63A1\u7528\u3057\u307E\u305B\u3093\u3002", uri: "ksql://recipes/r16" }, r17: { heading: "R17. \u300C\u884C\u306E\u7121\u3044\u3082\u306E\u300D\u3092 0 \u3068\u3057\u3066\u4E26\u3079\u308B\uFF08\u30DE\u30B9\u30BF\u8D77\u70B9\u306E `LEFT JOIN`\uFF09", text: "## R17. \u300C\u884C\u306E\u7121\u3044\u3082\u306E\u300D\u3092 0 \u3068\u3057\u3066\u4E26\u3079\u308B\uFF08\u30DE\u30B9\u30BF\u8D77\u70B9\u306E `LEFT JOIN`\uFF09\n\n**`GROUP BY` \u306F\u30C7\u30FC\u30BF\u306E\u3042\u308B\u884C\u3057\u304B\u4F5C\u308A\u307E\u305B\u3093\u3002** \u96C6\u8A08\u5BFE\u8C61\u304C 0 \u4EF6\u306E\u3082\u306E\u306F**\u884C\u3054\u3068\u6D88\u3048\u307E\u3059**\u3002\n\u30A8\u30E9\u30FC\u3082\u8B66\u544A\u3082\u51FA\u306A\u3044\u306E\u3067\u3001**\u300C0 \u3060\u3063\u305F\u300D\u3068\u300C\u305D\u3082\u305D\u3082\u7121\u304B\u3063\u305F\u300D\u306E\u533A\u5225\u304C\u4ED8\u304D\u307E\u305B\u3093**\u3002\n\n**\u691C\u51FA\u3057\u305F\u3044\u306E\u304C\u307E\u3055\u306B\u305D\u306E 0 \u4EF6**\u306E\u3068\u304D\uFF08\u52D5\u304D\u304C\u6B62\u307E\u3063\u305F\u88FD\u54C1\u30FB\u53D6\u5F15\u306E\u7121\u3044\u53D6\u5F15\u5148\uFF09\u306B\u52B9\u304D\u307E\u3059\u3002\n\n### \u6D88\u3048\u308B\u4F8B\n\n```sql\n-- \u76F4\u8FD1 90 \u65E5\u306B\u51FA\u5EAB\u306E\u3042\u308B\u88FD\u54C1\u3057\u304B\u51FA\u306A\u3044\nSELECT \u88FD\u54C1\u540D, SUM(\u500B\u6570) AS \u51FA\u5EAB\u6570\nFROM APP4228\nWHERE \u5165\u51FA\u5EAB\u533A\u5206 = '\u51FA\u5EAB' AND \u65E5\u4ED8 >= '2026-05-08'\nGROUP BY \u88FD\u54C1\u540D\n```\n\n**\u30DE\u30B9\u30BF\u306B 8 \u88FD\u54C1\u3042\u3063\u3066\u3082 6 \u884C\u3057\u304B\u8FD4\u308A\u307E\u305B\u3093**\uFF08\u5B9F\u6E2C\uFF09\u3002\u51FA\u5EAB\u30BC\u30ED\u306E 2 \u88FD\u54C1\u304C\u6D88\u3048\u307E\u3059\u3002\n\n### \u30DE\u30B9\u30BF\u8D77\u70B9\u306B\u3059\u308B\u3068 0 \u304C\u51FA\u308B\n\n**\u8D77\u70B9\u3092\u30DE\u30B9\u30BF\u5074\u306B\u7F6E\u304D\u3001\u6761\u4EF6\u306F `WHERE` \u3067\u306F\u306A\u304F `CASE` \u306B\u5165\u308C\u307E\u3059\u3002**\n\n```sql\nSELECT m.\u88FD\u54C1\u540D,\n SUM(CASE WHEN t.\u65E5\u4ED8 >= '2026-05-08' AND t.\u5165\u51FA\u5EAB\u533A\u5206 = '\u51FA\u5EAB'\n THEN t.\u500B\u6570 ELSE 0 END) AS \u51FA\u5EAB\u6570\nFROM APP4229 m LEFT JOIN APP4228 t ON m.\u88FD\u54C1\u540D = t.\u88FD\u54C1\u540D\nGROUP BY m.\u88FD\u54C1\u540D\nORDER BY m.\u88FD\u54C1\u540D\n```\n\n**8 \u884C\u304C\u8FD4\u308A\u3001\u51FA\u5EAB\u30BC\u30ED\u306E\u88FD\u54C1\u306F 0 \u306B\u306A\u308A\u307E\u3059**\uFF08\u5B9F\u6E2C\uFF09\u3002\n\n- **\u6761\u4EF6\u3092 `WHERE` \u306B\u66F8\u3044\u3066\u306F\u3044\u3051\u307E\u305B\u3093\u3002** `WHERE` \u306F `LEFT JOIN` \u306E\u5F8C\u306B\u52B9\u304F\u306E\u3067\u3001\n \u4E00\u81F4\u3057\u306A\u304B\u3063\u305F\u884C\u304C\u305D\u3053\u3067\u843D\u3061\u3066**\u5143\u306E\u554F\u984C\u306B\u623B\u308A\u307E\u3059**\n- **\u6570\u3048\u308B\u3068\u304D\u3082\u540C\u3058**\u3067\u3059\u3002`COUNT(*)` \u306F `LEFT JOIN` \u306E\u7A7A\u884C\u3082 1 \u3068\u6570\u3048\u308B\u305F\u3081\u3001\n `SUM(CASE WHEN ... THEN 1 ELSE 0 END)` \u3092\u4F7F\u3044\u307E\u3059\n- \u30DE\u30B9\u30BF\u5074\u306B\u7121\u3044\u5024\u304C\u660E\u7D30\u306B\u3042\u308B\u3068\u3001\u305D\u306E\u884C\u306F**\u3053\u306E\u5F62\u3067\u306F\u51FA\u307E\u305B\u3093**\uFF08\u30DE\u30B9\u30BF\u304C\u6BCD\u96C6\u5408\u306B\u306A\u308A\u307E\u3059\uFF09\n\n### \u65E5\u4ED8\u8EF8\u306F `GENERATE_SERIES` \u3067\u4F5C\u308B\uFF08v3.59.0\u30FB\u6708\uFF0F\u5E74 step \u306F v3.63.0\uFF09\n\nkintone \u306B\u65E5\u4ED8\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u306E\u30A2\u30D7\u30EA\u306F\u3042\u308A\u307E\u305B\u3093\u304C\u3001**`WITH` \u306E CTE \u672C\u4F53\u306B `GENERATE_SERIES` \u3092\u66F8\u3051\u3070\u3001\n\u30EC\u30B3\u30FC\u30C9\u3092 1 \u4EF6\u3082\u8AAD\u307E\u305A\u306B\u65E5\u4ED8\u7CFB\u5217\u3092\u4F5C\u308C\u307E\u3059**\uFF08[\u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 \xA713](ksql_language_reference.md#13-with-\u53E5cte)\uFF09\u3002\n\u8D77\u70B9\u3092\u3053\u306E\u7CFB\u5217\u306B\u7F6E\u3051\u3070\u3001\u30DE\u30B9\u30BF\u3068\u540C\u3058\u5F62\u3067**\u53D6\u5F15\u306E\u7121\u3044\u65E5\u3092 0 \u3068\u3057\u3066\u4E26\u3079\u3089\u308C\u307E\u3059**\u3002\n\n```sql\nWITH \u65E5\u4ED8\u7CFB\u5217 AS (\n GENERATE_SERIES('2026-07-01', '2026-07-31', '1 day') AS \u65E5\u4ED8\n),\n\u65E5\u5225 AS (\n SELECT \u65E5\u4ED8, SUM(\u500B\u6570) AS \u51FA\u5EAB\u6570\n FROM APP4228\n WHERE \u5165\u51FA\u5EAB\u533A\u5206 = '\u51FA\u5EAB' AND \u65E5\u4ED8 >= '2026-07-01' AND \u65E5\u4ED8 <= '2026-07-31'\n GROUP BY \u65E5\u4ED8\n)\nSELECT s.\u65E5\u4ED8,\n CASE WHEN t.\u51FA\u5EAB\u6570 = '' THEN 0 ELSE t.\u51FA\u5EAB\u6570 END AS \u51FA\u5EAB\u6570\nFROM \u65E5\u4ED8\u7CFB\u5217 AS s LEFT JOIN \u65E5\u5225 AS t ON s.\u65E5\u4ED8 = t.\u65E5\u4ED8\nORDER BY s.\u65E5\u4ED8\n```\n\n**31 \u884C\u304C\u8FD4\u308A\u3001\u51FA\u5EAB\u306E\u7121\u3044 5 \u65E5\u304C 0 \u3067\u4E26\u3073\u307E\u3059**\uFF08\u5B9F\u6E2C\u3002`GROUP BY` \u3060\u3051\u306A\u3089 26 \u884C\u3067\u3001\u305D\u306E 5 \u65E5\u306F\u884C\u3054\u3068\u6D88\u3048\u307E\u3059\uFF09\u3002\n\n- **`LEFT JOIN` \u3067\u4E00\u81F4\u3057\u306A\u304B\u3063\u305F\u5074\u306F 0 \u3067\u306F\u306A\u304F\u7A7A\u6587\u5B57**\u3067\u3059\u3002`CASE WHEN \u2026 = '' THEN 0` \u307E\u3067\u66F8\u3044\u3066\u521D\u3081\u3066 0 \u57CB\u3081\u306B\u306A\u308A\u307E\u3059\n- \u6708\u6B21\u306F `GENERATE_SERIES('2025-08-01', '2026-08-01', '1 month') AS \u6708` \u3067\u6708\u521D\u7CFB\u5217\u3092\u4F5C\u308A\u3001\n `DATE_FORMAT(\u6708, '%Y-%m')` \u3092\u5E74\u6708\u30AD\u30FC\u306B\u3057\u3066\u6708\u6B21\u96C6\u8A08\u3068\u7D50\u5408\u3057\u307E\u3059\uFF08start \u306F\u6708\u521D\u9650\u5B9A\uFF09\u3002\n **\u7A7A\u6708\u304C\u3042\u308B\u3068 `LAG` \u306F\u300C\u76F4\u524D\u306B\u5B58\u5728\u3059\u308B\u6708\u300D\u3068\u6BD4\u3079\u3066\u3057\u307E\u3046**\uFF08\u9759\u304B\u306B 2 \u304B\u6708\u524D\u6BD4\u306B\u306A\u308B\uFF09\u306E\u3067\u3001\u524D\u6708\u6BD4\u306F 0 \u57CB\u3081\u3057\u3066\u304B\u3089\u53D6\u308A\u307E\u3059\n- \u96C6\u8A08\u5074\u3092 `THIS_MONTH()` \u306A\u3069\u306E\u76F8\u5BFE\u65E5\u4ED8\u3067\u7D5E\u308A\u305F\u3044\u5834\u5408\u306F\u3001CTE \u3092 JOIN \u306E\u5165\u529B\u306B\u3057\u305F\u5F62\u3067\u306F\u4F7F\u3048\u306A\u3044\u305F\u3081\u3001\n \u5148\u306B `CREATE TEMP TABLE #\u65E5\u5225 AS SELECT \u2026 WHERE \u65E5\u4ED8 = THIS_MONTH() GROUP BY \u2026;` \u3067\u5B9F\u4F53\u5316\u3057\u3066\u304B\u3089\u7CFB\u5217\u3068 JOIN \u3057\u307E\u3059\n- \u300C\u65E5\u4ED8 \xD7 \u88FD\u54C1\u300D\u306E\u3088\u3046\u306B\u8EF8\u304C 2 \u672C\u3042\u308B\u3068\u304D\u306F\u3001\u7CFB\u5217\u3068\u5C0F\u3055\u3044\u30DE\u30B9\u30BF\u3092 `CROSS JOIN` \u3067\u683C\u5B50\u306B\u3057\u3066\u304B\u3089\u5B9F\u7E3E\u3092\u5F53\u3066\u307E\u3059\uFF08v3.63.0\u30FB\u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 \xA77\uFF09\u3002\n `ON` \u306F\u7B49\u5F0F 1 \u672C\u3060\u3051\u306A\u306E\u3067\u3001\u4E21\u5074\u3067 `CONCAT(DATE_FORMAT(\u65E5\u4ED8, '%Y-%m-%d'), '|', \u88FD\u54C1\u540D)` \u306E\u3088\u3046\u306A\u9023\u7D50\u30AD\u30FC\u3092\u4F5C\u3063\u3066\u7D50\u5408\u3057\u307E\u3059\n- \u751F\u6210\u884C\u6570\u306F\u540C\u4E00 `WITH` \u6587\u3067\u5408\u8A08 10,000 \u884C\u307E\u3067\uFF08\u65E5\u6B21\u3067\u7D04 27 \u5E74\u5206\uFF09\u3002`WHERE` \u3084 `LIMIT` \u3092\u4ED8\u3051\u3066\u3082\u514D\u9664\u3055\u308C\u307E\u305B\u3093\n\n> \u6B74\u53F2\u7684\u7D4C\u7DEF: v3.58.0 \u4EE5\u524D\u306F\u9023\u756A\u751F\u6210\u304C\u7121\u304F\u3001\u65E5\u4ED8\u30A2\u30D7\u30EA\u3092\u81EA\u4F5C\u3059\u308B\u304B SQL \u306E\u5916\u3067\u57CB\u3081\u308B\u3057\u304B\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\n> \u6708\u6B21\u306A\u3089\u6B6F\u629C\u3051\u304C\u8D77\u304D\u306B\u304F\u3044\uFF08\u5B9F\u6E2C\u3067\u306F 13 \u304B\u6708\u3059\u3079\u3066\u306B\u884C\u304C\u3042\u3063\u305F\uFF09\u3068\u3044\u3046\u56DE\u907F\u3082\u3001\u4ECA\u306F\u4E0D\u8981\u3067\u3059\u3002\n\n### \u56FA\u5B9A\u6DF1\u3055\u306E\u968E\u5C64\u306F\u81EA\u5DF1 JOIN \u3067\u66F8\u304F\n\n\u968E\u5C64\u306E\u6700\u5927\u6DF1\u3055\u304C\u4ED5\u69D8\u3067\u56FA\u5B9A\u3055\u308C\u3066\u3044\u308B\u306A\u3089\u3001\u540C\u3058\u30A2\u30D7\u30EA\u3092\u6BB5\u6570\u5206\u3060\u3051\u81EA\u5DF1 JOIN \u3057\u307E\u3059\u3002\u6B21\u306F\u89AA\u304B\u3089\u6700\u59273\u6BB5\u5148\u307E\u3067\u3092\u6A2A\u6301\u3061\u3067\u8FD4\u3059\u5F62\u3067\u3059\u3002\u5404 `JOIN ... ON` \u306F kSQL \u304C\u5BFE\u5FDC\u3059\u308B\u7B49\u5024\u6761\u4EF61\u672C\u3060\u3051\u306B\u3057\u3001\u6DF1\u3055\u3092\u5897\u3084\u3059\u3068\u304D\u306F alias \u3068 JOIN \u30921\u6BB5\u305A\u3064\u8FFD\u52A0\u3057\u307E\u3059\u3002\n\n```sql\nSELECT root.\u89AA\u30B3\u30FC\u30C9 AS \u8D77\u70B9,\n root.\u5B50\u30B3\u30FC\u30C9 AS `1\u6BB5\u76EE`,\n level2.\u5B50\u30B3\u30FC\u30C9 AS `2\u6BB5\u76EE`,\n level3.\u5B50\u30B3\u30FC\u30C9 AS `3\u6BB5\u76EE`\nFROM APP100 AS root\nLEFT JOIN APP100 AS level2 ON root.\u5B50\u30B3\u30FC\u30C9 = level2.\u89AA\u30B3\u30FC\u30C9\nLEFT JOIN APP100 AS level3 ON level2.\u5B50\u30B3\u30FC\u30C9 = level3.\u89AA\u30B3\u30FC\u30C9\nWHERE root.\u89AA\u30B3\u30FC\u30C9 = 'ROOT'\nORDER BY `1\u6BB5\u76EE`, `2\u6BB5\u76EE`, `3\u6BB5\u76EE`\n```\n\n\u3053\u306E\u5F62\u306F\u6DF1\u3055\u3092\u56FA\u5B9A\u3067\u304D\u308B\u7D44\u7E54\u8868\u30FB\u5206\u985E\u8868\u306B\u5411\u304D\u307E\u3059\u3002\u6DF1\u3055\u304C\u30C7\u30FC\u30BF\u6B21\u7B2C\u3067\u5909\u308F\u308B\u5834\u5408\u3084\u5FAA\u74B0\u30C7\u30FC\u30BF\u3092\u691C\u51FA\u3057\u305F\u3044\u5834\u5408\u306F\u3001\u6B21\u306E `WITH RECURSIVE` \u3092\u4F7F\u3044\u307E\u3059\u3002\n\n### \u518D\u5E30 CTE \u306E\u57FA\u672C\u30EC\u30B7\u30D4\n\n\u518D\u5E30 CTE \u306F read-only \u3067\u3059\u3002seed \u3067\u8D77\u70B9\u306E\u8FBA\u3092\u9078\u3073\u3001\u518D\u5E30\u9805\u3067\u76F4\u524D\u306E frontier \u3068\u7269\u7406 source \u3092 `INNER JOIN` \u3057\u307E\u3059\u3002`CYCLE` \u306F\u73FE\u5728 path \u4E0A\u3067\u540C\u3058\u5B50\u30B3\u30FC\u30C9\u3078\u623B\u308B\u5FAA\u74B0\u884C\u3092 `Y` \u3068\u3057\u30661\u56DE\u3060\u3051\u6B8B\u3057\u3001\u305D\u306E\u5148\u306E\u5C55\u958B\u3092\u6B62\u3081\u307E\u3059\u3002\n\n```sql\nWITH RECURSIVE \u968E\u5C64\n (\u89AA\u30B3\u30FC\u30C9, \u5B50\u30B3\u30FC\u30C9, \u6DF1\u3055) AS (\n SELECT \u89AA\u30B3\u30FC\u30C9, \u5B50\u30B3\u30FC\u30C9, 1\n FROM APP100\n WHERE \u89AA\u30B3\u30FC\u30C9 = 'ROOT'\n UNION ALL\n SELECT source.\u89AA\u30B3\u30FC\u30C9, source.\u5B50\u30B3\u30FC\u30C9, parent.\u6DF1\u3055 + 1\n FROM APP100 AS source\n INNER JOIN \u968E\u5C64 AS parent ON source.\u89AA\u30B3\u30FC\u30C9 = parent.\u5B50\u30B3\u30FC\u30C9\n)\nCYCLE \u5B50\u30B3\u30FC\u30C9 SET is_cycle TO 'Y' DEFAULT 'N'\nSELECT \u89AA\u30B3\u30FC\u30C9, \u5B50\u30B3\u30FC\u30C9, \u6DF1\u3055, is_cycle\nFROM \u968E\u5C64\nORDER BY \u6DF1\u3055, \u89AA\u30B3\u30FC\u30C9, \u5B50\u30B3\u30FC\u30C9\n```\n\n\u540C\u3058\u30CE\u30FC\u30C9\u3078\u5225\u7D4C\u8DEF\u3067\u5230\u9054\u3057\u305F\u884C\u306F\u5225\u306E path occurrence \u3068\u3057\u3066\u6B8B\u308A\u307E\u3059\u3002`CYCLE` \u306F\u7D44\u307F\u5408\u308F\u305B\u7206\u767A\u306E\u4E0A\u9650\u3067\u306F\u306A\u3044\u305F\u3081\u3001\u6DF1\u3055\u30FB\u7D2F\u7A4D\u7D50\u679C\u884C\u30FB\u7D2F\u7A4D\u4E2D\u9593\u5C55\u958B\u306E\u4E09\u5883\u754C\u306F\u5E38\u306B\u6709\u52B9\u3067\u3059\u3002`path` \u81EA\u4F53\u306F\u51FA\u529B\u3067\u304D\u307E\u305B\u3093\u3002", uri: "ksql://recipes/r17" }, r18: { heading: "R18. Flow dialect 1 \u3067\u6708\u6B21\u540C\u671F\u30B8\u30E7\u30D6\u3092\u66F8\u304F\uFF08`-- @ksql` \u30D8\u30C3\u30C0\u30FB`ASSERT`/`EXIT` \u30B2\u30FC\u30C8\u30FB`KEY()`\uFF09", text: "## R18. Flow dialect 1 \u3067\u6708\u6B21\u540C\u671F\u30B8\u30E7\u30D6\u3092\u66F8\u304F\uFF08`-- @ksql` \u30D8\u30C3\u30C0\u30FB`ASSERT`/`EXIT` \u30B2\u30FC\u30C8\u30FB`KEY()`\uFF09\n\n> `-- @ksql dialect: 1` \u3092\u5BA3\u8A00\u3057\u305F opt-in \u306E\u62E1\u5F35\u69CB\u6587\uFF08\u2192 \u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 \xA727\u30FBv3.69.0\uFF09\u3002\n> \u5BA3\u8A00\u306E\u306A\u3044\u65E2\u5B58\u30D0\u30C3\u30C1\u306E\u6319\u52D5\u306F\u4E00\u5207\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n\n**\u8A2D\u8A08\u539F\u5247\u3068\u306E\u5BFE\u5FDC**: \u5192\u982D\u306E\u539F\u5247 6\u300C\u6642\u523B\u306E\u56FA\u5B9A\u300D\u306F\u3001dialect 1 \u3067\u306F `@NOW()` / `@MONTH_START()` \u304C\n**\u30B9\u30AF\u30EA\u30D7\u30C8\u5168\u4F53\u3067\u5358\u4E00\u306E\u57FA\u6E96\u6642\u523B**\u304B\u3089\u5C0E\u51FA\u3055\u308C\u308B\u305F\u3081\u3001`SET @now = NOW()` \u3092\u66F8\u304B\u306A\u304F\u3066\u3082\u6E80\u305F\u3055\u308C\u307E\u3059\u3002\n\u300C\u7570\u5E38\u4E2D\u65AD\uFF08\u901A\u77E5\u5BFE\u8C61\uFF09\u300D\u3068\u300C\u5BFE\u8C61 0 \u4EF6\u306E\u6B63\u5E38\u30B9\u30AD\u30C3\u30D7\uFF08\u901A\u77E5\u4E0D\u8981\uFF09\u300D\u306F `ASSERT` \u3068 `EXIT SUCCESS IF` \u3067\n\u8A9E\u5F59\u3092\u5206\u3051\u307E\u3059 \u2014 \u6DF7\u540C\u3059\u308B\u3068\u6708\u521D\u306E\u305F\u3073\u306B\u8AA4\u30A2\u30E9\u30FC\u30C8\u304C\u51FA\u3066\u76E3\u8996\u304C\u5F62\u9AB8\u5316\u3057\u307E\u3059\u3002\n\n```sql\n-- @ksql name: monthly_sales_sync\n-- @ksql timeout: 600\n-- @ksql dialect: 1\n\n-- 1) \u696D\u52D9\u7570\u5E38\u30B2\u30FC\u30C8\uFF08\u4E0D\u6210\u7ACB\u306A\u3089 AssertError \u3067\u4E2D\u65AD\u30FB\u5F8C\u7D9A\u306F\u5B9F\u884C\u3057\u306A\u3044\uFF09\nASSERT (\n SELECT COUNT(*) FROM APP100\n WHERE \u53D7\u6CE8\u65E5 >= @MONTH_START() AND \u53D7\u6CE8\u65E5 < @NEXT_MONTH_START() AND \u91D1\u984D < 0\n) = 0, '\u3010\u7570\u5E38\u4E2D\u65AD\u3011\u30DE\u30A4\u30CA\u30B9\u306E\u58F2\u4E0A\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u3059';\n\n-- 2) \u96C6\u8A08\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306F\u88F8\u540D\u3067\u66F8\u3051\u308B\u3002#\u4ED8\u304D\u306E\u5F93\u6765\u5F62\u3068\u540C\u3058\u3082\u306E\uFF09\nCREATE TEMP TABLE summary AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, COUNT(\u30EC\u30B3\u30FC\u30C9\u756A\u53F7) AS \u53D7\u6CE8\u4EF6\u6570, SUM(\u91D1\u984D) AS \u5F53\u6708\u58F2\u4E0A\u5408\u8A08\nFROM APP100\nWHERE \u53D7\u6CE8\u65E5 >= @MONTH_START() AND \u53D7\u6CE8\u65E5 < @NEXT_MONTH_START() AND \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8\u5B8C\u4E86'\nGROUP BY \u9867\u5BA2\u30B3\u30FC\u30C9;\n\n-- 3) \u5BFE\u8C61 0 \u4EF6\u306F\u300C\u6210\u529F\u300D\u3068\u3057\u3066\u7D42\u4E86\uFF08\u5F8C\u7D9A\u306F skippedReason: \"exit\" \u3067 skip\uFF09\nEXIT SUCCESS IF (SELECT COUNT(*) FROM summary) = 0, '\u5BFE\u8C61 0 \u4EF6\u306E\u305F\u3081\u30B9\u30AD\u30C3\u30D7';\n\n-- 4) \u51AA\u7B49\u306A\u66F8\u304D\u8FBC\u307F\uFF08\u30AD\u30FC\u306F\u300C\u5024\u306E\u91CD\u8907\u3092\u7981\u6B62\u3059\u308B\u300D\u8A2D\u5B9A\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u3042\u308B\u3053\u3068\u3002\n-- \u91CD\u8907\u7981\u6B62\u3067\u306A\u3044\u30FB\u8907\u5408\u30AD\u30FC\u30FB\u578B\u4E0D\u6B63\u306F\u5B9F\u884C\u524D\u306B\u30A8\u30E9\u30FC\u3067\u6B62\u307E\u308B\uFF09\nUPSERT INTO APP200 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u5F53\u6708\u53D7\u6CE8\u4EF6\u6570, \u5F53\u6708\u58F2\u4E0A\u5B9F\u7E3E, \u6700\u7D42\u96C6\u8A08\u65E5\u6642)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u53D7\u6CE8\u4EF6\u6570, \u5F53\u6708\u58F2\u4E0A\u5408\u8A08, @NOW()\nFROM summary\nKEY (\u9867\u5BA2\u30B3\u30FC\u30C9);\n```\n\n- **\u30D0\u30C3\u30AF\u30D5\u30A3\u30EB**: \u516C\u5F0F API\uFF08`/flow`\uFF09\u306E `asOf` / `timezone` \u6CE8\u5165\u3067\u3001\u904E\u53BB\u65E5\u4ED8\u306E\u57FA\u6E96\u6642\u523B\u306E\u307E\u307E\n \u540C\u3058\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u518D\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF08`@MONTH_START()` \u7B49\u304C\u6CE8\u5165\u5024\u304B\u3089\u5C0E\u51FA\u3055\u308C\u308B\uFF09\n- **\u65E5\u6642\u5883\u754C\u306F\u534A\u958B\u533A\u9593**\uFF08`>= \u6708\u521D AND < \u7FCC\u6708\u521D`\uFF09\u3067\u66F8\u304F \u2014 R7 \u4EE5\u964D\u306E\u5404\u30EC\u30B7\u30D4\u3068\u540C\u3058\u5B9A\u77F3\n- `@` \u306A\u3057\u306E `TODAY()` / `THIS_MONTH()` \u306F kintone \u30B5\u30FC\u30D0\u30FC\u8A55\u4FA1\u306E\u305F\u3081 as-of \u306E\u5BFE\u8C61\u5916\uFF08\u8B66\u544A\u304C\u51FA\u307E\u3059\uFF09", uri: "ksql://recipes/r18" } } } };
|
|
41
|
+
define_KSQL_DOCS_default = { languageReference: { title: "kSQL \u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9", index: "# kSQL \u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 index\n\nSyntax and dialect reference for kSQL. Read only the section needed for the current task.\n\nSource: `docs/ksql_language_reference.md`\n\n## Sections\n\n- [1. \u57FA\u672C\u30EB\u30FC\u30EB](ksql://language-reference/01-basic-rules)\n- [2. SELECT](ksql://language-reference/02-select)\n- [3. \u7B97\u8853\u5F0F](ksql://language-reference/03-arithmetic-expressions)\n- [4. CASE WHEN](ksql://language-reference/04-case-when)\n- [5. \u6587\u5B57\u5217\u30FB\u6570\u5024\u95A2\u6570](ksql://language-reference/05-string-number-functions)\n- [6. WHERE \u53E5](ksql://language-reference/06-where)\n- [7. JOIN](ksql://language-reference/07-join)\n- [8. GROUP BY / \u96C6\u8A08\u95A2\u6570](ksql://language-reference/08-group-by-aggregates)\n- [9. HAVING](ksql://language-reference/09-having)\n- [10. ORDER BY](ksql://language-reference/10-order-by)\n- [10.1 \u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570](ksql://language-reference/10-1-window-functions)\n- [11. LIMIT / OFFSET](ksql://language-reference/11-limit-offset)\n- [12. UNION / UNION ALL](ksql://language-reference/12-union)\n- [13. WITH \u53E5\uFF08CTE\uFF09](ksql://language-reference/13-with-cte)\n- [14. SHOW APPS / DESCRIBE](ksql://language-reference/14-show-apps-describe)\n- [15. INSERT](ksql://language-reference/15-insert)\n- [16. UPDATE](ksql://language-reference/16-update)\n- [17. UPSERT](ksql://language-reference/17-upsert)\n- [18. DELETE](ksql://language-reference/18-delete)\n- [19. \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB](ksql://language-reference/19-subtable-virtual-table)\n- [20. REORDER](ksql://language-reference/20-reorder)\n- [21. \u30B5\u30D6\u30AF\u30A8\u30EA](ksql://language-reference/21-subqueries)\n- [22. \u5236\u9650\u4E8B\u9805](ksql://language-reference/22-limitations)\n- [23. UI \u6A5F\u80FD](ksql://language-reference/23-ui-features)\n- [24. EXPLAIN](ksql://language-reference/24-explain)\n- [25. \u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB](ksql://language-reference/25-batch-temp-tables)\n- [26. ASSERT](ksql://language-reference/26-assert)\n- [27. Flow dialect 1](ksql://language-reference/27-flow-dialect-1)\n\nIndex URI: ksql://language-reference", sections: { "01-basic-rules": { heading: "1. \u57FA\u672C\u30EB\u30FC\u30EB", text: '## 1. \u57FA\u672C\u30EB\u30FC\u30EB\n\n### \u30C6\u30FC\u30D6\u30EB\u540D\n\nkintone \u306E\u30A2\u30D7\u30EA ID \u3092 `APP` + \u6570\u5B57\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\n\n```sql\nAPP100 -- \u30A2\u30D7\u30EA ID 100\nAPP42 -- \u30A2\u30D7\u30EA ID 42\nAPP100$\u660E\u7D30 -- \u30A2\u30D7\u30EA ID 100 \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u300C\u660E\u7D30\u300D\n```\n\n\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u306F\u533A\u5225\u3057\u307E\u305B\u3093\uFF08`app100` \u3082\u6709\u52B9\uFF09\u3002\n\n### CLI \u62E1\u5F35: `APP@profile`\n\nCLI \u3067\u306F\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\u306E\u672B\u5C3E\u306B `@profile` \u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\n```sql\nAPP100@dev -- APP100 \u3092 dev \u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3067\u5B9F\u884C\nAPP80$\u660E\u7D30@guest -- \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\u3067\u3082\u6307\u5B9A\u53EF\u80FD\n```\n\n\u30EB\u30FC\u30EB:\n\n- `@profile` \u306A\u3057\u306E `APPxxx` \u306F\u65E2\u5B9A profile\uFF08`--profile` / config\uFF09\u3092\u4F7F\u7528\n- profile \u540D\u306E\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u306F\u533A\u5225\u3057\u307E\u305B\u3093\uFF08`APP100@Dev` \u3082\u6709\u52B9\uFF09\n- \u540C\u4E00 SQL \u5185\u3067\u540C\u4E00 APP \u306B\u7570\u306A\u308B profile \u3092\u6DF7\u5728\u53EF\u80FD\uFF08\u5225\u74B0\u5883\u306E\u5225\u30A2\u30D7\u30EA\u3068\u3057\u3066\u6271\u3046\uFF09\n- \u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u30FB\u30B3\u30E1\u30F3\u30C8\u4E2D\u306E `APP100@dev` \u306F `@profile` \u69CB\u6587\u3068\u3057\u3066\u89E3\u91C8\u3057\u307E\u305B\u3093\n- \u30D7\u30E9\u30B0\u30A4\u30F3\u5074\u3067\u306F `@profile` \u975E\u5BFE\u5FDC\u3067\u3059\uFF08`APP100@dev` \u3092\u542B\u3080 SQL \u306F\u30A8\u30E9\u30FC\uFF09\n\n### CLI / MCP / browser engine-library \u62E1\u5F35: \u8AD6\u7406\u30A2\u30D7\u30EA\u53C2\u7167 `LAPP_<NAME>`\n\n\u540C\u3058\u7528\u9014\u30FB\u540C\u3058\u30D5\u30A3\u30FC\u30EB\u30C9\u69CB\u6210\u306E\u30A2\u30D7\u30EA\u3067\u7269\u7406 ID \u3060\u3051\u304C\u74B0\u5883\u3054\u3068\u306B\u7570\u306A\u308B\u5834\u5408\u3001\u8AD6\u7406\u540D\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT * FROM LAPP_ORDERS\nSELECT * FROM LAPP_\u6CE8\u6587\nSELECT * FROM LAPP_ORDERS@prod\nSELECT * FROM LAPP_ORDERS$\u660E\u7D30@prod\n```\n\nCLI / MCP \u306E `LAPP_ORDERS` \u306F\u5B9F\u52B9 profile \u306E `logicalApps.ORDERS` \u306B\u8A2D\u5B9A\u3055\u308C\u305F\u7269\u7406\u30A2\u30D7\u30EA ID\u3078\u3001\u5B9F\u884C\u524D\u306B\u89E3\u6C7A\u3055\u308C\u307E\u3059\u3002browser engine-library \u3067\u306F `runQuery` / `runBatch` / `explainQuery` \u306E `logicalApps` \u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u540C\u3058\u5BFE\u5FDC\u3092\u6E21\u3057\u307E\u3059\u3002`APP100` \u306F\u5F93\u6765\u3069\u304A\u308A\u5E38\u306B\u7269\u7406 ID 100 \u3067\u3042\u308A\u3001\u6697\u9ED9\u306B\u8AD6\u7406\u89E3\u6C7A\u3055\u308C\u307E\u305B\u3093\u3002\n\n```json\n{\n "profiles": {\n "dev": { "logicalApps": { "ORDERS": 100 } },\n "prod": { "logicalApps": { "ORDERS": 1200 } }\n }\n}\n```\n\n\u69CB\u6587\u3068\u5236\u7D04:\n\n- \u8AD6\u7406\u540D\u306E\u958B\u59CB\u6587\u5B57\u306F ASCII \u82F1\u5B57\u307E\u305F\u306F\u65E5\u672C\u8A9E 4 \u7BC4\u56F2\uFF08U+3040\u2013U+30FF\u3001U+3400\u2013U+9FFF\u3001U+F900\u2013U+FAFF\u3001U+FF01\u2013U+FF60\uFF09\u3002\u7D99\u7D9A\u6587\u5B57\u306B\u306F ASCII \u6570\u5B57\u3068 `_` \u3082\u4F7F\u7528\u53EF\u80FD\n- \u8AD6\u7406\u540D\u306F\u6700\u5927 64 UTF-16 \u30B3\u30FC\u30C9\u30E6\u30CB\u30C3\u30C8\u3002SQL \u3068\u8A2D\u5B9A\u30AD\u30FC\u306E\u4E21\u5074\u3092 NFC \u6B63\u898F\u5316\u3057\u3066\u304B\u3089 `toUpperCase()` \u3067 canonical \u5316\u3059\u308B\uFF08ASCII \u3068\u5168\u89D2\u82F1\u5B57\u306F\u5927\u5C0F\u540C\u4E00\u3001\u304B\u306A\u30FB\u6F22\u5B57\u306F\u6587\u5B57\u3069\u304A\u308A\u533A\u5225\uFF09\n- \u534A\u89D2 `$` \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u533A\u5207\u308A\u3001\u534A\u89D2 `@` \u306F profile \u533A\u5207\u308A\u3067\u3042\u308A\u3001\u8AD6\u7406\u540D\u306B\u306F\u542B\u3081\u306A\u3044\u3002\u5168\u89D2 `\uFF04` / `\uFF20`\u3001\u4E2D\u9ED2 `\u30FB`\u3001\u9577\u97F3 `\u30FC` \u306F\u8AD6\u7406\u540D\u306E\u6587\u5B57\u3068\u3057\u3066\u6271\u3046\n- canonical \u5316\u5F8C\u306B\u540C\u540D\u3068\u306A\u308B\u8907\u6570\u30AD\u30FC\u306F\u30A8\u30E9\u30FC\n- config \u306E\u30AD\u30FC\u306F\u88F8\u306E\u8AD6\u7406\u540D\uFF08`ORDERS`\uFF09\u3002`APP100`\u3001`100`\u3001`LAPP_ORDERS` \u306F\u7981\u6B62\n- \u672A\u5B9A\u7FA9\u8AD6\u7406\u540D\u3001\u672A\u77E5 profile\u3001`allowPhysicalAppRefs: false` \u306E profile \u306B\u5BFE\u3059\u308B\u7269\u7406\u53C2\u7167\u306F API \u547C\u3073\u51FA\u3057\u524D\u306B\u30A8\u30E9\u30FC\n- validation \u306F `source`\u3001`logicalName`\u3001\u5185\u90E8 `mappedAppId`\u3001\u6700\u7D42 `appId`\u3001`profile` \u3092\u8FD4\u3059\n- EXPLAIN \u3068\u5229\u7528\u8005\u5411\u3051\u8A3A\u65AD\u306F\u8AD6\u7406\u540D\u30FB\u6700\u7D42\u7269\u7406 ID\u30FBprofile \u3092\u8868\u793A\u3057\u3001\u5185\u90E8 mapped ID \u306F\u8868\u793A\u3057\u306A\u3044\n- CLI \u306E `DELETE FROM LAPP_ORDERS@prod ...` \u306F\u660E\u793A profile \u5236\u7D04\u306B\u3088\u308A\u62D2\u5426\u3002MCP\u3067\u306F\u8A31\u53EF\n- browser engine-library \u306F `@profile` \u3092\u30B5\u30DD\u30FC\u30C8\u305B\u305A\u3001`LAPP_X@p` / `APP100@p` \u3092 API \u547C\u3073\u51FA\u3057\u524D\u306B\u660E\u793A\u30A8\u30E9\u30FC\u306B\u3059\u308B\n\n> **\u79FB\u884C\u4E0A\u306E\u6CE8\u610F\uFF08\u7834\u58CA\u7684\u5909\u66F4\uFF09**: `LAPP_` \u306E\u76F4\u5F8C\u304C\u65E5\u672C\u8A9E\u3067\u59CB\u307E\u308B\u672A\u5F15\u7528\u306E\u8B58\u5225\u5B50\u306F\u3001\n> \u8AD6\u7406\u30A2\u30D7\u30EA\u53C2\u7167\u3068\u3057\u3066\u4E88\u7D04\u3055\u308C\u307E\u3059\u3002\u5F93\u6765\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u306A\u3069\u306B `LAPP_\u6848\u4EF6` \u3092\u4F7F\u3063\u3066\u3044\u305F\u5834\u5408\u306F\u3001\n> \u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067 `` `LAPP_\u6848\u4EF6` `` \u3068\u56F2\u3093\u3067\u8B58\u5225\u5B50\u3068\u3057\u3066\u9000\u907F\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u672A\u5B9A\u7FA9\u306E\u307E\u307E\n> \u5225\u306E\u610F\u5473\u3078\u5909\u308F\u308B\u3053\u3068\u306F\u306A\u304F\u3001API \u547C\u3073\u51FA\u3057\u524D\u306B\u30A8\u30E9\u30FC\u3068\u306A\u308A\u307E\u3059\u3002\n\n### \u30D5\u30A3\u30FC\u30EB\u30C9\u540D\uFF08\u8B58\u5225\u5B50\uFF09\n\n- \u65E5\u672C\u8A9E\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u3092\u30AF\u30A9\u30FC\u30C8\u306A\u3057\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\n- \u30B9\u30DA\u30FC\u30B9\u30FB\u7279\u6B8A\u6587\u5B57\u3092\u542B\u3080\u540D\u524D\u306F\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\n- \u30AD\u30FC\u30EF\u30FC\u30C9\uFF08`SELECT`\u3001`FROM` \u7B49\uFF09\u3068\u540C\u540D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3082\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\n\n```sql\nSELECT \u91D1\u984D, \u62C5\u5F53\u8005\u540D FROM APP100\nSELECT `\u53D7\u6CE8 \u91D1\u984D`, `order` FROM APP100\n```\n\n### \u4E88\u7D04\u8A9E\n\nSQL \u69CB\u6587\u30AD\u30FC\u30EF\u30FC\u30C9\u306F\u672A\u5F15\u7528\u306E\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002JOIN \u95A2\u9023\u306E\u4E88\u7D04\u8A9E\u306F\n`INNER`\u3001`LEFT`\u3001`RIGHT`\u3001`CROSS`\u3001`JOIN`\u3001`ON` \u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u3084\u5225\u540D\u306F\n\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002\n\n```sql\nSELECT `CROSS` FROM APP100\nSELECT x.`CROSS` FROM APP100 AS x\n```\n\n### \u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\n\n\u30B7\u30F3\u30B0\u30EB\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002 \n\u6587\u5B57\u5217\u4E2D\u306E\u30B7\u30F3\u30B0\u30EB\u30AF\u30A9\u30FC\u30C8\u306F `\'\'`\uFF082\u3064\u9023\u7D9A\uFF09\u3067\u30A8\u30B9\u30B1\u30FC\u30D7\u3057\u307E\u3059\u3002\n\n```sql\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = \'\u5B8C\u4E86\'\nWHERE \u5099\u8003 = \'it\'\'s done\' -- it\'s done\n```\n\n### \u6570\u5024\u30EA\u30C6\u30E9\u30EB\n\n\u6574\u6570\u30FB\u5C0F\u6570\u3092\u305D\u306E\u307E\u307E\u8A18\u8FF0\u3057\u307E\u3059\u3002\n\n```sql\nWHERE \u91D1\u984D > 10000\nWHERE \u9032\u6357\u7387 >= 0.5\n```\n\n### \u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\n\n\u30AD\u30FC\u30EF\u30FC\u30C9\uFF08`SELECT`\u3001`WHERE` \u7B49\uFF09\u306F\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u305B\u3093\u3002 \n\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u306F kintone \u306E\u5B9A\u7FA9\u306B\u5F93\u3044\u307E\u3059\uFF08\u901A\u5E38\u306F\u533A\u5225\u3042\u308A\uFF09\u3002\nSELECT \u5217\u5225\u540D\u306E\u82F1\u5B57\uFF08\u5168\u89D2\u3092\u542B\u3080\uFF09\u306F\u7D50\u679C\u5217\u540D\u3067\u5C0F\u6587\u5B57\u3078\u6B63\u898F\u5316\u3055\u308C\u307E\u3059\u3002\n\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u3093\u3067\u3082\u7D50\u679C\u5217\u540D\u306E\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u306F\u4FDD\u6301\u3055\u308C\u307E\u305B\u3093\u3002\n\n\u6B63\u898F\u5316\u3055\u308C\u305F\u5225\u540D\u3092\u6B21\u306E\u6BB5\uFF08CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\uFF09\u3084\u540C\u3058\u6587\u306E `ORDER BY` / `HAVING` \u304B\u3089\u53C2\u7167\u3059\u308B\u3068\u304D\u306F\u3001\u5143\u306E\u8868\u8A18\u3067\u3082\u5C0F\u6587\u5B57\u3067\u3082\u89E3\u6C7A\u3055\u308C\u307E\u3059\uFF08v3.78.0 \u4EE5\u964D\u3002\u305D\u308C\u4EE5\u524D\u306F\u5C0F\u6587\u5B57\u3067\u66F8\u304F\u5FC5\u8981\u304C\u3042\u308A\u307E\u3057\u305F\uFF09\u3002\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u306F kintone \u306E\u5B9A\u7FA9\u3069\u304A\u308A\u533A\u5225\u3057\u307E\u3059\u3002\u7269\u7406\u30A2\u30D7\u30EA\u3068 CTE \u3092\u7D50\u5408\u3057\u305F\u6587\u3067\u672A\u4FEE\u98FE\u306E\u540D\u524D\u304C\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u5B8C\u5168\u4E00\u81F4\u3059\u308B\u3068\u304D\u306F\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u512A\u5148\u3055\u308C\u308B\u306E\u3067\u3001CTE \u5074\u306E\u5217\u3092\u6307\u3059\u306A\u3089 `t.Amount` \u306E\u3088\u3046\u306B\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u540C\u540D\u306E\u5225\u540D\u3092\u4ED8\u3051\u308B\u3068\u5217\u540D\u304C\u5C0F\u6587\u5B57\u5316\u3055\u308C\u308B\u306E\u3067\u3001\u5143\u306E\u8868\u8A18\u3092\u51FA\u529B\u540D\u306B\u6B8B\u3057\u305F\u3044\u306A\u3089\u5225\u540D\u3092\u4ED8\u3051\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002\u8A73\u3057\u3044\u512A\u5148\u9806\u4F4D\u306F [GROUP BY \u306E\u540D\u524D\u306E\u89E3\u6C7A\u9806](#group-by-\u306B\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u6307\u5B9A\u3059\u308B) \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n```sql\nWITH t AS (SELECT \u58F2\u4E0A AS Amount FROM APP100)\nSELECT Amount FROM t ORDER BY Amount;\n-- \u53C2\u7167\u306F Amount / amount \u306E\u3069\u3061\u3089\u3067\u3082\u3088\u304F\u3001\u7D50\u679C\u5217\u540D\u306F amount\n```\n\n### \u30BB\u30DF\u30B3\u30ED\u30F3\n\n\u6587\u672B\u306E\u30BB\u30DF\u30B3\u30ED\u30F3\uFF08`;`\uFF09\u306F\u4EFB\u610F\u3067\u3059\u3002\n\n---', uri: "ksql://language-reference/01-basic-rules" }, "02-select": { heading: "2. SELECT", text: "## 2. SELECT\n\n### \u57FA\u672C\u69CB\u6587\n\n```sql\nSELECT [DISTINCT] \u30AB\u30E9\u30E0\u30EA\u30B9\u30C8\n[FROM \u30C6\u30FC\u30D6\u30EB\u540D [AS \u30A8\u30A4\u30EA\u30A2\u30B9]]\n[JOIN\u53E5]\n[WHERE \u6761\u4EF6]\n[GROUP BY \u30D5\u30A3\u30FC\u30EB\u30C9\u30EA\u30B9\u30C8]\n[HAVING \u6761\u4EF6]\n[ORDER BY \u30AD\u30FC\u30EA\u30B9\u30C8 | KORDER BY \u30AD\u30FC\u30EA\u30B9\u30C8]\n[LIMIT \u4EF6\u6570 [OFFSET \u30B9\u30AD\u30C3\u30D7\u6570]]\n```\n\n`ORDER BY` \u3068 `KORDER BY` \u306F\u6392\u4ED6\u3067\u3059\u3002`KORDER BY` \u306F\u6BD4\u8F03\u610F\u5473\u3092 kintone REST API \u306E\u578B\u5225\u9806\u5E8F\u3078\u5207\u308A\u66FF\u3048\u308B\u5225\u69CB\u6587\u3067\u3001`LIMIT` \u304C\u5FC5\u9808\u306A\u3069\u56FA\u6709\u306E\u6761\u4EF6\u304C\u3042\u308A\u307E\u3059\u3002\u8A73\u7D30\u306F \xA710\u300CORDER BY\u300D\u5185\u306E\u300CKORDER BY\uFF08kintone\u56FA\u6709\u9806\u3001v3.0.0\uFF09\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n`FROM` \u306F\u7701\u7565\u53EF\u80FD\u3067\u3059\uFF08\u5F0F\u5C02\u7528 SELECT\uFF09\u3002\n\n```sql\nSELECT 'xxx' AS a\nSELECT 'ABC' as a;\n```\n\n\u5236\u7D04:\n\n- `FROM` \u7701\u7565\u6642\u306F\u5F0F\u5217\u306E\u307F\u5BFE\u5FDC\uFF08\u4F8B: \u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u3001\u6570\u5024\u6F14\u7B97\u3001\u95A2\u6570\uFF09\n- `SELECT *` / \u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\uFF08\u4F8B: `SELECT \u9867\u5BA2\u540D`\uFF09\u306F\u975E\u5BFE\u5FDC\n\n### \u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u53D6\u5F97\n\n```sql\nSELECT * FROM APP100\n```\n\n### \u7279\u5B9A\u30D5\u30A3\u30FC\u30EB\u30C9\u6307\u5B9A\n\n```sql\nSELECT \u6C0F\u540D, \u91D1\u984D, \u30B9\u30C6\u30FC\u30BF\u30B9 FROM APP100\n```\n\n### \u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u5217\n\n```sql\nSELECT \u9867\u5BA2\u540D, 'XXX' AS a FROM APP60\n```\n\n\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u5217\u306F `AS` \u3067\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u4ED8\u3051\u3066\u5229\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT 'XXX' AS a\n```\n\n### AS \u30A8\u30A4\u30EA\u30A2\u30B9\n\n```sql\nSELECT \u6C0F\u540D AS name, \u91D1\u984D AS amount FROM APP100\n```\n\n### DISTINCT\uFF08\u91CD\u8907\u9664\u53BB\uFF09\n\n```sql\nSELECT DISTINCT \u90FD\u9053\u5E9C\u770C FROM APP100\nSELECT DISTINCT \u30B9\u30C6\u30FC\u30BF\u30B9, \u62C5\u5F53\u8005 FROM APP100\n```\n\n### JOIN \u3067\u306E\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\n\nJOIN \u3092\u4F7F\u3046\u5834\u5408\u3001`\u30A8\u30A4\u30EA\u30A2\u30B9.\u30D5\u30A3\u30FC\u30EB\u30C9\u540D` \u306E\u5F62\u5F0F\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\n\n```sql\nSELECT a.\u6C0F\u540D, b.\u91D1\u984D\nFROM APP100 AS a\nINNER JOIN APP200 AS b ON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n```\n\n`FROM/JOIN` \u306E\u30C6\u30FC\u30D6\u30EB alias \u306F `AS` \u7701\u7565\u5F62\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT a.\u6C0F\u540D, b.\u91D1\u984D\nFROM APP100 a\nINNER JOIN APP200 b ON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n```\n\n---", uri: "ksql://language-reference/02-select" }, "03-arithmetic-expressions": { heading: "3. \u7B97\u8853\u5F0F", text: "## 3. \u7B97\u8853\u5F0F\n\nSELECT \u5217\u30FBWHERE \u53E5\u30FBORDER BY\u30FBUPDATE SET \u3067\u56DB\u5247\u6F14\u7B97\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n| \u6F14\u7B97\u5B50 | \u610F\u5473 |\n|--------|------|\n| `+` | \u52A0\u7B97 |\n| `-` | \u6E1B\u7B97 |\n| `*` | \u4E57\u7B97 |\n| `/` | \u9664\u7B97\uFF08\u30BC\u30ED\u9664\u7B97\u306F NaN\uFF09 |\n| `%` | \u5270\u4F59\u30FB\u4F59\u308A\uFF08\u30BC\u30ED\u9664\u7B97\u306F NaN\uFF09 |\n\n```sql\n-- SELECT \u5217\u3067\u7B97\u8853\u5F0F\nSELECT \u5358\u4FA1 * \u6570\u91CF AS \u5C0F\u8A08 FROM APP100\nSELECT \u91D1\u984D * 1.1 AS \u7A0E\u8FBC\u91D1\u984D FROM APP100\nSELECT (\u58F2\u4E0A - \u539F\u4FA1) / \u58F2\u4E0A AS \u7C97\u5229\u7387 FROM APP100\nSELECT \u6570\u91CF % 3 AS \u4F59\u308A FROM APP100\n\n-- \u5148\u884C\u3057\u3066\u5B9A\u7FA9\u3057\u305F\u6570\u5024\u30D0\u30C3\u30C1\u5909\u6570\u3082\u76F4\u63A5\u4F7F\u7528\u53EF\u80FD\nSET @total = (SELECT SUM(\u58F2\u4E0A) FROM APP100);\nSELECT (\u58F2\u4E0A * 100) / @total AS \u69CB\u6210\u6BD4 FROM APP100\n\n-- \u95A2\u6570\u306E\u7D50\u679C\u3082\u88AB\u6F14\u7B97\u5B50\u3068\u3057\u3066\u4F7F\u7528\u53EF\u80FD\nSELECT ROUND(\u5408\u8A08\u8CBB\u7528) / 2 AS \u534A\u984D FROM APP100\nSELECT LENGTH(\u9867\u5BA2\u540D) * 100 AS \u30B9\u30B3\u30A2 FROM APP100\n\n-- WHERE \u53E5\u306E\u5DE6\u8FBA\u30FB\u53F3\u8FBA\u306B\u7B97\u8853\u5F0F\uFF08FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\uFF09\nWHERE \u91D1\u984D * 1.1 > 10000\nWHERE (\u5358\u4FA1 + \u9001\u6599) * \u6570\u91CF < 5000\nWHERE \u7A0E\u8FBC\u91D1\u984D = \u91D1\u984D * 1.1\n```\n\n\u6F14\u7B97\u5B50\u306E\u512A\u5148\u9806\u4F4D\u306F\u901A\u5E38\u306E\u7B97\u8853\u898F\u5247\uFF08`*` `/` > `+` `-`\uFF09\u306B\u5F93\u3044\u3001\u30AB\u30C3\u30B3\u3067\u660E\u793A\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\n\u7B97\u8853\u5F0F\u306E\u5909\u6570\u306F\u6570\u5024\u3067\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002\u6587\u5B57\u5217\u5909\u6570\u3092\u76F4\u63A5\u7B97\u8853\u307E\u305F\u306F `ROUND(\u7B97\u8853\u5F0F, ...)` \u306E\u7B97\u8853\u90E8\u5206\u306B\u4F7F\u3046\u3068\u3001`ArgumentError: variable @\u540D\u524D is not numeric and cannot be used in arithmetic.` \u3067\u505C\u6B62\u3057\u307E\u3059\u3002\u672A\u5B9A\u7FA9\u5909\u6570\u3068\u914D\u5217\u5909\u6570\u306F \xA725 \u306E\u65E2\u5B58\u30A8\u30E9\u30FC\u898F\u5247\u306B\u5F93\u3044\u307E\u3059\u3002\n\n> **WHERE \u7B97\u8853\u5F0F\u306F FULL_SCAN \u30E2\u30FC\u30C9:** kintone API \u306B\u5909\u63DB\u3067\u304D\u306A\u3044\u305F\u3081\u5168\u4EF6\u53D6\u5F97\u5F8C JS \u3067\u8A55\u4FA1\u3057\u307E\u3059\u3002\n\n### \u7B97\u8853\u306E\u7CBE\u5EA6\u3068\u7A7A\u30BB\u30EB\uFF08\u91CD\u8981\u306A\u5236\u7D04\uFF09\n\n\u7B97\u8853\u5F0F\u306F **IEEE 754 \u500D\u7CBE\u5EA6\u6D6E\u52D5\u5C0F\u6570\u70B9\uFF08JavaScript \u306E number\uFF09** \u3067\u8A55\u4FA1\u3057\u3001\u7D50\u679C\u306E\u4E38\u3081\u30FB\u91CF\u5B50\u5316\u306F\u884C\u3044\u307E\u305B\u3093\u3002`SUM` / `AVG` \u3068\u7D71\u8A08\u96C6\u7D04\uFF08\u5206\u6563\u30FB\u6A19\u6E96\u504F\u5DEE\u30FB\u4E2D\u592E\u5024\uFF09\u3082 binary64 \u3067\u8A08\u7B97\u3057\u307E\u3059\u3002\u7D71\u8A08\u96C6\u7D04\u306F\u53B3\u5BC6 10 \u9032\u6F14\u7B97\u306E\u5BFE\u8C61\u5916\u3067\u3059\u3002\u6B21\u306E\u5236\u7D04\u304C\u3042\u308A\u307E\u3059\u3002\n\n**1. \u5C0F\u6570\u306E\u8868\u73FE\u8AA4\u5DEE**\uFF08\u6841\u6570\u306B\u3088\u3089\u305A\u3001\u5024\u306B\u4F9D\u5B58\u3057\u3066\u767A\u751F\u3057\u307E\u3059\uFF09\n\n```sql\nSELECT \u91D1\u984D * 1.1 FROM APP100 -- \u91D1\u984D=3000 \u2192 3300.0000000000005\n -- \u91D1\u984D=1000 \u2192 1100\uFF08\u3053\u306E\u5024\u3067\u306F\u305F\u307E\u305F\u307E\u8AA4\u5DEE\u306A\u3057\uFF09\nSELECT 0.1 + 0.2 -- 0.30000000000000004\n```\n\n\u3053\u306E\u305F\u3081 `WHERE \u91D1\u984D * 1.1 = 3300` \u306E\u3088\u3046\u306A**\u7B97\u8853\u7D50\u679C\u306E\u7B49\u5024\u6BD4\u8F03\u306F\u5931\u6557\u3059\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059**\u3002\u7B49\u5024\u3067\u6BD4\u8F03\u3059\u308B\u5834\u5408\u306F `ROUND(\u91D1\u984D * 1.1, 2)` \u306E\u3088\u3046\u306B\u4E38\u3081\u3066\u304F\u3060\u3055\u3044\u3002\n\n**2. \u7B97\u8853\u306E\u6709\u52B9\u6841\u306F 15\u301C17 \u6841**\uFF08\u6574\u6570\u306F 9,007,199,254,740,992 = 2^53 \u307E\u3067\u6B63\u78BA\uFF09\n\n```sql\nSELECT 9007199254740993 + 1 -- \u2192 9007199254740992\uFF08+1 \u304C\u7D50\u679C\u306B\u53CD\u6620\u3055\u308C\u306A\u3044\uFF09\n```\n\n\u5358\u7D14\u306A\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u306F\u5143\u306E10\u9032\u5B57\u53E5\u3092\u4FDD\u6301\u3059\u308B\u305F\u3081\u3001\u6BD4\u8F03\u30FBREST query\u30FB\u5358\u7D14DML\u3067\u306F\u4E38\u307E\u308A\u307E\u305B\u3093\u3002`1e3` / `1.2E-3` \u306E\u6307\u6570\u8868\u8A18\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u4E00\u65B9\u3001\u7B97\u8853\u3078\u5165\u308B\u3068JavaScript number\u306B\u306A\u308A\u3001\u5B89\u5168\u6574\u6570\u57DF\u3092\u8D85\u3048\u308B\u6574\u6570\u3067\u306F1\u306E\u4F4D\u306E\u5909\u5316\u304C\u6D88\u3048\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n\n**3. kintone \u306E\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u306F\u7D50\u679C\u304C\u7570\u306A\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059**\n\nkintone \u306E\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u30B5\u30FC\u30D0\u30FC\u5074\u306E 10 \u9032\u6F14\u7B97\uFF0B\u30A2\u30D7\u30EA\u306E `numberPrecision` \u8A2D\u5B9A\uFF08\u6841\u6570\u30FB\u4E38\u3081\u30E2\u30FC\u30C9\uFF09\u3067\u4E38\u3081\u305F\u5024\u3092\u8FD4\u3057\u307E\u3059\u3002\u540C\u3058\u5F0F\u3067\u3082 kSQL \u306E\u7B97\u8853\u306F\u751F\u306E\u6D6E\u52D5\u5C0F\u6570\u70B9\u5024\u3092\u8FD4\u3059\u305F\u3081\u3001\u7D50\u679C\u304C\u4E00\u81F4\u3057\u306A\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\uFF08\u5B9F\u6E2C: \u5B9A\u7FA9\u304C\u540C\u3058 `\u91D1\u984D * 1.1` \u3067\u3001\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9= `3300`\u30FBkSQL= `3300.0000000000005`\uFF09\u3002**\u7CBE\u5EA6\u304C\u91CD\u8981\u306A\u8A08\u7B97\u306F kintone \u306E\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u5074\u306B\u5BC4\u305B\u3001kSQL \u3067\u306F\u305D\u306E\u5024\u3092\u53C2\u7167\u3059\u308B**\u306E\u304C\u5B89\u5168\u3067\u3059\u3002\n\n**4. \u7A7A\u30BB\u30EB\u306F 0 \u3068\u3057\u3066\u8A08\u7B97\u3055\u308C\u307E\u3059**\n\n```sql\nSELECT \u91D1\u984D + 1 FROM APP100 -- \u91D1\u984D\u304C\u7A7A\u30BB\u30EB \u2192 1\uFF08\u91D1\u984D=0 \u306E\u884C\u3068\u533A\u5225\u3067\u304D\u306A\u3044\uFF09\n```\n\nkintone \u306E\u672A\u8A2D\u5B9A\u5024\u306F\u7A7A\u6587\u5B57\u3067\u3001\u7B97\u8853\u5F0F\u3067\u306F 0 \u306B\u5909\u63DB\u3055\u308C\u307E\u3059\u3002\u7A7A\u30BB\u30EB\u3092\u8A08\u7B97\u5BFE\u8C61\u304B\u3089\u9664\u304D\u305F\u3044\u5834\u5408\u306F `WHERE \u91D1\u984D != ''` \u3067\u9664\u5916\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6BD4\u8F03\u30FBORDER BY \u3067\u306F v3.0.0 \u4EE5\u964D\u3001\u7A7A\u30BB\u30EB\u306F 0 \u3067\u306F\u306A\u304F\u6700\u5C0F\u5024\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059 \u2014 \xA76\u300C\u578B\u4ED8\u304D\u6BD4\u8F03\u300D\u53C2\u7167\uFF09\u3002\n\n> **\u306A\u304A\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u5024\u305D\u306E\u3082\u306E\u306F\u7121\u50B7\u3067\u3059\u3002** kSQL \u306F\u53D6\u5F97\u3057\u305F\u6570\u5024\u3092\u6587\u5B57\u5217\u306E\u307E\u307E\u4FDD\u6301\u3057\u3001\u7B97\u8853\u5F0F\u3092\u901A\u3055\u306A\u3044\u9650\u308A\u6700\u592730\u6841\u3092\u6709\u965010\u9032\u3068\u3057\u3066\u53B3\u5BC6\u6BD4\u8F03\u3057\u307E\u3059\u3002`1.10 = 1.1`\u3001`-0 = 0`\u3001`1e21 = 1000000000000000000000`\u3067\u3059\u3002JS\u7B97\u8853\u30FBSUM/AVG\u30FB\u6570\u5024\u95A2\u6570\u304C\u8FD4\u3059\u5024\u306F\u3001\u65E2\u306Bbinary64\u3078\u4E38\u3081\u3089\u308C\u305F `String(number)` \u306E10\u9032\u5024\u3068\u3057\u3066\u6BD4\u8F03\u3057\u307E\u3059\u3002\n\n---", uri: "ksql://language-reference/03-arithmetic-expressions" }, "04-case-when": { heading: "4. CASE WHEN", text: "## 4. CASE WHEN\n\n\u6761\u4EF6\u5206\u5C90\u3057\u305F\u5024\u3092\u8FD4\u3057\u307E\u3059\u3002SELECT \u5217\u30FBWHERE \u53E5\u30FBUPDATE SET\u3001\u304A\u3088\u3073 v3.16.0 \u4EE5\u964D\u306F\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nCASE\n WHEN \u6761\u4EF61 THEN \u50241\n WHEN \u6761\u4EF62 THEN \u50242\n ...\n [ELSE \u30C7\u30D5\u30A9\u30EB\u30C8\u5024]\nEND [AS \u30A8\u30A4\u30EA\u30A2\u30B9]\n```\n\n### SELECT \u5217\u3067\u306E\u4F7F\u7528\n\n```sql\nSELECT\n \u6C0F\u540D,\n CASE\n WHEN \u91D1\u984D >= 100000 THEN '\u5927\u53E3'\n WHEN \u91D1\u984D >= 10000 THEN '\u4E2D\u53E3'\n ELSE '\u5C0F\u53E3'\n END AS \u9867\u5BA2\u533A\u5206\nFROM APP100\n```\n\n```sql\n-- THEN \u306B\u7B97\u8853\u5F0F\u30FB\u95A2\u6570\nSELECT\n CASE\n WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5272\u5F15' THEN ROUND(\u91D1\u984D * 0.9)\n ELSE \u91D1\u984D\n END AS \u8ACB\u6C42\u91D1\u984D\nFROM APP100\n```\n\n### WHERE \u53E5\u3067\u306E\u4F7F\u7528\n\nWHERE \u53E5\u306E\u5DE6\u8FBA\u30FB\u53F3\u8FBA\u306B CASE WHEN \u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF08FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\uFF09\u3002\n\n```sql\n-- \u5DE6\u8FBA: \u533A\u5206\u306B\u5FDC\u3058\u3066\u6BD4\u8F03\u5024\u3092\u5207\u308A\u66FF\u3048\nWHERE CASE\n WHEN \u533A\u5206 = '\u7279\u5225' THEN \u91D1\u984D\n ELSE 0\n END > 1000\n\n-- \u53F3\u8FBA: \u533A\u5206\u3054\u3068\u306B\u95BE\u5024\u3092\u5909\u3048\u308B\nWHERE \u30B9\u30B3\u30A2 > CASE\n WHEN \u30E9\u30F3\u30AF = 'A' THEN 80\n ELSE 50\n END\n```\n\n### UPDATE SET \u3067\u306E\u4F7F\u7528\n\n```sql\nUPDATE APP100\nSET \u9867\u5BA2\u30E9\u30F3\u30AF = CASE\n WHEN \u91D1\u984D >= 100000 THEN 'S'\n WHEN \u91D1\u984D >= 10000 THEN 'A'\n ELSE 'B'\n END\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5BFE\u8C61'\n```\n\nTHEN / ELSE \u306B\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u306B\u5FDC\u3058\u3066\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u30FB\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u7B49\u306B\u66F8\u304D\u8FBC\u3081\u307E\u3059\u3002\n\n```sql\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E: \u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u5FDC\u3058\u3066\u62C5\u5F53\u8005\u3092\u5207\u308A\u66FF\u3048\nUPDATE APP89\nSET \u62C5\u5F53\u8005 = CASE\n WHEN \u512A\u5148\u5EA6 = '\u9AD8' THEN ['user1', 'user2']\n ELSE 'user3'\n END\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u672A\u7740\u624B'\n\n-- \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9: IF() \u77ED\u7E2E\u8A18\u6CD5\nUPDATE APP89\nSET \u30BF\u30B0 = IF(\u9867\u5BA2\u30E9\u30F3\u30AF = 'A', ['\u91CD\u8981', 'VIP'], '\u901A\u5E38')\nWHERE \u62C5\u5F53\u8005 = 'user1'\n```\n\n### \u5171\u901A\u30EB\u30FC\u30EB\n\n- THEN / ELSE \u306E\u5024\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u30FB\u6570\u5024\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FB\u7B97\u8853\u5F0F\u30FB\u95A2\u6570\u547C\u3073\u51FA\u3057\u30FB**\u914D\u5217\u30EA\u30C6\u30E9\u30EB `[...]`** \u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\n- ELSE \u3092\u7701\u7565\u3059\u308B\u3068\u3001\u3069\u306E\u6761\u4EF6\u306B\u3082\u5408\u81F4\u3057\u306A\u3044\u5834\u5408\u306F NULL \u76F8\u5F53\u306B\u306A\u308A\u307E\u3059\u3002\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u3067\u306F\u5019\u88DC\u304B\u3089\u9664\u5916\u3055\u308C\u3001\u305D\u308C\u4EE5\u5916\u306E\u8868\u793A\u30FB\u66F4\u65B0\u3067\u306F\u7A7A\u6587\u5B57\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\n- IF(\u6761\u4EF6, then\u5024, else\u5024) \u306F CASE WHEN \u306E\u77ED\u7E2E\u8A18\u6CD5\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u3059\n- \u914D\u5217\u30EA\u30C6\u30E9\u30EB\u3092 THEN/ELSE \u3067\u8FD4\u3059\u5834\u5408\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u306B\u5FDC\u3058\u3066\u81EA\u52D5\u5909\u63DB\u3055\u308C\u307E\u3059\uFF08INSERT VALUES / UPDATE SET\uFF09\n- \u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u3067\u4F7F\u3046 `CASE` \u306E\u7D50\u679C\u306F\u30B9\u30AB\u30E9\u30FC\u5024\u306B\u9650\u308A\u307E\u3059\u3002\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u30FB\u30B5\u30D6\u30AF\u30A8\u30EA\u30FB\u96C6\u8A08\u95A2\u6570\u306F THEN / ELSE \u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\n\n### WHEN \u6761\u4EF6\u306E\u8A55\u4FA1\n\n`WHEN` \u306E\u6761\u4EF6\u306B\u306F `WHERE` \u3068\u540C\u3058\u8FF0\u8A9E\u3092\u66F8\u3051\u307E\u3059\uFF08\u6BD4\u8F03 `= != < >`\u30FB`IN`\uFF0F`NOT IN`\u30FB`LIKE`\u30FB`BETWEEN`\u30FB`AND`\uFF0F`OR`\uFF0F`NOT` \u7B49\uFF09\u3002**`WHERE` \u3068\u540C\u3058\u8FF0\u8A9E\u69CB\u6587\u3067\u3001kSQL \u306E\u540C\u3058\u4E8C\u5024\u8A55\u4FA1\u898F\u5247\u306B\u3088\u308A\u884C\u3054\u3068\u306B\u8A55\u4FA1**\u3055\u308C\u3001`IN` \u306E\u4E00\u81F4\u898F\u5247\u3082 \xA76 \u3068\u540C\u4E00\u3067\u3059\uFF08\u8907\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u300C\u3044\u305A\u308C\u304B\u3092\u542B\u3080\u300D\u5224\u5B9A\u306A\u3069\uFF09\u3002\n\n```sql\nSELECT $id,\n CASE WHEN \u533A\u5206 IN ('A', 'B') THEN '\u5BFE\u8C61' ELSE '\u5BFE\u8C61\u5916' END AS \u5224\u5B9A,\n CASE WHEN \u30BF\u30B0 IN ('\u91CD\u8981') THEN 1 ELSE 0 END AS \u91CD\u8981\u30D5\u30E9\u30B0 -- \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\uFF1D\u300C\u542B\u3080\u300D\u5224\u5B9A\nFROM APP100\n```\n\n- CASE / IF \u306F**\u5E38\u306B JavaScript \u3067\u8A55\u4FA1**\u3055\u308C\uFF08kintone \u3078\u306F\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\uFF09\u3001\u6761\u4EF6\u306F FULL_SCAN \u3068\u540C\u3058\u898F\u5247\u3067\u5224\u5B9A\u3057\u307E\u3059\u3002\n- \u3057\u305F\u304C\u3063\u3066\u3001\u9078\u629E\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u306B**\u5B9A\u7FA9\u306B\u7121\u3044\u9078\u629E\u80A2\u5024**\u3092 `WHEN \u2026 IN (\u2026)` \u3078\u6E21\u3057\u3066\u3082\u3001`WHERE` \u304C REST \u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u3066 `GAIA_IQ10` \u306B\u306A\u308A\u5F97\u308B\u306E\u3068\u9055\u3044\u3001CASE \u306E\u6761\u4EF6\u306F\u5E38\u306B\u30ED\u30FC\u30AB\u30EB\u8A55\u4FA1\u306A\u306E\u3067**\u30A8\u30E9\u30FC\u306B\u306A\u3089\u305A\u5358\u306B\u4E0D\u4E00\u81F4**\u306B\u306A\u308A\u307E\u3059\uFF08\xA76 \u306E\u300C\u5B9A\u7FA9\u306B\u7121\u3044\u9078\u629E\u80A2\u5024\u300D\u306E\u6CE8\u610F\u3092\u53C2\u7167\uFF09\u3002\n\n---", uri: "ksql://language-reference/04-case-when" }, "05-string-number-functions": { heading: "5. \u6587\u5B57\u5217\u30FB\u6570\u5024\u95A2\u6570", text: "## 5. \u6587\u5B57\u5217\u30FB\u6570\u5024\u95A2\u6570\n\n\u95A2\u6570\u306F SELECT \u5217\u30FBWHERE \u5DE6\u8FBA\u30FBORDER BY\u30FBCASE WHEN \u306E THEN/ELSE \u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002 \n\u95A2\u6570\u306E\u7D50\u679C\u306F\u7B97\u8853\u5F0F\u306E\u88AB\u6F14\u7B97\u5B50\u3068\u3057\u3066\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n### \u6587\u5B57\u5217\u95A2\u6570\n\n| \u95A2\u6570 | \u69CB\u6587 | \u8AAC\u660E |\n|------|------|------|\n| `UPPER` | `UPPER(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5927\u6587\u5B57\u5909\u63DB |\n| `LOWER` | `LOWER(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5C0F\u6587\u5B57\u5909\u63DB |\n| `TRIM` | `TRIM(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u524D\u5F8C\u306E\u7A7A\u767D\u3092\u9664\u53BB |\n| `LTRIM` | `LTRIM(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5DE6\u5074\u306E\u7A7A\u767D\u3092\u9664\u53BB |\n| `RTRIM` | `RTRIM(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u53F3\u5074\u306E\u7A7A\u767D\u3092\u9664\u53BB |\n| `LENGTH` | `LENGTH(\u30D5\u30A3\u30FC\u30EB\u30C9)` | UTF-16 \u30B3\u30FC\u30C9\u30E6\u30CB\u30C3\u30C8\u6570\uFF08kintone \u306E\u6587\u5B57\u6570\uFF09\u3092\u8FD4\u3059 |\n| `LENGTH_CHAR` | `LENGTH_CHAR(\u30D5\u30A3\u30FC\u30EB\u30C9)` | Unicode \u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u6570\u3092\u8FD4\u3059 |\n| `SUBSTRING` | `SUBSTRING(\u30D5\u30A3\u30FC\u30EB\u30C9, \u958B\u59CB [, \u9577\u3055])` | \u90E8\u5206\u6587\u5B57\u5217\uFF081-indexed\u3001`SUBSTR` \u3082\u53EF\uFF09 |\n| `LEFT` | `LEFT(\u5024, \u6587\u5B57\u6570)` | \u5148\u982D\u304B\u3089\u6307\u5B9A\u6587\u5B57\u6570\u3092\u8FD4\u3059 |\n| `RIGHT` | `RIGHT(\u5024, \u6587\u5B57\u6570)` | \u672B\u5C3E\u304B\u3089\u6307\u5B9A\u6587\u5B57\u6570\u3092\u8FD4\u3059 |\n| `INSTR` | `INSTR(\u5024, \u691C\u7D22\u6587\u5B57\u5217)` | \u691C\u7D22\u4F4D\u7F6E\u3092 1-indexed \u3067\u8FD4\u3059\uFF08\u898B\u3064\u304B\u3089\u306A\u3051\u308C\u3070 `0`\uFF09 |\n| `CONCAT` | `CONCAT(\u50241, \u50242, ...)` | \u6587\u5B57\u5217\u306E\u9023\u7D50\uFF08\u53EF\u5909\u9577\u5F15\u6570\uFF09 |\n| `REPLACE` | `REPLACE(\u30D5\u30A3\u30FC\u30EB\u30C9, \u691C\u7D22, \u7F6E\u63DB)` | \u6587\u5B57\u5217\u7F6E\u63DB |\n| `REGEXP_LIKE` | `REGEXP_LIKE(\u5024, \u30D1\u30BF\u30FC\u30F3 [, \u30D5\u30E9\u30B0])` | \u4E00\u81F4\u3059\u308C\u3070\u6587\u5B57\u5217 `'1'`\u3001\u975E\u4E00\u81F4\u306A\u3089\u6587\u5B57\u5217 `'0'` |\n| `REGEXP_REPLACE` | `REGEXP_REPLACE(\u5024, \u30D1\u30BF\u30FC\u30F3, \u7F6E\u63DB [, \u30D5\u30E9\u30B0 [, occurrence]])` | \u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B\u7B87\u6240\u306E\u5168\u90E8\u307E\u305F\u306F N \u756A\u76EE\u3092\u7F6E\u63DB |\n| `REGEXP_SUBSTR` | `REGEXP_SUBSTR(\u5024, \u30D1\u30BF\u30FC\u30F3 [, \u30D5\u30E9\u30B0])` | \u6700\u521D\u306E\u4E00\u81F4\u6587\u5B57\u5217\uFF08\u975E\u4E00\u81F4\u306F\u7A7A\u6587\u5B57\uFF09 |\n| `TRANSLATE` | `TRANSLATE(\u5024, \u5909\u63DB\u5143, \u5909\u63DB\u5148)` | \u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u5358\u4F4D\u306E 1 \u6587\u5B57\u5BFE 1 \u6587\u5B57\u5199\u50CF |\n| `COALESCE` | `COALESCE(\u50241, \u50242, ...)` | \u6700\u521D\u306E\u975E\u7A7A\u5024\u3092\u8FD4\u3059\u3002\u5F15\u6570\u304C\u3059\u3079\u3066\u6570\u5024\u306A\u3089\u7D50\u679C\u3082\u6570\u5024\u3068\u3057\u3066\u4E26\u3079\u66FF\u3048\u30FB\u6BD4\u8F03\u3055\u308C\u308B |\n| `ISNULL` | `ISNULL(\u5024, \u4EE3\u66FF\u5024)` | \u5024\u304C\u7A7A\u306A\u3089\u4EE3\u66FF\u5024\u3001\u305D\u308C\u4EE5\u5916\u306F\u5024\uFF08`COALESCE` \u306E 2 \u5F15\u6570\u7248\uFF09\u3002\u5F15\u6570\u304C\u3059\u3079\u3066\u6570\u5024\u306A\u3089\u7D50\u679C\u3082\u6570\u5024\u3068\u3057\u3066\u4E26\u3079\u66FF\u3048\u30FB\u6BD4\u8F03\u3055\u308C\u308B |\n| `NULLIF` | `NULLIF(\u50241, \u50242)` | \u50241 \u3068 \u50242 \u304C\u7B49\u3057\u3051\u308C\u3070\u7A7A\u6587\u5B57\u3001\u305D\u308C\u4EE5\u5916\u306F\u50241\u3002\u5F15\u6570\u304C\u3059\u3079\u3066\u6570\u5024\u306A\u3089\u7D50\u679C\u3082\u6570\u5024\u3068\u3057\u3066\u4E26\u3079\u66FF\u3048\u30FB\u6BD4\u8F03\u3055\u308C\u308B |\n| `GREATEST` | `GREATEST(\u50241, \u50242, ...)` | \u884C\u5185\u306E\u6700\u5927\u5024\uFF082 \u5F15\u6570\u4EE5\u4E0A\uFF09 |\n| `LEAST` | `LEAST(\u50241, \u50242, ...)` | \u884C\u5185\u306E\u6700\u5C0F\u5024\uFF082 \u5F15\u6570\u4EE5\u4E0A\uFF09 |\n| `LPAD` | `LPAD(\u5024, \u9577\u3055 [, \u57CB\u3081\u6587\u5B57\u5217])` | \u5DE6\u5074\u3092\u57CB\u3081\u308B\uFF08\u65E2\u5B9A\u306F\u534A\u89D2\u30B9\u30DA\u30FC\u30B9\uFF09 |\n| `RPAD` | `RPAD(\u5024, \u9577\u3055 [, \u57CB\u3081\u6587\u5B57\u5217])` | \u53F3\u5074\u3092\u57CB\u3081\u308B\uFF08\u65E2\u5B9A\u306F\u534A\u89D2\u30B9\u30DA\u30FC\u30B9\uFF09 |\n\n```sql\nSELECT UPPER(\u30B9\u30C6\u30FC\u30BF\u30B9) AS \u30B9\u30C6\u30FC\u30BF\u30B9 FROM APP100\nSELECT CONCAT(\u59D3, '\u3000', \u540D) AS \u6C0F\u540D FROM APP100\nSELECT '\u6C0F\u540D: ' || \u59D3 || '\u3000' || \u540D AS \u8868\u793A FROM APP100 -- || \u306F CONCAT \u3068\u540C\u7FA9\uFF08v3.4.0\uFF09\nSELECT SUBSTRING(\u90F5\u4FBF\u756A\u53F7, 1, 3) AS \u5E02\u5916\u5C40\u756A FROM APP100\nSELECT LEFT(\u9867\u5BA2\u30B3\u30FC\u30C9, 2) AS \u5206\u985E, RIGHT(\u9867\u5BA2\u30B3\u30FC\u30C9, 4) AS \u9023\u756A FROM APP100\nSELECT LPAD(\u9867\u5BA2No, 5, '0') AS \u9867\u5BA2\u30B3\u30FC\u30C9 FROM APP100\nSELECT GREATEST(\u898B\u7A4D\u984D, \u53D7\u6CE8\u984D, \u8ACB\u6C42\u984D) AS \u6700\u5927\u984D FROM APP100\nSELECT REPLACE(\u96FB\u8A71\u756A\u53F7, '-', '') AS \u96FB\u8A71\u756A\u53F7 FROM APP100\nSELECT REGEXP_LIKE(\u90F5\u4FBF\u756A\u53F7, '^[0-9]{3}-[0-9]{4}$') AS \u66F8\u5F0FOK FROM APP100\nSELECT REGEXP_REPLACE(\u96FB\u8A71\u756A\u53F7, '[^0-9]', '') AS \u6570\u5B57\u306E\u307F FROM APP100\nSELECT REGEXP_SUBSTR(\u30E1\u30E2, '[A-Z]{2}-[0-9]{6}') AS \u53D7\u4ED8\u756A\u53F7 FROM APP100\nSELECT LENGTH(\u4F1A\u793E\u540D) AS kintone\u6587\u5B57\u6570, LENGTH_CHAR(\u4F1A\u793E\u540D) AS \u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u6570 FROM APP100\nSELECT TRANSLATE(\u4F1A\u793E\u540D, '\u555E\u7130\u9DD7', '\u5516\u7114\u9D0E') AS \u4F1A\u793E\u540D FROM APP100\nSELECT COALESCE(\u30E1\u30E2, '\uFF08\u306A\u3057\uFF09') AS \u30E1\u30E2 FROM APP100\nSELECT ISNULL(\u5EFA\u7269\u540D, '\uFF08\u306A\u3057\uFF09') AS \u5EFA\u7269\u540D FROM APP100\nSELECT NULLIF(\u696D\u7A2E, '\u305D\u306E\u4ED6') AS \u696D\u7A2E FROM APP100 -- '\u305D\u306E\u4ED6' \u3092\u7A7A\u306B\u3059\u308B\n```\n\n> `SUBSTRING` \u306E\u958B\u59CB\u4F4D\u7F6E\u306F 1 \u4EE5\u4E0A\u3067\u3059\u3002`0` \u4EE5\u4E0B\u306F `1` \u3068\u540C\u3058\u304F\u5148\u982D\u304B\u3089\u6271\u3044\u307E\u3059\u3002MySQL \u306E\u3088\u3046\u306A\u300C\u8CA0\u6570\uFF1D\u672B\u5C3E\u304B\u3089\u300D\u306E\u5207\u308A\u51FA\u3057\u306B\u306F\u5BFE\u5FDC\u3057\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u672B\u5C3E\u304B\u3089\u53D6\u5F97\u3059\u308B\u5834\u5408\u306F `RIGHT` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n`SUBSTRING` / `LEFT` / `RIGHT` / `LPAD` / `RPAD` \u306E\u9577\u3055\u5F15\u6570\u306F\u30B3\u30FC\u30C9\u30E6\u30CB\u30C3\u30C8\u4E88\u7B97\u3067\u3059\u3002\u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u3092\u5272\u308B\u5883\u754C\u3067\u306F\u5B89\u5168\u306A\u5074\u3078\u7E2E\u3081\u307E\u3059\u3002\u7D50\u679C\u306F\u5FC5\u305A\u6307\u5B9A\u4E88\u7B97\u4EE5\u4E0B\u306B\u306A\u308A\u307E\u3059\u3002`LPAD` / `RPAD` \u3067\u306F\u3001\u6307\u5B9A\u4E88\u7B97\u306E\u6B8B\u308A\u306B\u57CB\u3081\u6587\u5B57\u5217\u3092\u5B89\u5168\u306B\u53CE\u3081\u3089\u308C\u306A\u3044\u5834\u5408\u3001\u7D50\u679C\u304C\u6307\u5B9A\u9577\u3088\u308A\u77ED\u304F\u306A\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n\n`LENGTH` \u306F kintone \u3068\u540C\u3058 UTF-16 \u30B3\u30FC\u30C9\u30E6\u30CB\u30C3\u30C8\u6570\u3001`LENGTH_CHAR` \u306F Unicode \u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u6570\u3092\u8FD4\u3057\u307E\u3059\u3002\u305F\u3068\u3048\u3070 `LENGTH('\u{20B9F}') = 2`\u3001`LENGTH_CHAR('\u{20B9F}') = 1` \u3067\u3059\u3002`LENGTH(x) - LENGTH_CHAR(x)` \u306F\u3001\u5165\u529B\u306B\u542B\u307E\u308C\u308B\u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u6570\u306B\u306A\u308A\u307E\u3059\u3002`LENGTH_CHAR` \u306F\u66F8\u8A18\u7D20\u6570\u3067\u306F\u306A\u3044\u305F\u3081\u3001IVS\u30FB\u7D50\u5408\u6587\u5B57\u30FBZWJ \u7D75\u6587\u5B57\u3092\u4EBA\u304C\u898B\u308B 1 \u6587\u5B57\u3068\u3057\u3066\u307E\u3068\u3081\u307E\u305B\u3093\u3002\n\n`TRANSLATE` \u306F `\u5909\u63DB\u5143` \u3068 `\u5909\u63DB\u5148` \u3092\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u5358\u4F4D\u3067\u4F4D\u7F6E\u5BFE\u5FDC\u3055\u305B\u308B\u30011 \u6587\u5B57\u304B\u3089 1 \u6587\u5B57\u3078\u306E\u5199\u50CF\u5C02\u7528\u95A2\u6570\u3067\u3059\u3002\u4E21\u8005\u306E\u6587\u5B57\u6570\u304C\u7570\u306A\u308B\u5834\u5408\u306F `ArgumentError` \u306B\u306A\u308A\u3001`\u5909\u63DB\u5143` \u306B\u540C\u3058\u6587\u5B57\u304C\u8907\u6570\u3042\u308B\u5834\u5408\u306F\u6700\u521D\u306E\u5BFE\u5FDC\u304C\u512A\u5148\u3055\u308C\u307E\u3059\u3002\u5BFE\u5FDC\u3057\u306A\u3044\u5165\u529B\u6587\u5B57\u306F\u305D\u306E\u307E\u307E\u8FD4\u3057\u307E\u3059\u3002`\uFF8E\uFF9E`\uFF082 \u6587\u5B57\uFF09\u304B\u3089 `\u30DC`\uFF081 \u6587\u5B57\uFF09\u306E\u3088\u3046\u306A\u534A\u89D2\u30AB\u30CA\u304B\u3089\u5168\u89D2\u30AB\u30CA\u3078\u306E\u5909\u63DB\u306F 2 \u5BFE 1 \u3092\u542B\u3080\u305F\u3081\u3001`TRANSLATE` \u3060\u3051\u3067\u306F\u3067\u304D\u307E\u305B\u3093\u3002\n\n\u6B63\u898F\u8868\u73FE3\u95A2\u6570\u306F ECMAScript\uFF08JavaScript\uFF09\u65B9\u8A00\u3092\u4F7F\u3044\u3001POSIX ERE \u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u30D5\u30E9\u30B0\u306F `i` / `m` / `s` \u306E\u307F\u6307\u5B9A\u3067\u304D\u3001Unicode \u30E2\u30FC\u30C9 `u` \u306F\u5E38\u306B\u6709\u52B9\u3067\u3059\u3002`g` / `y` / `d` / `u` / `v` \u305D\u306E\u4ED6\u306E\u30D5\u30E9\u30B0\u306F `ArgumentError` \u306B\u306A\u308A\u307E\u3059\u3002`REGEXP_REPLACE` \u306E `occurrence` \u306F\u7701\u7565\u307E\u305F\u306F `0` \u3067\u5168\u4E00\u81F4\u3001\u975E\u8CA0\u6574\u6570 `N`\uFF081 \u4EE5\u4E0A\uFF09\u3067 N \u756A\u76EE\u306E\u4E00\u81F4\u3060\u3051\u3092\u7F6E\u63DB\u3057\u3001\u4E00\u81F4\u6570\u3092\u8D85\u3048\u308B\u5834\u5408\u306F\u5165\u529B\u3092\u5909\u66F4\u3057\u307E\u305B\u3093\u3002kSQL \u3067\u306F\u7B2C4\u5F15\u6570\u304C\u30D5\u30E9\u30B0\u3001\u7B2C5\u5F15\u6570\u304C `occurrence` \u3067\u3042\u308A\u3001MySQL\uFF0FOracle \u3068\u306F\u5F15\u6570\u4F4D\u7F6E\u304C\u7570\u306A\u308A\u307E\u3059\u3002\u7F6E\u63DB\u6587\u5B57\u5217\u306E `$1`\u301C`$99`\u30FB`$<name>`\u30FB`$&`\u30FB`$$` \u306F ECMAScript \u306E\u898F\u5247\u3067\u89E3\u91C8\u3057\u307E\u3059\u3002\u524D\u5F8C\u6587\u5B57\u5217\u3092\u633F\u5165\u3059\u308B `` $` `` \u3068 `$'` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002`REGEXP_SUBSTR` \u306F\u975E\u4E00\u81F4\u3068\u7A7A\u6587\u5B57\u4E00\u81F4\u306E\u3069\u3061\u3089\u3082\u7A7A\u6587\u5B57\u3092\u8FD4\u3059\u305F\u3081\u3001\u533A\u5225\u304C\u5FC5\u8981\u306A\u5834\u5408\u306F `REGEXP_LIKE` \u3092\u4F75\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30D1\u30BF\u30FC\u30F3\u3001\u30D5\u30E9\u30B0\u3001`occurrence` \u306B\u306F\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u306A\u304F\u5F0F\u3084\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u6307\u5B9A\u3067\u304D\u3001\u884C\u3054\u3068\u306B\u5B9F\u884C\u6642\u8A55\u4FA1\u3055\u308C\u307E\u3059\u3002\n\n> **\u6B63\u898F\u8868\u73FE\u306E\u5229\u7528\u306F\u30E6\u30FC\u30B6\u30FC\u8CAC\u4EFB\u3067\u3059\u3002** \u30D1\u30BF\u30FC\u30F3\u306B\u3088\u3063\u3066\u306F ReDoS\uFF08\u7834\u6EC5\u7684\u30D0\u30C3\u30AF\u30C8\u30E9\u30C3\u30AF\uFF09\u3067\u5B9F\u884C\u304C\u66B4\u8D70\u3057\u3001kSQL \u304B\u3089\u306F\u4E2D\u65AD\u3067\u304D\u307E\u305B\u3093\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u306F\u30BF\u30D6\u3092\u5F37\u5236\u7D42\u4E86\uFF08\u540C\u3058\u30BF\u30D6\u306E\u672A\u4FDD\u5B58\u30EC\u30B3\u30FC\u30C9\u7DE8\u96C6\u3068\u672A\u4FDD\u5B58 SQL \u3082\u5931\u308F\u308C\u307E\u3059\uFF09\u3001CLI \u3067\u306F Ctrl+C\u3001MCP \u3067\u306F\u30D7\u30ED\u30BB\u30B9\u3092\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044\u3002MCP \u3067\u306F\u540C\u4E00\u30D7\u30ED\u30BB\u30B9\u306E\u4ED6\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u3082\u505C\u6B62\u3057\u307E\u3059\u3002\n>\n> \u7D50\u679C\u3084\u69CB\u6587\u306E\u53D7\u7406\u53EF\u5426\u306F\u5B9F\u884C\u74B0\u5883\uFF08\u30D6\u30E9\u30A6\u30B6\uFF0FNode\uFF09\u3068\u305D\u306E\u7248\u306B\u4F9D\u5B58\u3057\u5F97\u307E\u3059\u3002\u7279\u306B `\\p{}`\u3001`u+i` \u306E case folding \u306F Unicode \u7248\u5DEE\u3001\u65B0\u3057\u3044\u6B63\u898F\u8868\u73FE\u69CB\u6587\u306F Node \u7248\u5DEE\u306E\u5F71\u97FF\u3092\u53D7\u3051\u3001\u540C\u3058 SQL \u3067\u3082\u30D7\u30E9\u30B0\u30A4\u30F3\u30FBCLI\u30FBMCP \u3067\u7D50\u679C\u304C\u5909\u308F\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\n\n`GREATEST` / `LEAST` \u306F\u3001\u5217\u65B9\u5411\u306E\u96C6\u7D04\u95A2\u6570 `MAX` / `MIN` \u3068\u306F\u7570\u306A\u308A\u3001\u540C\u3058\u884C\u306E\u5F15\u6570\u540C\u58EB\u3092\u6BD4\u8F03\u3057\u307E\u3059\u3002\u7A7A\u6587\u5B57\u306F\u5E38\u306B\u6700\u5C0F\u3067\u3059\u3002\u7A7A\u6587\u5B57\u3092\u9664\u3044\u305F\u96C6\u5408\u304C\u3059\u3079\u3066\u6570\u5024\u306A\u3089\u6570\u5024\u6BD4\u8F03\u3057\u30011 \u3064\u3067\u3082\u975E\u6570\u5024\u306A\u3089\u96C6\u5408\u5168\u4F53\u3092\u6587\u5B57\u5217\u6BD4\u8F03\u3057\u307E\u3059\u3002\u6570\u5024\u304C\u540C\u5024\u306A\u3089\u5143\u306E\u6587\u5B57\u5217\u8868\u8A18\u3092\u4E8C\u6B21\u30AD\u30FC\u306B\u3059\u308B\u305F\u3081\u3001\u5F15\u6570\u9806\u306B\u3088\u3063\u3066\u7D50\u679C\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n\n`LEFT` / `RIGHT` / `INSTR` / `GREATEST` / `LEAST` / `LPAD` / `RPAD` \u306F\u5F15\u6570\u306E\u500B\u6570\u3092\u691C\u8A3C\u3057\u3001\u4E0D\u6B63\u306A\u5834\u5408\u306F `ArgumentError` \u306B\u306A\u308A\u307E\u3059\u3002`LPAD` / `RPAD` \u3067\u57CB\u3081\u6587\u5B57\u5217\u304C\u7A7A\u306E\u5834\u5408\u306F\u3001\u5165\u529B\u5024\u3092\u305D\u306E\u307E\u307E\u8FD4\u3057\u307E\u3059\u3002\n\n- `LENGTH_CHAR` / `TRANSLATE` / `REGEXP_LIKE` / `REGEXP_REPLACE` / `REGEXP_SUBSTR` / `INSTR` / `GREATEST` / `LEAST` / `LPAD` / `RPAD` \u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F `` `REGEXP_LIKE` `` \u306E\u3088\u3046\u306B\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002`LEFT` / `RIGHT` \u306F `LEFT JOIN` / `RIGHT JOIN` \u306E\u4E88\u7D04\u8A9E\u3092\u517C\u306D\u3066\u304A\u308A\u3001\u76F4\u5F8C\u306B `(` \u304C\u3042\u308B\u5834\u5408\u306E\u307F\u95A2\u6570\u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002\n\n> **`ISNULL` \u306F 2 \u5F15\u6570\uFF08SQL Server \u7CFB\uFF09\u3067\u3059\u3002** MySQL \u306E 1 \u5F15\u6570 `ISNULL(\u5F0F)`\uFF08\u771F\u507D\u3092\u8FD4\u3059\uFF09\u3068\u306F**\u5225\u7269**\u3067\u3059\u3002\u7A7A\u5224\u5B9A\u306B\u306F `IS NULL` / `IS NOT NULL`\uFF08\u2192 [\xA76](#6-where-\u53E5)\uFF09\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002\n\n> **`NULLIF` \u306B\u3088\u308B\u30BC\u30ED\u9664\u7B97\u30AC\u30FC\u30C9\u306F\u52B9\u304D\u307E\u305B\u3093\u3002** kintone \u306B\u306F NULL \u304C\u306A\u304F kSQL \u3067\u306F**\u7A7A\u6587\u5B57\u304C NULL \u76F8\u5F53**\u306E\u305F\u3081\u3001`NULLIF(x, 0)` \u306E\u7D50\u679C\uFF08\u7A7A\u6587\u5B57\uFF09\u3092\u9664\u6570\u306B\u3059\u308B\u3068 `Number('') = 0` \u3068\u306A\u308A\u3001\u7D50\u5C40\u30BC\u30ED\u9664\u7B97\u3067 `NaN` \u306B\u306A\u308A\u307E\u3059\u3002\n>\n> ```sql\n> -- \u2717 RDB \u306E\u5B9A\u756A\u3060\u304C kSQL \u3067\u306F NaN\uFF08\u30AC\u30FC\u30C9\u306B\u306A\u3089\u306A\u3044\uFF09\n> SELECT 1000 / NULLIF(\u91D1\u984D, 0) AS \u5358\u4FA1 FROM APP100 -- \u91D1\u984D=0 \u306E\u884C\u3082\u3001\u91D1\u984D\u304C\u7A7A\u30BB\u30EB\u306E\u884C\u3082 NaN\n>\n> -- \u25CB NULL \u7F6E\u63DB\u3068\u3057\u3066\u306F\u6B63\u3057\u304F\u6A5F\u80FD\u3059\u308B\n> SELECT ISNULL(NULLIF(\u91D1\u984D, 0), '\u672A\u8A2D\u5B9A') AS \u91D1\u984D FROM APP100 -- \u91D1\u984D=0 \u306E\u884C\u306F\u300C\u672A\u8A2D\u5B9A\u300D\n>\n> -- \u2717 \u30BC\u30ED\u3060\u3051\u30AC\u30FC\u30C9\u3059\u308B\u3068\u7A7A\u30BB\u30EB\u304C\u3059\u308A\u629C\u3051\u308B\n> SELECT CASE WHEN \u91D1\u984D = 0 THEN '' ELSE 1000 / \u91D1\u984D END AS \u5358\u4FA1 FROM APP100 -- \u91D1\u984D\u304C\u7A7A\u30BB\u30EB\u306E\u884C\u306F NaN\n>\n> -- \u25CB \u7A7A\u30BB\u30EB\u3068\u30BC\u30ED\u306E\u4E21\u65B9\u3092\u30AC\u30FC\u30C9\u3059\u308B\n> SELECT CASE WHEN \u91D1\u984D = '' OR \u91D1\u984D = 0 THEN '' ELSE 1000 / \u91D1\u984D END AS \u5358\u4FA1 FROM APP100\n> ```\n>\n> **`= 0` \u3060\u3051\u3067\u306F\u7A7A\u30BB\u30EB\u3092\u6355\u307E\u3048\u3089\u308C\u307E\u305B\u3093\u3002** \u7A7A\u6587\u5B57\u306F**\u7B97\u8853\u3067\u306F 0 \u306B\u306A\u308A\u307E\u3059\u304C\u3001\u6BD4\u8F03\u3067\u306F 0 \u3068\u7B49\u3057\u304F\u306A\u3044**\u305F\u3081\u3001`CASE WHEN \u91D1\u984D = 0` \u306F\u7A7A\u30BB\u30EB\u306E\u884C\u3092 `ELSE` \u3078\u843D\u3068\u3057\u3001\u305D\u3053\u3067 `Number('') = 0` \u306B\u3088\u308B\u30BC\u30ED\u9664\u7B97\u304C\u8D77\u304D\u307E\u3059\u3002\n\n> **\u3069\u306E\u9664\u6570\u306B\u30AC\u30FC\u30C9\u304C\u8981\u308B\u304B\u306F\u3001\u5024\u306E\u4F5C\u308A\u65B9\u3067\u6C7A\u307E\u308A\u307E\u3059**\uFF08\u5B9F\u6E2C\u30FBv3.54.1\uFF09\u3002\n>\n> | \u9664\u6570\u306E\u4F5C\u308A\u65B9 | \u5024\u304C\u7121\u3044\u3068\u304D | `= 0` \u3060\u3051 | \u5FC5\u8981\u306A\u30AC\u30FC\u30C9 |\n> |---|---|---|---|\n> | **`SUM` / `COUNT` / `AVG` \u3092\u901A\u3057\u305F\u5024** | `0` | \u6355\u307E\u3048\u308B | `= 0` \u3067\u8DB3\u308A\u308B |\n> | **`MIN` / `MAX` \u3092\u901A\u3057\u305F\u5024** | \u7A7A\u6587\u5B57 | **\u3059\u308A\u629C\u3051\u3066 `NaN`** | `= '' OR = 0` |\n> | **\u7D20\u306E\u5217\u3068\u3057\u3066\u6E21\u3063\u3066\u304D\u305F\u5024** | \u7A7A\u6587\u5B57 | **\u3059\u308A\u629C\u3051\u3066 `NaN`** | `= '' OR = 0` |\n>\n> **\u300C\u96C6\u8A08\u3092\u901A\u3057\u305F\u304B\u3089\u5B89\u5168\u300D\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002** `SUM` / `COUNT` / `AVG` \u306F\u5BFE\u8C61\u884C\u304C 1 \u884C\u3082\u7121\u304F\u3066\u3082 `0` \u3092\u8FD4\u3057\u307E\u3059\u304C\uFF08MySQL \u306F `NULL` \u3092\u8FD4\u3059\u305F\u3081\u3001\u3053\u3053\u306F\u65B9\u8A00\u5DEE\u3067\u3059\uFF09\u3001**`MIN` / `MAX` \u306F\u7A7A\u6587\u5B57\u3092\u8FD4\u3057\u307E\u3059**\uFF08v3.54.0 \u3067 `0` \u304B\u3089\u5909\u66F4\u3002\u2192 [\u96C6\u8A08\u95A2\u6570](#\u96C6\u8A08\u95A2\u6570)\uFF09\u3002\n>\n> **\u7A7A\u6587\u5B57\u306F\u300C\u5024\u304C\u7121\u304B\u3063\u305F\u300D\u3053\u3068\u304B\u3089\u751F\u307E\u308C\u307E\u3059**\u2014\u2014`LEFT JOIN` \u3067\u4E00\u81F4\u3057\u306A\u304B\u3063\u305F\u884C\u3001`LAG` / `LEAD` \u3067\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u306E\u7AEF\u3001`NULLIF` \u306E\u7D50\u679C\u3001\u305D\u3057\u3066**\u5BFE\u8C61\u304C 0 \u4EF6\u306E `MIN` / `MAX`**\u3002**\u9664\u6570\u304C\u3053\u308C\u3089\u306E\u3044\u305A\u308C\u304B\u306A\u3089 `= '' OR = 0` \u304C\u8981\u308A\u307E\u3059\u3002**\n>\n> **\u8E0F\u307F\u3084\u3059\u3044\u306E\u306F\u300C\u7387\u300D\u3067\u306F\u306A\u304F\u300C\u301C\u3042\u305F\u308A\u300D\u306E\u6307\u6A19\u3067\u3059\u3002** **\u5728\u5EAB\u65E5\u6570**\uFF08\u5728\u5EAB \xF7 \u51FA\u5EAB\u30DA\u30FC\u30B9\uFF09\u30FB**\u5358\u4FA1**\uFF08\u91D1\u984D \xF7 \u6570\u91CF\uFF09\u30FB**1 \u4EF6\u3042\u305F\u308A**\u30FB**\u56DE\u8EE2\u7387**\u2014\u2014\u3044\u305A\u308C\u3082**\u5206\u6BCD\u304C\u300C\u52D5\u304D\u306E\u7121\u3044\u5BFE\u8C61\u300D\u3067\u7A7A\u306B\u306A\u308A\u307E\u3059**\u3002\u524D\u6708\u6BD4\u306E\u3088\u3046\u306A\u300C\u7387\u300D\u3088\u308A\u3001**\u5BFE\u8C61\u305D\u306E\u3082\u306E\u304C\u6B62\u307E\u3063\u3066\u3044\u308B\u5834\u5408\u306B\u5206\u6BCD\u304C\u6D88\u3048\u308B**\u5F62\u306E\u307B\u3046\u304C\u8E0F\u307F\u3084\u3059\u304F\u3001**\u30A8\u30E9\u30FC\u306F\u51FA\u305A `NaN` \u304C\u8868\u306B\u8F09\u308A\u307E\u3059**\u3002\n>\n> ```sql\n> -- \u96C6\u8A08\u3092\u901A\u3057\u3066\u3044\u308B\u306E\u3067 = 0 \u3067\u8DB3\u308A\u308B\n> SELECT SUM(\u58F2\u4E0A) / COUNT(*) AS \u5E73\u5747 FROM APP100\n>\n> -- LEFT JOIN \u3067\u4E00\u81F4\u3057\u306A\u3044\u884C\u306E \u51FA\u5EAB\u6570 \u306F\u7A7A\u6587\u5B57\u3002= '' \u304C\u8981\u308B\n> SELECT CASE WHEN s.\u51FA\u5EAB\u6570 = '' OR s.\u51FA\u5EAB\u6570 = 0 THEN '' ELSE 1000 / s.\u51FA\u5EAB\u6570 END\n> FROM APP200 m LEFT JOIN #\u96C6\u8A08 s ON m.\u88FD\u54C1\u540D = s.\u88FD\u54C1\u540D\n> ```\n\n### \u6570\u5024\u95A2\u6570\n\n| \u95A2\u6570 | \u69CB\u6587 | \u8AAC\u660E |\n|------|------|------|\n| `ROUND` | `ROUND(\u30D5\u30A3\u30FC\u30EB\u30C9 [, \u6841])` | \u56DB\u6368\u4E94\u5165 |\n| `FLOOR` | `FLOOR(\u30D5\u30A3\u30FC\u30EB\u30C9 [, \u6841])` | \u5207\u308A\u6368\u3066 |\n| `CEIL` | `CEIL(\u30D5\u30A3\u30FC\u30EB\u30C9 [, \u6841])` | \u5207\u308A\u4E0A\u3052\uFF08`CEILING` \u3082\u53EF\uFF09 |\n| `TRUNCATE` | `TRUNCATE(\u30D5\u30A3\u30FC\u30EB\u30C9 [, \u6841])` | 0 \u65B9\u5411\u3078\u5207\u308A\u6368\u3066\uFF08`TRUNC` \u3082\u53EF\uFF09 |\n\n\u6841\u6570\u306E\u6307\u5B9A:\n- \u6B63\u306E\u6574\u6570: \u5C0F\u6570\u70B9\u4EE5\u4E0B n \u6841\u3067\u4E38\u3081\u308B\n- `0`\uFF08\u7701\u7565\u6642\uFF09: \u6574\u6570\u306B\u4E38\u3081\u308B\n- \u8CA0\u306E\u6574\u6570: 10^n \u306E\u5358\u4F4D\u3067\u4E38\u3081\u308B\n\n```sql\nSELECT ROUND(\u91D1\u984D, 2) AS \u91D1\u984D FROM APP100 -- \u4F8B: 1234.567 \u2192 1234.57\nSELECT ROUND(\u91D1\u984D) AS \u91D1\u984D FROM APP100 -- \u4F8B: 1234.5 \u2192 1235\nSELECT ROUND(\u91D1\u984D, -3) AS \u5343\u5358\u4F4D FROM APP100 -- \u4F8B: 1234567 \u2192 1235000\nSELECT FLOOR(\u91D1\u984D, -2) AS \u767E\u672A\u6E80\u5207\u6368 FROM APP100\nSELECT TRUNCATE(\u91D1\u984D, 2) AS \u5C0F\u65702\u6841\u5207\u6368 FROM APP100\n```\n\n`FLOOR` \u304C\u5E38\u306B\u5C0F\u3055\u3044\u65B9\u3078\u4E38\u3081\u308B\u306E\u306B\u5BFE\u3057\u3001`TRUNCATE` \u306F 0 \u65B9\u5411\u3078\u4E38\u3081\u307E\u3059\u3002\u8CA0\u6570\u3067\u5DEE\u304C\u51FA\u307E\u3059\uFF08`FLOOR(-1.5)` = `-2`\u3001`TRUNCATE(-1.5)` = `-1`\uFF09\u3002\n\n- `TRUNCATE` / `TRUNC` \u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F `` `TRUNCATE` `` \u3068\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002\n\n### \u6570\u5B66\u95A2\u6570\n\n| \u95A2\u6570 | \u69CB\u6587 | \u8AAC\u660E |\n|------|------|------|\n| `ABS` | `ABS(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u7D76\u5BFE\u5024 |\n| `MOD` | `MOD(\u30D5\u30A3\u30FC\u30EB\u30C9, \u9664\u6570)` | \u5270\u4F59\uFF08`%` \u6F14\u7B97\u5B50\u3068\u540C\u7B49\uFF09 |\n| `POWER` | `POWER(\u30D5\u30A3\u30FC\u30EB\u30C9, \u6307\u6570)` | \u7D2F\u4E57\uFF08`POW` \u3082\u53EF\uFF09 |\n| `SQRT` | `SQRT(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5E73\u65B9\u6839 |\n\n```sql\nSELECT ABS(\u5DEE\u984D) AS \u5DEE\u984D\u7D76\u5BFE\u5024 FROM APP100\nSELECT MOD(\u6570\u91CF, 3) AS \u4F59\u308A FROM APP100 -- \u6570\u91CF % 3 \u3068\u540C\u7B49\nSELECT POWER(\u8FBA\u9577, 2) AS \u9762\u7A4D FROM APP100\nSELECT ROUND(SQRT(\u9762\u7A4D), 2) AS \u8FBA\u9577 FROM APP100\n```\n\n### FORMAT \u95A2\u6570\n\n| \u95A2\u6570 | \u69CB\u6587 | \u8AAC\u660E |\n|------|------|------|\n| `FORMAT` | `FORMAT(\u30D5\u30A3\u30FC\u30EB\u30C9, \u30D1\u30BF\u30FC\u30F3)` | \u66F8\u5F0F\u6574\u5F62 |\n\n\u30D1\u30BF\u30FC\u30F3\u306B\u306F Excel \u98A8\u306E\u66F8\u5F0F\u6587\u5B57\u5217\u307E\u305F\u306F\u6574\u6570\uFF08MySQL \u30B9\u30BF\u30A4\u30EB\uFF09\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n\n| \u30D1\u30BF\u30FC\u30F3 | \u5165\u529B | \u51FA\u529B |\n|---------|------|------|\n| `'#,##0'` | 1234567 | `1,234,567` |\n| `'#,##0.00'` | 1234.5 | `1,234.50` |\n| `'0.00'` | 1234.5 | `1234.50` |\n| `'0.00%'` | 0.156 | `15.60%` |\n| `'#,##0.##'` | 1234.5 | `1,234.5` |\n| `2`\uFF08\u6574\u6570\uFF09 | 1234.5 | `1,234.50` |\n\n```sql\nSELECT FORMAT(\u91D1\u984D, '#,##0') AS \u91D1\u984D\u8868\u793A FROM APP100\nSELECT FORMAT(\u9054\u6210\u7387, '0.00%') AS \u9054\u6210\u7387\u8868\u793A FROM APP100\n```\n\n### \u578B\u5909\u63DB\u95A2\u6570\n\n| \u95A2\u6570 | \u69CB\u6587 | \u8AAC\u660E |\n|------|------|------|\n| `CAST` | `CAST(\u30D5\u30A3\u30FC\u30EB\u30C9 AS \u578B)` | \u578B\u5909\u63DB |\n| `CONVERT` | `CONVERT(\u30D5\u30A3\u30FC\u30EB\u30C9, \u578B)` | \u578B\u5909\u63DB\uFF08`CAST` \u306E\u5225\u8A18\u6CD5\uFF09 |\n\n> \u95A2\u6570\u30A8\u30A4\u30EA\u30A2\u30B9\u306E canonical \u5BFE\u5FDC\u306F `SUBSTR` \u2192 `SUBSTRING`\u3001`CONVERT` \u2192 `CAST`\u3001`CEILING` \u2192 `CEIL`\u3001`TRUNC` \u2192 `TRUNCATE`\u3001`POW` \u2192 `POWER` \u3067\u3059\u3002\n\n\u578B\u540D: `TEXT` / `VARCHAR` / `CHAR` \u2192 \u6587\u5B57\u5217\u3001`NUMBER` / `INT` / `INTEGER` / `DECIMAL` / `FLOAT` \u2192 \u6570\u5024\n\n```sql\nSELECT CAST(\u91D1\u984D AS TEXT) AS \u91D1\u984D\u6587\u5B57\u5217 FROM APP100\nSELECT CAST(\u30B3\u30FC\u30C9 AS NUMBER) AS \u30B3\u30FC\u30C9\u6570\u5024 FROM APP100\n```\n\n### \u65E5\u4ED8\u30FB\u65E5\u6642\u95A2\u6570\n\n> **`WEEK()` \u306F ISO-8601 \u56FA\u5B9A\u3067\u3059\u3002MySQL `WEEK()` \u306E\u65E2\u5B9A mode 0 \u3068\u306F\u4E92\u63DB\u6027\u304C\u306A\u304F\u3001mode \u5F15\u6570\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002** \u9031\u306F\u6708\u66DC\u59CB\u307E\u308A\u3067\u3001\u305D\u306E\u5E74\u306E\u6728\u66DC\u65E5\u3092\u542B\u3080\u9031\u304C W01 \u3067\u3059\u3002\n\n| \u95A2\u6570 | \u69CB\u6587 | \u8AAC\u660E |\n|------|------|------|\n| `YEAR` | `YEAR(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5E74\u3092\u8FD4\u3059 |\n| `MONTH` | `MONTH(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u6708\u3092\u8FD4\u3059\uFF081\u301C12\uFF09 |\n| `DAY` | `DAY(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u65E5\u3092\u8FD4\u3059\uFF081\u301C31\uFF09 |\n| `DAYOFWEEK` | `DAYOFWEEK(\u65E5\u4ED8)` | \u66DC\u65E5\u756A\u53F7\u3092\u8FD4\u3059\uFF081=\u65E5\u66DC\u301C7=\u571F\u66DC\uFF09 |\n| `QUARTER` | `QUARTER(\u65E5\u4ED8)` | \u56DB\u534A\u671F\u3092\u8FD4\u3059\uFF081\u301C3\u6708=1\u300110\u301C12\u6708=4\uFF09 |\n| `WEEK` | `WEEK(\u65E5\u4ED8)` | ISO-8601 \u9031\u756A\u53F7\u3092\u30BC\u30ED\u57CB\u3081\u306A\u3057\u3067\u8FD4\u3059\uFF081\u301C53\uFF09 |\n| `DATE_FORMAT` | `DATE_FORMAT(\u30D5\u30A3\u30FC\u30EB\u30C9, \u30D5\u30A9\u30FC\u30DE\u30C3\u30C8)` | \u65E5\u4ED8\u3092\u66F8\u5F0F\u5316 |\n| `DATEDIFF` | `DATEDIFF(\u65E5\u4ED81, \u65E5\u4ED82)` | \u65E5\u6570\u5DEE\uFF08\u65E5\u4ED81 \u2212 \u65E5\u4ED82\uFF09 |\n| `DATE_ADD` | `DATE_ADD(\u65E5\u4ED8, \u52A0\u7B97\u5024, \u5358\u4F4D)` | \u65E5\u4ED8\u52A0\u7B97\uFF08\u5358\u4F4D\u306F `'YEAR'` / `'MONTH'` / `'DAY'`\uFF09 |\n| `LAST_DAY` | `LAST_DAY(\u65E5\u4ED8)` | \u6708\u672B\u65E5\u3092 `YYYY-MM-DD` \u3067\u8FD4\u3059 |\n| `CURRENT_DATE()` | `CURRENT_DATE()` | \u4ECA\u65E5\u306E\u65E5\u4ED8\uFF08`YYYY-MM-DD`\uFF09\u3092 JS \u3067\u53D6\u5F97 |\n| `CURRENT_TIMESTAMP()` | `CURRENT_TIMESTAMP()` | \u73FE\u5728\u65E5\u6642\uFF08ISO 8601\uFF09\u3092 JS \u3067\u53D6\u5F97 |\n\n```sql\nSELECT YEAR(\u4F5C\u6210\u65E5\u6642) AS \u5E74, MONTH(\u4F5C\u6210\u65E5\u6642) AS \u6708 FROM APP100\nSELECT DAYOFWEEK(\u53D7\u6CE8\u65E5) AS \u66DC\u65E5\u756A\u53F7, QUARTER(\u53D7\u6CE8\u65E5) AS \u56DB\u534A\u671F FROM APP100\nSELECT DATE_FORMAT(\u53D7\u6CE8\u65E5, '%G-%v') AS ISO\u9031, COUNT(*) FROM APP100 GROUP BY DATE_FORMAT(\u53D7\u6CE8\u65E5, '%G-%v')\nSELECT DATEDIFF(TODAY(), \u671F\u9650\u65E5) AS \u6B8B\u65E5\u6570 FROM APP100\nSELECT DATE_FORMAT(\u4F5C\u6210\u65E5\u6642, '%Y-%m') AS \u5E74\u6708 FROM APP100\nSELECT DATE_ADD(\u671F\u9650\u65E5, -1, 'MONTH') AS \u524D\u6708, LAST_DAY(\u671F\u9650\u65E5) AS \u6708\u672B\u65E5 FROM APP100\n\n-- SELECT \u5217\u3067\u73FE\u5728\u65E5\u6642\u3092\u4ED8\u52A0\uFF08\u5E38\u306B JS \u8A55\u4FA1\uFF09\nSELECT \u9867\u5BA2\u540D, \u91D1\u984D, CURRENT_TIMESTAMP() AS \u53D6\u5F97\u65E5\u6642 FROM APP100\nSELECT *, CURRENT_DATE() AS \u4ECA\u65E5 FROM APP100\n\n-- WHERE \u3067\u3082\u4F7F\u7528\u53EF\u80FD\uFF08FULL_SCAN\uFF09\nSELECT * FROM APP100 WHERE \u4F5C\u6210\u65E5 = CURRENT_DATE()\n```\n\n`DATE_FORMAT` \u306F\u6B21\u306E\u6307\u5B9A\u5B50\u306B\u5BFE\u5FDC\u3057\u307E\u3059\u3002ISO \u9031\u30E9\u30D9\u30EB\u306B\u306F\u3001\u66A6\u5E74 `%Y` \u3067\u306F\u306A\u304F ISO week-year `%G` \u3092\u4F7F\u3046 **`%G-%v`** \u3092\u63A8\u5968\u3057\u307E\u3059\uFF08\u5E74\u3092\u307E\u305F\u3050\u9031\u3067 `%Y-%v` \u306F\u8AA4\u3063\u305F\u7D44\u307F\u5408\u308F\u305B\u306B\u306A\u308A\u307E\u3059\uFF09\u3002\n\n| \u6307\u5B9A\u5B50 | \u5024 |\n|---|---|\n| `%Y` | 4\u6841\u5E74 |\n| `%y` | 2\u6841\u5E74 |\n| `%m` | 2\u6841\u6708\uFF08`01`\u301C`12`\uFF09 |\n| `%c` | \u6708\uFF08`1`\u301C`12`\uFF09 |\n| `%d` | 2\u6841\u65E5\uFF08`01`\u301C`31`\uFF09 |\n| `%e` | \u65E5\uFF08`1`\u301C`31`\uFF09 |\n| `%H` | 2\u6841\u6642\uFF08`00`\u301C`23`\uFF09 |\n| `%i` | 2\u6841\u5206\uFF08`00`\u301C`59`\uFF09 |\n| `%s` | 2\u6841\u79D2\uFF08`00`\u301C`59`\uFF09 |\n| `%w` | \u66DC\u65E5\u756A\u53F7\uFF080=\u65E5\u66DC\u301C6=\u571F\u66DC\uFF09 |\n| `%a` | **kSQL \u5B9A\u7FA9**\u306E\u65E5\u672C\u8A9E\u77ED\u7E2E\u66DC\u65E5\uFF08`\u65E5`\u301C`\u571F`\u3002MySQL \u306E\u82F1\u8A9E\u77ED\u7E2E\u540D\u3068\u306F\u975E\u4E92\u63DB\uFF09 |\n| `%v` | ISO \u9031\u756A\u53F7\uFF08`01`\u301C`53`\uFF09 |\n| `%G` | ISO week-year\uFF084\u6841\uFF09 |\n\n\u65B0\u3057\u3044\u65E5\u4ED8\u8EF8\u95A2\u6570\u3068 `%w` / `%a` / `%v` / `%G` \u306F\u3001\u5148\u982D10\u6587\u5B57\u304C `YYYY-MM-DD` \u3067\u66A6\u4E0A\u5B9F\u5728\u3059\u308B\u65E5\u4ED8\u306E\u5834\u5408\u3060\u3051\u5024\u3092\u8FD4\u3057\u307E\u3059\u3002\u4E0D\u6B63\u65E5\u4ED8\u3067\u306F\u95A2\u6570\u306F\u7A7A\u6587\u5B57\u306B\u306A\u308A\u3001`DATE_FORMAT` \u306F\u65B0\u3057\u3044\u6307\u5B9A\u5B50\u3060\u3051\u3092\u7A7A\u6587\u5B57\u3078\u7F6E\u63DB\u3057\u307E\u3059\u3002\u305F\u3068\u3048\u3070 `DATE_FORMAT('2026-02-31', '%Y|%w|%G-%v')` \u306F `2026||-` \u3067\u3059\u3002\u65E2\u5B589\u6307\u5B9A\u5B50\u306F\u5F93\u6765\u3069\u304A\u308A\u6587\u5B57\u5217\u90E8\u5206\u3092\u6574\u5F62\u3057\u307E\u3059\u3002\u672A\u5BFE\u5FDC\u6307\u5B9A\u5B50\u3001\u5358\u72EC `%`\u3001`%%Y` \u306F\u5F93\u6765\u3069\u304A\u308A\u7D20\u901A\u3057\u3067\u3059\u3002\n\n`DATE_ADD` \u306E\u5358\u4F4D\u306F\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u305B\u3093\u3002`YEAR` / `MONTH` / `DAY` \u4EE5\u5916\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u30EA\u30C6\u30E9\u30EB\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306E\u3069\u3061\u3089\u3067\u3082\u5B9F\u884C\u6642\u306B `ArgumentError` \u306B\u306A\u308A\u307E\u3059\u3002`YEAR` / `MONTH` \u306E\u52A0\u6E1B\u7B97\u3067\u5143\u306E\u65E5\u304C\u5BFE\u8C61\u6708\u306B\u5B58\u5728\u3057\u306A\u3044\u5834\u5408\u306F\u3001\u5BFE\u8C61\u6708\u306E\u672B\u65E5\u3078\u4E38\u3081\u307E\u3059\uFF08\u4F8B: `DATE_ADD('2026-01-31', 1, 'MONTH')` \u306F `2026-02-28`\uFF09\u3002\u3053\u306E\u4E38\u3081\u304C\u8D77\u304D\u308B\u3068\u3001\u9006\u5411\u304D\u306B\u540C\u3058\u6708\u6570\u3092\u52A0\u7B97\u3057\u3066\u3082\u5143\u306E\u65E5\u306B\u306F\u623B\u308A\u307E\u305B\u3093\uFF08`2026-01-31` \u2192 `2026-02-28` \u2192 `2026-01-28`\uFF09\u3002`DAY` \u52A0\u7B97\u3067\u306F\u3053\u306E\u4E38\u3081\u306F\u884C\u3044\u307E\u305B\u3093\u3002`DATE_SUB` \u306F\u3042\u308A\u307E\u305B\u3093\u3002\u6E1B\u7B97\u306F\u52A0\u7B97\u5024\u306B\u8CA0\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08`DATE_ADD(\u671F\u9650\u65E5, -1, 'MONTH')`\uFF09\u3002\n\n- `DAYOFWEEK` / `QUARTER` / `WEEK` / `LAST_DAY` \u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F `` `WEEK` `` \u306E\u3088\u3046\u306B\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002`WEEKLY` \u306E\u3088\u3046\u306A\u9577\u3044\u8B58\u5225\u5B50\u306F\u5F71\u97FF\u3092\u53D7\u3051\u307E\u305B\u3093\u3002\n\n> **`CURRENT_DATE()` / `CURRENT_TIMESTAMP()` \u306F\u30AD\u30FC\u30EF\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002** \n> `()` \u304C\u3042\u308C\u3070\u95A2\u6570\u3001\u306A\u3051\u308C\u3070\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002kSQL \u306E\u30B9\u30AB\u30E9\u30FC\u95A2\u6570\u3067\u3042\u308A\u3001\n> kintone REST query \u3078\u306E\u62BC\u3057\u4E0B\u3052\u7D4C\u8DEF\u306F\u3042\u308A\u307E\u305B\u3093\u3002SELECT \u5217\u3067\u3082 `WHERE` \u3067\u3082\u3001\u5E38\u306B\n> **\u5B9F\u884C\u74B0\u5883\u306E\u30ED\u30FC\u30AB\u30EB\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3**\u3067 client \u8A55\u4FA1\u3055\u308C\u307E\u3059\u3002\u672C\u30EA\u30EA\u30FC\u30B9\u306E\n> kintone query function \u306E fail-closed \u5BFE\u8C61\u5916\u3067\u3059\u3002\n\n#### kintone \u30AF\u30A8\u30EA\u95A2\u6570\uFF08server-only\uFF09\n\n`TODAY()` / `NOW()` / `LOGINUSER()` / `PRIMARY_ORGANIZATION()` \u3068\u6B21\u306E\u76F8\u5BFE\u65E5\u4ED812\u95A2\u6570\u306F\u3001`WHERE` \u3067 kintone REST query\n\u3078\u305D\u306E\u307E\u307E\u6E21\u3059 **server-only** \u95A2\u6570\u3067\u3059\u3002Node / CLI / MCP / \u30D7\u30E9\u30B0\u30A4\u30F3\u3067 client \u8A55\u4FA1\u305B\u305A\u3001\nkintone \u30B5\u30FC\u30D0\u30FC\u304C\u5024\u30FB\u671F\u9593\u3068\u6BD4\u8F03\u7D50\u679C\u3092\u6C7A\u5B9A\u3057\u307E\u3059\u3002\n\n| \u95A2\u6570 | \u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u578B | \u6F14\u7B97\u5B50\u30FB\u5F62 |\n|---|---|---|\n| `TODAY()` | `DATE` / `DATETIME` / `CREATED_TIME` / `UPDATED_TIME` | \u6BD4\u8F03\u53F3\u8FBA\u306E `=` / `!=` / `<` / `<=` / `>` / `>=`\u3001`BETWEEN` \u5883\u754C |\n| `NOW()` | `DATETIME` / `CREATED_TIME` / `UPDATED_TIME` | \u6BD4\u8F03\u53F3\u8FBA\u306E `=` / `!=` / `<` / `<=` / `>` / `>=`\u3001`BETWEEN` \u5883\u754C\u3002**`DATE` \u306B\u306F\u4F7F\u7528\u4E0D\u53EF** |\n| `LOGINUSER()` | `CREATOR` / `MODIFIER` / `USER_SELECT` | singleton \u306E `in (LOGINUSER())` / `not in (LOGINUSER())` \u306E\u307F |\n| `PRIMARY_ORGANIZATION()` | `ORGANIZATION_SELECT` | singleton \u306E `in (PRIMARY_ORGANIZATION())` / `not in (PRIMARY_ORGANIZATION())` \u306E\u307F |\n\n```sql\nSELECT * FROM APP100 WHERE \u65E5\u4ED8 = TODAY()\nSELECT * FROM APP100 WHERE \u4F5C\u6210\u65E5\u6642 <= NOW()\nSELECT * FROM APP100 WHERE \u4F5C\u6210\u8005 in (LOGINUSER())\nSELECT * FROM APP100 WHERE \u62C5\u5F53\u8005 not in (LOGINUSER())\nSELECT * FROM APP100 WHERE \u62C5\u5F53\u7D44\u7E54 in (PRIMARY_ORGANIZATION())\n```\n\n`LOGINUSER()` \u306F `\u4F5C\u6210\u8005` / `\u66F4\u65B0\u8005` / \u30E6\u30FC\u30B6\u30FC\u9078\u629E\u3060\u3051\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n**\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u306B\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093**\uFF08kintone \u516C\u5F0F\u306E\u578B\u5225\u8868\u3067\u5229\u7528\u53EF\u80FD\u306A\u95A2\u6570\u306F\u300C\u306A\u3057\u300D\uFF09\u3002\n`PRIMARY_ORGANIZATION()` \u306F\u7D44\u7E54\u9078\u629E\u3060\u3051\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n**\u512A\u5148\u7D44\u7E54\u304C\u672A\u8A2D\u5B9A\u306E\u30E6\u30FC\u30B6\u30FC\u3067\u306F\u3001kintone \u304C\u3053\u306E\u6761\u4EF6\u3092\u7121\u8996\u3057\u3001\n\u4ED6\u306E\u6761\u4EF6\u3092\u6E80\u305F\u3059\u5168\u30EC\u30B3\u30FC\u30C9\u3092\u8FD4\u3057\u307E\u3059**\uFF08kintone \u516C\u5F0F\u306E\u8A18\u8FF0\u30022026-07-31 \u306B\u5B9F\u6A5F\u3067\u518D\u73FE\u3092\u78BA\u8A8D\uFF09\u3002\n\n**\u30A8\u30F3\u30B8\u30F3\u304B\u3089\u306F\u3001\u6761\u4EF6\u304C\u7121\u8996\u3055\u308C\u305F\u304B\u3069\u3046\u304B\u3092\u5224\u5225\u3067\u304D\u307E\u305B\u3093\u3002**\u305D\u306E\u305F\u3081\u6271\u3044\u304C\u5206\u304B\u308C\u307E\u3059\u3002\n\n| | |\n|---|---|\n| **DML**\uFF08`UPDATE` / `DELETE` / `UPSERT` \u3068 `INSERT` / `UPSERT ... SELECT` \u306E source\uFF09 | **\u5E38\u306B\u62D2\u5426**\u3057\u307E\u3059\u3002\u6761\u4EF6\u304C\u6D88\u3048\u308B\u3068\u5BFE\u8C61\u304C\u30A2\u30D7\u30EA\u5168\u4EF6\u306B\u306A\u308B\u305F\u3081\u3067\u3059 |\n| **`SELECT`** | **\u305D\u306E\u307E\u307E\u8FD4\u3057\u307E\u3059**\uFF08kintone \u306E\u4E00\u89A7\u306E\u7D5E\u308A\u8FBC\u307F\u3068\u540C\u3058\u6319\u52D5\uFF09 |\n\n> **`SELECT` \u3067\u4F7F\u3046\u5834\u5408\u306F\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002**\n> **\u512A\u5148\u7D44\u7E54\u304C\u672A\u8A2D\u5B9A\u306E\u5229\u7528\u8005\u306B\u306F\u3001\u7D5E\u308A\u8FBC\u307F\u304C\u52B9\u304B\u306A\u3044\u307E\u307E\u5168\u4EF6\u304C\u8FD4\u308A\u307E\u3059\u3002**\n> **\u753B\u9762\u304B\u3089\u306F\u533A\u5225\u304C\u3064\u304B\u305A\u3001\u8B66\u544A\u3082\u51FA\u307E\u305B\u3093**\uFF08\u51FA\u305B\u307E\u305B\u3093\uFF09\u3002\n> \u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u3088\u3046\u306B\u7D50\u679C\u3060\u3051\u3092\u898B\u305B\u308B\u7528\u9014\u3067\u306F\u3001**\u5229\u7528\u8005\u5074\u3067\u306E\u6848\u5185\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044\u3002**\n\n**\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\uFF0812\u95A2\u6570\uFF09**\n\n| \u5206\u985E | \u95A2\u6570\u3068\u5F15\u6570 |\n|---|---|\n| \u524D\u65E5\u30FB\u7FCC\u65E5 | `YESTERDAY()` / `TOMORROW()` |\n| \u76F8\u5BFE\u671F\u9593 | `FROM_TODAY(n, unit)`\u3002`n` \u306F `-9,007,199,254,740,991`\u301C`9,007,199,254,740,991` \u306E10\u9032\u5B89\u5168\u6574\u6570\u3001`unit` \u306F `DAYS` / `WEEKS` / `MONTHS` / `YEARS` |\n| \u9031 | `THIS_WEEK([weekday])` / `LAST_WEEK([weekday])` / `NEXT_WEEK([weekday])`\u3002\u66DC\u65E5\u306F `SUNDAY`\u301C`SATURDAY`\u3001\u7701\u7565\u6642\u306F\u9031\u5168\u4F53 |\n| \u6708 | `THIS_MONTH([day])` / `LAST_MONTH([day])` / `NEXT_MONTH([day])`\u3002`day` \u306F `1`\u301C`31` / `LAST`\u3001\u7701\u7565\u6642\u306F\u6708\u5168\u4F53 |\n| \u5E74 | `THIS_YEAR()` / `LAST_YEAR()` / `NEXT_YEAR()` |\n\n```sql\nSELECT * FROM APP100 WHERE \u4F5C\u6210\u65E5\u6642 < FROM_TODAY(5, DAYS)\nSELECT * FROM APP100 WHERE \u66F4\u65B0\u65E5\u6642 = THIS_WEEK(MONDAY)\nSELECT * FROM APP100 WHERE \u65E5\u4ED8 = LAST_MONTH(LAST)\nSELECT * FROM APP100\nWHERE \u65E5\u4ED8 BETWEEN FROM_TODAY(-7, DAYS) AND TODAY()\n```\n\n- \u5BFE\u8C61\u306F\u5358\u4E00\u306E\u7269\u7406\u30A2\u30D7\u30EA\u306B\u7531\u6765\u3059\u308B `DATE` / `DATETIME` / `CREATED_TIME` / `UPDATED_TIME` \u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3067\u3059\u3002\u6BD4\u8F03\u306F6\u7A2E\u306E `=` / `!=` / `<` / `<=` / `>` / `>=` \u3092\u4F7F\u7528\u3067\u304D\u3001`<>` \u306F `!=` \u3078\u6B63\u898F\u5316\u3055\u308C\u307E\u3059\u3002`BETWEEN` \u306F\u4E21\u5883\u754C\u3092 `>=` / `<=` \u3078\u5C55\u958B\u3057\u3001\u4E21\u65B9\u3092 exact pushdown \u3067\u304D\u308B\u5834\u5408\u3060\u3051\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n- kintone \u30AF\u30A8\u30EA\u95A2\u6570\u3092\u542B\u3080\u6761\u4EF6\u306F\u3001\u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u524D\u306B REST query \u3078\u306E\u62BC\u3057\u4E0B\u3052\u8A08\u753B\u304C\u78BA\u5B9A\u3067\u304D\u308B\u5834\u5408\u3060\u3051\u5B9F\u884C\u3067\u304D\u307E\u3059\u3002\u95A2\u6570\u305D\u306E\u3082\u306E\u3092 client \u8A55\u4FA1\u3059\u308B **client fallback \u306F\u306A\u304F**\u3001client \u8A55\u4FA1\u56DE\u6570\u306F\u5E38\u306B 0 \u3067\u3059\u3002`ksql_validate` \u306F\u69CB\u6587\u3068\u5F15\u6570\u5F62\u3092\u691C\u67FB\u3057\u307E\u3059\u304C\u3001\u578B\u3068\u7269\u7406\u8A08\u753B\u306E\u53EF\u5426\u306F metadata \u3092\u4F7F\u3046 `ksql_query` / `ksql_explain` / \u5B9F\u884C\u6642\u306B\u78BA\u5B9A\u3057\u307E\u3059\u3002\n- **\u6027\u80FD**: kintone \u30AF\u30A8\u30EA\u95A2\u6570\u306F**\u62BC\u3057\u4E0B\u3052\u3067\u304D\u306A\u3051\u308C\u3070\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093**\uFF08client fallback \u306A\u3057\uFF09\u3002\n \u3057\u305F\u304C\u3063\u3066**\u5B9F\u884C\u3067\u304D\u305F\u6642\u70B9\u3067\u3001\u5019\u88DC\u306E\u7D5E\u308A\u8FBC\u307F\u306F kintone \u30B5\u30FC\u30D0\u30FC\u5074\u3067\u7D42\u308F\u3063\u3066\u3044\u307E\u3059**\u3002\n `LIKE` \u306E\u3088\u3046\u306B\u9ED9\u3063\u3066 FULL_SCAN\uFF08\u5168\u4EF6\u53D6\u5F97\uFF09\u306B\u306A\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n \u540C\u3058\u30A2\u30D7\u30EA\u30FB\u540C\u3058 `maxRecords` \u3067\u3082\u7D50\u679C\u304C\u5206\u304B\u308C\u307E\u3059\u3002\n\n ```\n APP4148\uFF08215 \u4EF6\uFF09\u30FBmaxRecords=5\n\n SELECT COUNT(*) FROM APP4148 WHERE \u4F5C\u6210\u8005 in (LOGINUSER())\n \u2192 \u6210\u529F\u3002kintone \u5074\u3067\u7D5E\u308A\u8FBC\u3080\u305F\u3081\u3001215 \u4EF6\u306E\u30A2\u30D7\u30EA\u3067\u3082\u4E0A\u9650\u306B\u639B\u304B\u3089\u306A\u3044\n\n SELECT COUNT(*) FROM APP4148 WHERE \u4F1A\u793E\u540D LIKE '%\u682A\u5F0F\u4F1A\u793E%'\n \u2192 \u4E0A\u9650\u30A8\u30E9\u30FC\u3002FULL_SCAN \u3067\u5168\u4EF6\u53D6\u5F97\u3057\u3088\u3046\u3068\u3059\u308B\n\n SELECT COUNT(*) FROM APP4148 WHERE \u4F1A\u793E\u540D LIKE '%\u682A\u5F0F\u4F1A\u793E%' OR \u4F5C\u6210\u8005 in (LOGINUSER())\n \u2192 \u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u524D\u306B\u62D2\u5426\uFF08WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN\uFF09\n ```\n\n \u305F\u3060\u3057**\u5F622\uFF08prefilter \uFF0B\u6B8B\u4F59\uFF09\u3067\u306F\u3001\u53D6\u5F97\u4EF6\u6570\u304C\u6E1B\u308B\u306E\u306F\u95A2\u6570\u6761\u4EF6\u306E\u5206\u3060\u3051**\u3067\u3059\u3002\n \u6B8B\u4F59\u306F client \u8A55\u4FA1\u306A\u306E\u3067\u3001\u95A2\u6570\u6761\u4EF6\u3092\u6E80\u305F\u3059\u96C6\u5408\u306F\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\u3002\n `EXPLAIN` \u306E `where capability`\uFF08`EXACT_PUSHDOWN` \u304B\uFF09\u3001\n `kintone query`\uFF08\u5B9F\u969B\u306B\u9001\u308B query \u6587\u5B57\u5217\uFF09\u3001\n `kintone function client evaluations`\uFF08\u5E38\u306B 0\uFF09\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002\n- **kintone \u30AF\u30A8\u30EA\u95A2\u6570\u3092\u4F7F\u3048\u308B SELECT \u306E\u5F62\u306F\u6B21\u306E4\u3064\u3067\u3059**\u30023\u30FB4\u304C INNER JOIN \u306E\n **\u7B2C5\u8A31\u53EF\u5F62**\u3067\u3059\u3002\u3044\u305A\u308C\u3082\u95A2\u6570 occurrence \u3092 kintone server \u3078 exact \u306B\u9069\u7528\u3057\u3001\n client \u5074\u3067\u95A2\u6570\u3092\u8A55\u4FA1\u3057\u307E\u305B\u3093\u3002\n\n 1. **\u305D\u306E SELECT \u306E `WHERE` \u5168\u4F53\u3092 exact pushdown \u3067\u304D\u308B\u5F62**\uFF08v3.24.0 \u3067 `GROUP BY` \u7B49\u3001B75 \u3067 CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u306B\u62E1\u5927\uFF09\u3002\u8907\u6570\u6761\u4EF6\u30FB`OR`\u30FB`BETWEEN` \u3092\u542B\u3093\u3067\u3044\u3066\u3082\u3001`WHERE` \u5168\u4F53\u304C kintone \u30AF\u30A8\u30EA\u3078\u5B8C\u5168\u306B\u5909\u63DB\u3067\u304D\u308B\u306A\u3089\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u306B\u52A0\u3048\u3001**\u5B9F\u4F53\u5316 CTE \u306E\u672C\u4F53\u3001`WITH` \u306E\u6700\u7D42 SELECT\u3001`CREATE TEMP TABLE ... AS SELECT` / `CREATE TEMP TABLE ... AS WITH ...` \u306E source\u3001\u5358\u4E00 CTE \u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u5C55\u958B**\u3067\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002`GROUP BY` / `SELECT DISTINCT` / \u96C6\u8A08\u95A2\u6570 / \u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570 / \u901A\u5E38\u306E `ORDER BY` \u3092\u542B\u3093\u3067\u3044\u3066\u3082\u69CB\u3044\u307E\u305B\u3093\u3002\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E `KORDER BY` \u3082\u3053\u306E whole-WHERE exact \u306E\u5F62\u3060\u3051\u306F native / Cursor \u3068\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF08`WHERE` \u5168\u4F53\u3092\u30B5\u30FC\u30D0\u30FC\u3078\u6E21\u3057\u3001\u53D6\u5F97\u5F8C\u306E client \u5074 WHERE \u8A55\u4FA1\u306F\u884C\u3044\u307E\u305B\u3093\uFF09\u3002\n\n ```sql\n SELECT * FROM APP100 WHERE \u65E5\u4ED8 = THIS_MONTH()\n SELECT * FROM APP100 WHERE \u65E5\u4ED8 = THIS_MONTH() OR \u65E5\u4ED8 = LAST_MONTH() -- OR \u3082\u53EF\uFF08\u4E21\u8FBA\u3068\u3082\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u305F\u3081\uFF09\n SELECT \u533A\u5206, COUNT(*) AS \u4EF6\u6570 FROM APP100\n WHERE \u65E5\u4ED8 = THIS_MONTH() GROUP BY \u533A\u5206 -- \u96C6\u8A08\u30AF\u30A8\u30EA\u3067\u3082\u53EF\uFF08v3.24.0\uFF09\n SELECT * FROM APP100 WHERE \u65E5\u4ED8 = THIS_MONTH() ORDER BY \u65E5\u4ED8 -- \u901A\u5E38\u306E ORDER BY \u3082\u53EF\uFF08v3.24.0\uFF09\n SELECT \u65E5\u4ED8 FROM APP100 WHERE \u65E5\u4ED8 = TODAY()\n KORDER BY \u65E5\u4ED8 LIMIT 5 -- KORDER \u3082 whole-WHERE exact \u306A\u3089\u53EF\n WITH \u6708\u5225 AS (\n SELECT \u533A\u5206, COUNT(*) AS \u4EF6\u6570 FROM APP100\n WHERE \u65E5\u4ED8 = THIS_MONTH() GROUP BY \u533A\u5206\n )\n SELECT * FROM \u6708\u5225 -- \u5B9F\u4F53\u5316 CTE \u672C\u4F53\u3067\u3082\u53EF\n CREATE TEMP TABLE #\u4ECA\u6708 AS\n SELECT * FROM APP100 WHERE \u65E5\u4ED8 = THIS_MONTH() -- \u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u3067\u3082\u53EF\n ```\n\n 2. **prefilter \uFF0B\u6B8B\u4F59\uFF08v3.21.0\uFF09**: \u5358\u4E00\u306E\u7269\u7406\u30A2\u30D7\u30EA\u3092\u8AAD\u3080 SELECT \u3067\u3001kintone \u30AF\u30A8\u30EA\u95A2\u6570\u306E exact leaf \u304C\u300C\u95A2\u6570\u3092\u542B\u307E\u306A\u3044\u6B8B\u4F59\u300D\uFF08\u4F8B `LENGTH(\u90FD\u9053\u5E9C\u770C) > 1`\u30FB`LIKE`\uFF09\u3068 `AND` \u3067\u7D50\u3070\u308C\u3066\u3044\u308B\u5834\u5408\u3002\u95A2\u6570 leaf \u3060\u3051\u3092 kintone REST query \u306E prefilter \u3068\u3057\u3066\u62BC\u3057\u4E0B\u3052\u3001\u53D6\u5F97\u5F8C\u306F\u6B8B\u4F59\u3060\u3051\u3092 client \u8A55\u4FA1\u3057\u307E\u3059\u3002\u95A2\u6570\u306E\u5024\u30FB\u6BD4\u8F03\u306F\u4F9D\u7136\u3059\u3079\u3066 kintone \u30B5\u30FC\u30D0\u30FC\u304C\u6C7A\u5B9A\u3057\u307E\u3059\u3002`BETWEEN` \u5C55\u958B\u306E\u5404\u5883\u754C\u3084\u8907\u6570\u306E\u95A2\u6570 leaf\u3001`KLIKE`\u30FB\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u5B89\u5168\u30EA\u30FC\u30D5\u3068\u306E\u4F75\u7528\u3082\u540C\u3058\u898F\u5247\u3067 prefilter \u306B\u8F09\u308A\u307E\u3059\u3002\u3053\u306E\u5F62\u306F `GROUP BY` \u306A\u3069\u3067 FULL_SCAN \u306B\u306A\u3063\u3066\u3044\u3066\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n ```sql\n SELECT \u65E5\u4ED8, \u4EF6\u540D FROM APP100\n WHERE \u65E5\u4ED8 = TODAY() AND LENGTH(\u4EF6\u540D) > 1 -- \u65E5\u4ED8\u3060\u3051 server prefilter\u3001LENGTH \u3060\u3051 client\n ```\n\n 3. **\u7B2C5-W\uFF08INNER JOIN\u30FBsingle-alias whole-WHERE exact\uFF09**: \u5168 source \u304C alias \u4ED8\u304D\u306E\n \u7269\u7406 APP \u3067\u3001`WHERE` \u5168\u4F53\u304C\u5358\u4E00 alias \u306B\u5C5E\u3057\u3001kintone query \u3078 exact \u306B\u5909\u63DB\u3067\u304D\u308B\u5834\u5408\u3002\n \u540C\u3058 alias \u5185\u306E `OR` / `NOT` \u3068\u3001whole-WHERE exact \u306A `KLIKE` \u5171\u5B58\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n `WHERE` \u5168\u4F53\u3092\u5BFE\u8C61 APP \u306B\u4E00\u5EA6\u3060\u3051\u9001\u308A\u3001client residual \u306F\u3042\u308A\u307E\u305B\u3093\u3002\n\n ```sql\n SELECT a.$id, a.\u65E5\u4ED8\n FROM APP100 a INNER JOIN APP200 b ON a.$id = b.$id\n WHERE a.\u65E5\u4ED8 = THIS_MONTH() OR a.\u65E5\u4ED8 = LAST_MONTH()\n ```\n\n 4. **\u7B2C5-L\uFF08INNER JOIN\u30FBAND-spine exact leaf\uFF09**: `WHERE` \u306E AND \u30B9\u30D1\u30A4\u30F3\u306B\u3042\u308B\n exact \u306A\u95A2\u6570 leaf \u3092 alias \u3054\u3068\u306B\u63A1\u7528\u3057\u3001\u305D\u308C\u305E\u308C\u306E APP \u3078\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002\n \u8907\u6570 alias \u306B\u95A2\u6570\u304C\u5206\u6563\u3057\u3066\u3044\u3066\u3082\u4F7F\u7528\u3067\u304D\u3001\u95A2\u6570\u3092\u542B\u307E\u306A\u3044\u6B8B\u4F59\u3060\u3051\u3092 client \u8A55\u4FA1\u3057\u307E\u3059\u3002\n `LOGINUSER()` \u306F `\u4F5C\u6210\u8005` / `\u66F4\u65B0\u8005` / \u30E6\u30FC\u30B6\u30FC\u9078\u629E\u3001`PRIMARY_ORGANIZATION()` \u306F\n \u7D44\u7E54\u9078\u629E\u306E singleton `in` / `not in` \u306B\u9650\u308A\u307E\u3059\u3002\n\n ```sql\n SELECT a.$id, a.\u65E5\u4ED8, b.\u4F5C\u6210\u8005\n FROM APP100 a INNER JOIN APP200 b ON a.$id = b.$id\n WHERE a.\u65E5\u4ED8 = THIS_MONTH()\n AND b.\u4F5C\u6210\u8005 in (LOGINUSER())\n AND LENGTH(a.\u4EF6\u540D) > 1\n ```\n\n- \u6B21\u306E\u8A08\u753B\u306F\u3001\u95A2\u6570\u3092\u5B89\u5168\u306B exact \u62BC\u3057\u4E0B\u3052\u3057\u3064\u3064\u6B8B\u4F59\u3060\u3051\u3092 client \u8A55\u4FA1\u3059\u308B\u4FDD\u8A3C\u304C\u306A\u3044\u305F\u3081\u3001\u30EC\u30B3\u30FC\u30C9\u30FBCursor\u30FBmutation API \u306E\u524D\u306B fail-closed \u3057\u307E\u3059\uFF08legacy 4 \u95A2\u6570\u306F reason `WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN`\u3001\u76F8\u5BFE\u65E5\u4ED812\u95A2\u6570\u306F `WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN`\uFF09\u3002\n\n - \u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u304C `OR` \u306E\u679D\u307E\u305F\u306F `NOT` \u306E\u914D\u4E0B\u306B\u3042\u308A\u3001**`WHERE` \u5168\u4F53\u3068\u3057\u3066\u306F exact pushdown \u3067\u304D\u306A\u3044**\u5834\u5408\uFF08`OR` \u306E\u4ED6\u65B9\u306B `LENGTH()` \u306A\u3069\u306E\u62BC\u3057\u4E0B\u3052\u4E0D\u80FD\u306A\u8FF0\u8A9E\u304C\u3042\u308B\u3068\u304D\u7B49\uFF09\u3002`OR` \u3092\u542B\u3080\u3053\u3068\u81EA\u4F53\u306F\u62D2\u5426\u7406\u7531\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002**\u56DE\u907F\u7B56**: \u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u8FF0\u8A9E\u3078\u7F6E\u63DB\u3059\u308B\uFF08\u4F8B `\u90FD\u9053\u5E9C\u770C != ''`\uFF09\u304B\u3001\u4E0A\u8A182\u306E\u5F62\uFF08\u76F8\u5BFE\u65E5\u4ED8 leaf \u3068\u6B8B\u4F59\u3092 `AND` \u3067\u7D50\u3076\uFF09\u306B\u3057\u307E\u3059\u3002\n - `LEFT` / `RIGHT JOIN`\u3001cross-alias `OR`\u3001cross-table \u8FF0\u8A9E\u306B\u95A2\u6570\u3092\u542B\u3080\u5F62\u3001\n whole-WHERE exact \u3067\u306A\u3044 `KLIKE` \u3092\u542B\u3080 `OR`\u3002\u4E00\u90E8\u306E KLIKE \u6DF7\u5728\u5F62\u306F\u3001\u95A2\u6570\u5074\u304C\n exact \u3067\u306A\u3044\u3053\u3068\u3092\u793A\u3059 `WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN`\n \uFF08legacy 4\u95A2\u6570\u3067\u306F `WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN`\uFF09\u3067\u62D2\u5426\u3057\u307E\u3059\u3002\n - \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FB\u5165\u308C\u5B50 SELECT\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u7B49\uFF09\u30FB\u6D3E\u751F\u8868\u30FBCTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\n JOIN \u5165\u529B\u306B\u3059\u308B\u5F62\u3001`VALIDATE`\u3002`GROUP_SELECT in (LOGINUSER())` \u306F kintone \u516C\u5F0F\u306B\n \u5BFE\u5FDC\u3059\u308B\u30AF\u30A8\u30EA\u95A2\u6570\u304C\u306A\u3044\u305F\u3081 `WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED` \u3067\u3059\u3002\n **\u5B9F\u4F53\u5316 CTE \u672C\u4F53\u30FB`WITH` \u306E\u6700\u7D42\u30AF\u30A8\u30EA\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u304C `UNION` \u306E\u5834\u5408**\n \u3082\u62D2\u5426\u3057\u307E\u3059\uFF08\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E `UNION` \u306F\u679D\u3054\u3068\u306B\u5224\u5B9A\u3059\u308B\u305F\u3081\u3001\u5404\u679D\u304C\u6761\u4EF6\u3092\u6E80\u305F\u305B\u3070\n \u4F7F\u7528\u3067\u304D\u307E\u3059\uFF09\u3002**`KORDER BY` \u3068 DML\uFF08`UPDATE` / `DELETE` \u306E\u5BFE\u8C61\u9078\u629E\u3001\n `INSERT` / `UPSERT ... SELECT` \u306E source\uFF09\u306F\u4E0A\u8A181\u306E whole-WHERE exact \u306E\u307F\u53EF**\u3067\u3001\n \u4E0A\u8A182\u306E prefilter\uFF0B\u6B8B\u4F59\u3084 FULL_SCAN_EXACT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u305F\u3060\u3057\n **`PRIMARY_ORGANIZATION()` \u3092\u542B\u3080 DML \u306F whole-WHERE exact \u3067\u3082\u5E38\u306B\u62D2\u5426\u3057\u307E\u3059**\u3002\n- \u62D2\u5426\u5F62\u306E `EXPLAIN` \u306F throw \u305B\u305A\u3001`plan status: rejected`\u3001\u5BFE\u8C61 alias / field\u3001\n reason\u3001`client evaluation: forbidden`\u3001\u5B9F\u884C API \u306A\u3057\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n- **CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306B\u6B8B\u308B\u975E\u5BFE\u79F0**: \u62BC\u3057\u4E0B\u3052\u4E0D\u80FD\u306A\u8FF0\u8A9E\u304C `AND` \u3067\u6DF7\u3056\u308B\u5F62\uFF08\u4F8B `WHERE \u65E5\u4ED8 = THIS_MONTH() AND LENGTH(\u4EF6\u540D) > 1`\uFF09\u306F\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u5358\u4E00\u7269\u7406\u30A2\u30D7\u30EA SELECT \u3067\u306F\u4E0A\u8A182\u306E prefilter\uFF0B\u6B8B\u4F59\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u3059\u304C\u3001**CTE \u672C\u4F53\u30FB`WITH` \u306E\u6700\u7D42 SELECT\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093**\u3002\u3053\u308C\u3089\u306E\u5B9F\u4F53\u5316\u7D4C\u8DEF\u3067\u306F\u3001\u305D\u306E SELECT \u306E `WHERE` \u5168\u4F53\u304C exact \u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u8A72\u5F53\u3059\u308B\u5834\u5408\u306F CTE \u3084\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u5207\u308A\u51FA\u3055\u305A\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u3068\u3057\u3066\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\n- \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5B9F\u4F53\u5316\u884C\u6570\u306B\u306F\u901A\u5E38\u306E `maxRecords` \u3068\u306F\u5225\u306B\u5C02\u7528\u306E `tempTableMaxRows`\uFF08\u65E2\u5B9A 10,000\uFF09\u304C\u9069\u7528\u3055\u308C\u307E\u3059\u3002\u8D85\u904E\u6642\u306F `onLimit` \u306E\u8A2D\u5B9A\u306B\u304B\u304B\u308F\u3089\u305A\u5E38\u306B\u30A8\u30E9\u30FC\u3067\u3001\u65E5\u4ED8\u30EA\u30C6\u30E9\u30EB\u3068\u76F8\u5BFE\u65E5\u4ED8\u3067\u6271\u3044\u306F\u540C\u4E00\u3067\u3059\u3002\n- legacy 4 \u95A2\u6570\u306E\u8A3A\u65AD reason code \u306F `WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED`\u3001`WHERE_KINTONE_FUNCTION_OPERATOR_UNSUPPORTED`\u3001`WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED`\u3001`WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN` \u3067\u3059\u3002\u76F8\u5BFE\u65E5\u4ED812\u95A2\u6570\u306F `WHERE_RELATIVE_DATE_ARGUMENT_INVALID`\u3001`WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED`\u3001`WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED`\u3001`WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED`\u3001`WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN` \u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\n- \u95A2\u6570\u540D\u3001`DAYS` / `WEEKS` / `MONTHS` / `YEARS`\u3001\u66DC\u65E5\u3001`LAST` \u306F hard keyword \u3067\u306F\u306A\u304F\u3001\u8A72\u5F53\u3059\u308B WHERE \u5024\u30FB\u5F15\u6570\u4F4D\u7F6E\u3060\u3051\u3067\u89E3\u91C8\u3059\u308B soft keyword \u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u901A\u5E38\u3069\u304A\u308A\u4F7F\u3048\u307E\u3059\u3002\u95A2\u6570\u547C\u3073\u51FA\u3057\u3068\u306E\u66D6\u6627\u3055\u3092\u907F\u3051\u308B\u5834\u5408\u306F `` `FROM_TODAY` ``\u3001`` `LAST` `` \u306E\u3088\u3046\u306B\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u9000\u907F\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u5F15\u7528\u3057\u305F\u5358\u4F4D\u30FB\u66DC\u65E5\u30FB`LAST` \u306F\u95A2\u6570\u5F15\u6570\u3068\u3057\u3066\u306F\u53D7\u7406\u3057\u307E\u305B\u3093\u3002\n\n### \u95A2\u6570\u306E\u30CD\u30B9\u30C8\n\n\u95A2\u6570\u306E\u5F15\u6570\u306B\u5225\u306E\u95A2\u6570\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT UPPER(TRIM(\u6C0F\u540D)) AS \u6C0F\u540D FROM APP100\nSELECT ROUND(\u91D1\u984D * 1.1, 0) AS \u7A0E\u8FBC\u91D1\u984D FROM APP100\n```\n\n---", uri: "ksql://language-reference/05-string-number-functions" }, "06-where": { heading: "6. WHERE \u53E5", text: "## 6. WHERE \u53E5\n\n> **\u30E6\u30FC\u30B6\u30FC\u7CFB\u30FB\u8907\u6570\u9078\u629E\u7CFB\u306B\u306F `in` / `not in` \u3092\u4F7F\u3044\u307E\u3059\u3002** \u578B\u306B\u5408\u308F\u306A\u3044\u6F14\u7B97\u5B50\n> \uFF08`WHERE \u4F5C\u6210\u8005 = 'taro'` \u306A\u3069\uFF09\u306F `WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE` \u3067\n> \u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u524D\u306B\u62D2\u5426\u3057\u307E\u3059\uFF080 \u4EF6\u3092\u9759\u304B\u306B\u8FD4\u3059\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n>\n> **`TODAY()` / `NOW()` / `LOGINUSER()` \u306F kintone REST query \u3078\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u5F62\u3060\u3051**\n> \u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u62BC\u3057\u4E0B\u3052\u4E0D\u80FD\u306A\u4F4D\u7F6E\u306B\u66F8\u304F\u3068\n> `WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN` \u3067\u62D2\u5426\u3057\u307E\u3059\uFF08`WHERE \u65E5\u4ED8 = NOW()`\n> \u306E\u3088\u3046\u306A\u578B\u4E0D\u4E00\u81F4\u3001`WHERE $id >= TODAY()` \u3082\u540C\u69D8\uFF09\u3002\u4F7F\u7528\u3067\u304D\u308B 4 \u3064\u306E\u5F62\u306F\n> [\xA75 kintone \u30AF\u30A8\u30EA\u95A2\u6570](#kintone-\u30AF\u30A8\u30EA\u95A2\u6570server-only)\u306B\u3042\u308A\u307E\u3059\u3002\n>\n> \u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u95A2\u6570 leaf \u3068\u6B8B\u4F59\u3092 `AND` \u3067\u7D50\u3076\u5F62\uFF08`WHERE \u65E5\u4ED8 = TODAY() AND LENGTH(\u4EF6\u540D) > 1`\uFF09\n> \u3067\u306F\u3001**\u95A2\u6570\u6761\u4EF6\u3060\u3051\u3092 server prefilter \u3078\u62BC\u3057\u4E0B\u3052\u3001\u6B8B\u4F59\u3060\u3051\u3092 client \u3067\u8A55\u4FA1**\u3057\u307E\u3059\u3002\n> `KORDER BY` \u3068 DML \u306F whole-WHERE exact \u306E\u5F62\u3060\u3051\u3067\u3001\u3053\u306E prefilter\uFF0B\u6B8B\u4F59\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002\n\n### \u6BD4\u8F03\u6F14\u7B97\u5B50\n\n| \u6F14\u7B97\u5B50 | \u610F\u5473 |\n|--------|------|\n| `=` | \u7B49\u3057\u3044 |\n| `!=` \u307E\u305F\u306F `<>` | \u7B49\u3057\u304F\u306A\u3044 |\n| `>` | \u3088\u308A\u5927\u304D\u3044 |\n| `<` | \u3088\u308A\u5C0F\u3055\u3044 |\n| `>=` | \u4EE5\u4E0A |\n| `<=` | \u4EE5\u4E0B |\n| `KLIKE` | kintone \u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u542B\u3080 |\n| `NOT KLIKE` | kintone \u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u542B\u307E\u306A\u3044 |\n\n```sql\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86'\nWHERE \u91D1\u984D >= 100000\nWHERE \u62C5\u5F53\u8005 != '\u5C71\u7530'\n```\n\n> \u53F3\u8FBA\u306E\u5024\u306B\u306F\u30D0\u30C3\u30C1\u5909\u6570 `@\u540D\u524D` \u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u2192 [\xA725 \u30D0\u30C3\u30C1\u5909\u6570](#25-\u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB)\uFF09\u3002\n\n> **\u65E5\u6642\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u5883\u754C:** `DATETIME` / \u4F5C\u6210\u65E5\u6642 / \u66F4\u65B0\u65E5\u6642\u3067\u306F\u3001\u65E5\u4ED8\u3060\u3051\u306E `'2026-07-14'` \u306F\n> **\u305D\u306E\u65E5\u306E 0:00 \u306E\u4E00\u70B9**\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002`<=` \u306B\u6307\u5B9A\u3057\u3066\u3082\u540C\u65E5\u306E 0:00 \u3088\u308A\u5F8C\u306E\u30EC\u30B3\u30FC\u30C9\u306F\n> \u542B\u307E\u308C\u305A\u3001`>= '2026-07-14' AND <= '2026-07-14'` \u306F 0 \u4EF6\u306B\u306A\u308A\u307E\u3059\u3002\n>\n> **\u4E0A\u7AEF\u3092\u300C\u7FCC\u65E5\u300D\u306B\u3057\u3066 `<` \u3067\u9589\u3058\u308B\u534A\u958B\u533A\u9593\u3067\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002**\n>\n> ```sql\n> WHERE \u4F5C\u6210\u65E5\u6642 >= '2026-07-14' AND \u4F5C\u6210\u65E5\u6642 < '2026-07-15' -- 7/14 \u306E\u5168\u4F53\n> ```\n>\n> \u3053\u306E\u5F62\u306F kintone \u304C\u4E21\u7AEF\u3092\u540C\u3058\u898F\u5247\u3067\u89E3\u6C7A\u3059\u308B\u305F\u3081\u3001**kintone \u5074\u306E\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u8A2D\u5B9A\u3092\n> \u610F\u8B58\u305B\u305A\u306B\u6B63\u3057\u3044 1 \u65E5**\u306B\u306A\u308A\u307E\u3059\u3002`2026-07-14T23:59:59Z` \u306E\u3088\u3046\u306A RFC3339 \u6587\u5B57\u5217\u3082\n> \u6307\u5B9A\u3067\u304D\u307E\u3059\u304C\u3001\u672B\u5C3E\u306E\u30AA\u30D5\u30BB\u30C3\u30C8\uFF08`Z` \u306A\u3069\uFF09\u3068 kintone \u5074\u306E\u89E3\u6C7A\u304C\u98DF\u3044\u9055\u3046\u3068\u5883\u754C\u304C\n> \u305A\u308C\u308B\u305F\u3081\u3001\u65E5\u4ED8\u5358\u4F4D\u3067\u533A\u5207\u308B\u5834\u5408\u306F\u534A\u958B\u533A\u9593\u3092\u63A8\u5968\u3057\u307E\u3059\u3002\n\n### \u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\n\n`YESTERDAY()`\u3001`FROM_TODAY(...)`\u3001\u9031\u30FB\u6708\u30FB\u5E74\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u306F\u30014\u3064\u306E\u65E5\u4ED8\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u306B\u5BFE\u3059\u308B\u6BD4\u8F03\u53F3\u8FBA\u3068 `BETWEEN` \u5883\u754C\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u3053\u308C\u3089\u306F server-only \u3067\u3001\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u305D\u306E\u3082\u306E\u3092 client \u8A55\u4FA1\u3078\u5207\u308A\u66FF\u3048\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u5358\u4E00 APP \u3067\u306F\u3001**\u305D\u306E SELECT \u306E `WHERE` \u5168\u4F53\u3092 exact pushdown \u3067\u304D\u308B\u5F62**\uFF08`OR` \u3092\u542B\u3093\u3067\u3044\u3066\u3082\u5168\u4F53\u304C\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u3089\u53EF\u3002`GROUP BY` / `SELECT DISTINCT` / \u96C6\u8A08 / \u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570 / \u901A\u5E38\u306E `ORDER BY`\u3001\u5B9F\u4F53\u5316 CTE \u672C\u4F53\u3001`WITH` \u306E\u6700\u7D42 SELECT\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source\u3001\u5358\u4E00 CTE \u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u5C55\u958B\u3067\u3082\u53EF\uFF09\u3068\u3001**\u76F8\u5BFE\u65E5\u4ED8 leaf \u304C\u300C\u76F8\u5BFE\u65E5\u4ED8\u3092\u542B\u307E\u306A\u3044\u6B8B\u4F59\u300D\u3068 AND \u3067\u7D50\u3070\u308C\u305F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u5358\u4E00\u7269\u7406\u30A2\u30D7\u30EA SELECT**\uFF08\u76F8\u5BFE\u65E5\u4ED8 leaf \u3060\u3051\u3092 prefilter \u306B\u8F09\u305B\u6B8B\u4F59\u3092 client \u8A55\u4FA1\u30FBv3.21.0\uFF09\u3067\u4F7F\u3048\u307E\u3059\u3002INNER JOIN \u3067\u306F\u3001\u5168 source \u304C alias \u4ED8\u304D\u7269\u7406 APP \u306E\u3068\u304D\u3001**\u5358\u4E00 alias \u306E whole-WHERE exact\uFF08\u7B2C5-W\uFF09**\u307E\u305F\u306F**AND \u30B9\u30D1\u30A4\u30F3\u4E0A\u306E exact \u95A2\u6570 leaf \u3092 alias \u3054\u3068\u306B\u63A1\u7528\u3059\u308B\u5F62\uFF08\u7B2C5-L\uFF09**\u3067\u4F7F\u3048\u307E\u3059\u3002\u8907\u6570 alias \u3078\u5206\u6563\u3057\u305F\u95A2\u6570 leaf \u3082\u5404 APP \u3078\u62BC\u3057\u4E0B\u3052\u3001\u95A2\u6570\u3092\u542B\u307E\u306A\u3044\u6B8B\u4F59\u3060\u3051\u3092 client \u8A55\u4FA1\u3057\u307E\u3059\u3002`LEFT` / `RIGHT JOIN`\u3001cross-alias `OR`\u3001\u95A2\u6570\u3092\u542B\u3080 cross-table \u8FF0\u8A9E\u3001whole-WHERE exact \u3067\u306A\u3044 KLIKE-containing `OR`\u3001JOIN \u5165\u529B\u304C\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FB\u5165\u308C\u5B50 SELECT\u30FB\u6D3E\u751F\u8868\u30FBCTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5F62\u306F fail-closed \u3067\u3059\u3002\u5358\u4E00 APP \u306E prefilter\uFF0B\u6B8B\u4F59\u306F CTE \u672C\u4F53\u30FB`WITH` \u306E\u6700\u7D42 SELECT\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002`VALIDATE`\u3001\u304A\u3088\u3073**\u5B9F\u4F53\u5316 CTE \u672C\u4F53 / `WITH` \u6700\u7D42\u30AF\u30A8\u30EA / \u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u304C `UNION` \u306E\u5834\u5408**\u3082 fail-closed \u3067\u3059\uFF08\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E `UNION` \u306F\u679D\u3054\u3068\u306B\u5224\u5B9A\u3057\u307E\u3059\uFF09\u3002**`KORDER BY` \u3068 DML\uFF08`UPDATE` / `DELETE` \u306E\u5BFE\u8C61\u9078\u629E\u3001`INSERT` / `UPSERT ... SELECT` \u306E source\uFF09\u306F whole-WHERE exact \u306E\u5F62\u3060\u3051\u304C\u4F7F\u3048\u3001prefilter\uFF0Bclient \u6B8B\u4F59\u3084 FULL_SCAN_EXACT \u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002** \u95A2\u6570\u4E00\u89A7\u3001\u5F15\u6570\u3001\u578B\u30FB\u6F14\u7B97\u5B50\u3001reason code\u3001\u6B8B\u308B\u975E\u5BFE\u79F0\u3001soft keyword \u3068\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u9000\u907F\u306F [\xA75\u300Ckintone \u30AF\u30A8\u30EA\u95A2\u6570\u300D](#kintone-\u30AF\u30A8\u30EA\u95A2\u6570server-only) \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### \u578B\u4ED8\u304D\u6BD4\u8F03\uFF08v3.0.0\uFF09\n\n\u6BD4\u8F03\u65B9\u6CD5\u306F\u5024\u306E\u898B\u305F\u76EE\u3067\u306F\u306A\u304F\u3001\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u307E\u305F\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u4F1D\u64AD\u3057\u305F\u5217\u578B\u3067\u6C7A\u307E\u308A\u307E\u3059\u3002\n\n- \u6587\u5B57\u5217\u578B\u3068\u578B\u4E0D\u660E\u5217\u306F Unicode \u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3067\u6BD4\u8F03\u3057\u307E\u3059\u3002`'20' > '100'` \u306F\u771F\u3067\u3059\n- NUMBER \u3068\u6570\u5024\u5F62\u5F0F CALC \u306F\u6700\u592730\u6841\u306E\u6709\u965010\u9032\u3092\u6587\u5B57\u5217\u306E\u307E\u307E\u53B3\u5BC6\u6BD4\u8F03\u3057\u307E\u3059\u3002\u7A7A\u30BB\u30EB\u3001\u7121\u9650\u5927\u3001\u691C\u8A3C\u5931\u6557\u5024\u3092\u542B\u3080\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5217\u306B\u3082\u6C7A\u5B9A\u7684\u306A\u56FA\u5B9A\u9806\u304C\u3042\u308A\u307E\u3059\u3002\u7A7A\u767D\u306E\u307F\u306F\u6570\u50240\u3067\u306F\u306A\u304F\u300C\u305D\u306E\u4ED6\u975E\u6570\u5024\u300D\u3067\u3059\n- DATE / TIME / DATETIME \u306Fkintone\u306E\u6B63\u898F\u5316\u6E08\u307F\u8868\u73FE\u3092\u6587\u5B57\u5217\u3068\u3057\u3066\u6BD4\u8F03\u3057\u307E\u3059\n- DROP_DOWN / RADIO_BUTTON / STATUS\u7B49\u306F\u3001\u53D6\u5F97\u3067\u304D\u305F\u5B9A\u7FA9\u9806\u3092\u4F7F\u7528\u3057\u307E\u3059\n- \u6587\u5B57\u5217\uFF081\u884C\uFF09\u7B49\u3067kintone REST\u304C\u53D7\u7406\u3057\u306A\u3044`<` / `>`\u306F\u3001SELECT\u3067\u306F\u81EA\u52D5\u7684\u306B\u30ED\u30FC\u30AB\u30EB\u8A55\u4FA1\u3078\u5207\u308A\u66FF\u3048\u307E\u3059\u3002DML\u306F\u5BFE\u8C61\u96C6\u5408\u3092\u6697\u9ED9\u306B\u5E83\u3052\u305A\u3001\u5B9F\u884C\u524D\u306B\u30A8\u30E9\u30FC\u306B\u3057\u307E\u3059\n\nv2\u307E\u3067\u306F\u6570\u5B57\u3060\u3051\u306E\u6587\u5B57\u5217\u3092\u5024\u30D9\u30FC\u30B9\u3067\u6570\u5024\u6BD4\u8F03\u3059\u308B\u7D4C\u8DEF\u304C\u3042\u308A\u307E\u3057\u305F\u3002v3\u3067\u306F\u3053\u306E\u30DA\u30A2\u5358\u4F4D\u306E\u81EA\u52D5\u5207\u66FF\u3092\u5EC3\u6B62\u3057\u305F\u305F\u3081\u3001WHERE\u306E\u7D50\u679C\u884C\u3001\u96C6\u8A08\u5024\u3001DML\u5019\u88DC\u304C\u5909\u308F\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u8A73\u7D30\u306F[v3.0.0 \u79FB\u884C\u30AC\u30A4\u30C9](ksql_v3_migration_guide.md)\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### WHERE \u306E REST \u62BC\u3057\u4E0B\u3052\n\n\u524D\u63D0\u3068\u3057\u3066\u3001**kintone \u306F SQL \u3092\u5B9F\u884C\u3057\u307E\u305B\u3093**\u3002kSQL \u30A8\u30F3\u30B8\u30F3\u306F records API \u3067\u30EC\u30B3\u30FC\u30C9\u3092\n\u53D6\u5F97\u3057\u3001`WHERE`\u30FB`JOIN`\u30FB\u96C6\u8A08\u30FB\u95A2\u6570\u306A\u3069\u306E SQL \u8A55\u4FA1\u306F\u3059\u3079\u3066\u30A8\u30F3\u30B8\u30F3\u5185\uFF08JavaScript\uFF09\u3067\n\u884C\u3044\u307E\u3059\u3002\u4F55\u3082\u3057\u306A\u3051\u308C\u3070\u3001\u6761\u4EF6\u304C\u3069\u308C\u3060\u3051\u7D5E\u308A\u8FBC\u3093\u3067\u3044\u3066\u3082**\u30A2\u30D7\u30EA\u306E\u5168\u30EC\u30B3\u30FC\u30C9\u3092\u8EE2\u9001\u3057\u3066\u304B\u3089**\n\u6368\u3066\u308B\u3053\u3068\u306B\u306A\u308A\u307E\u3059\u3002\n\n\u300C\u62BC\u3057\u4E0B\u3052\uFF08pushdown\uFF09\u300D\u306F\u3001\u3053\u306E\u69CB\u56F3\u3067 **kintone \u306E\u30AF\u30A8\u30EA\u69CB\u6587\u3067\u3082\u8868\u73FE\u3067\u304D\u308B\u6761\u4EF6\u3092\nrecords API \u306E `query` \u30D1\u30E9\u30E1\u30FC\u30BF\u3078\u79FB\u3057\u3001\u8EE2\u9001\u3055\u308C\u308B\u30EC\u30B3\u30FC\u30C9\u81EA\u4F53\u3092\u6E1B\u3089\u3059\u52D5\u4F5C**\u3067\u3059\u3002\n\n```\nSELECT * FROM APP100 WHERE \u88FD\u54C1\u540D = '\u725B\u4E73' AND \u4ED5\u5165\u5148 LIKE '%\u4E73\u696D%'\n\n\u62BC\u3057\u4E0B\u3052\u306A\u3057: GET records.json?app=100 \u2192 \u5168\u4EF6\u8EE2\u9001\u3057\u3001WHERE \u5168\u4F53\u3092 JS \u3067\u8A55\u4FA1\n\u62BC\u3057\u4E0B\u3052\u3042\u308A: GET records.json?app=100&query=\u88FD\u54C1\u540D = \"\u725B\u4E73\" \u2192 \u8EE2\u9001\u3092\u6E1B\u3089\u3057\u3001\u53D6\u5F97\u5F8C\u306B WHERE \u5168\u4F53\u3092\u518D\u8A55\u4FA1\n```\n\n\u3069\u3061\u3089\u3082\u7D50\u679C\u306F\u540C\u3058\u3067\u3059\u3002\u5019\u88DC\u3092\u5E83\u3081\u306B\u53D6\u5F97\u3059\u308B `superset` \u3092\u542B\u3081\u3001\u62BC\u3057\u4E0B\u3052\u5F8C\u3082\n**\u5143\u306E `WHERE` \u5168\u4F53\u3092\u53D6\u5F97\u5F8C\u306B\u518D\u8A55\u4FA1\u3059\u308B**\u305F\u3081\u3067\u3001\u6B63\u3057\u3055\u3092\u62C5\u4FDD\u3059\u308B\u306E\u306F\u5E38\u306B\u3053\u306E\u518D\u8A55\u4FA1\u3067\u3059\u3002\n\u62BC\u3057\u4E0B\u3052\u306E\u6709\u7121\u30FB\u5E83\u3055\u304C\u5909\u3048\u308B\u306E\u306F\u3001\u8EE2\u9001\u4EF6\u6570\u30FBAPI \u547C\u3073\u51FA\u3057\u56DE\u6570\u30FB`maxRecords` \u306E\u5F53\u305F\u308A\u65B9\u3060\u3051\u3067\u3059\n\uFF08\u4F8B\u5916\u306F 1 \u3064\uFF1D\u62BC\u3057\u4E0B\u3052\u305F\u5024\u305D\u306E\u3082\u306E\u3092 kintone \u304C\u62D2\u5426\u3059\u308B\u5834\u5408\u3067\u3001\u5358\u4E00\u8868\u3068\u540C\u3058\nkintone \u30A8\u30E9\u30FC\u304C\u8868\u9762\u5316\u3057\u307E\u3059\u3002\xA7\u5185\u306E\u300C\u5B9A\u7FA9\u306B\u7121\u3044\u9078\u629E\u80A2\u5024\u300D\u7B49\u3092\u53C2\u7167\uFF09\u3002\n\n#### \u6A5F\u69CB\u306E\u5168\u4F53\u50CF\n\n\u62BC\u3057\u4E0B\u3052\u306B\u306F 3 \u3064\u306E\u6A5F\u69CB\u304C\u3042\u308A\u307E\u3059\u3002\n\n1. **\u5358\u4E00\u8868\u306E\u5B8C\u5168\u76F4\u5217\u5316**: `WHERE` \u5168\u4F53\u3092 kintone query \u3078 exact \u306B\u76F4\u5217\u5316\u3067\u304D\u308C\u3070\u3001\n \u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3092\u554F\u308F\u305A\u62BC\u3057\u4E0B\u3052\u307E\u3059\uFF08SIMPLE \u30E2\u30FC\u30C9\u306E\u57FA\u672C\u5F62\uFF09\u3002\n2. **\u5B89\u5168\u8449\u306E\u30D7\u30EC\u30D5\u30A3\u30EB\u30BF**: \u5168\u4F53\u3092\u76F4\u5217\u5316\u3067\u304D\u306A\u3044\u5F62\uFF08`LIKE`\u30FB\u95A2\u6570\u30FBJOIN \u306A\u3069\uFF09\u3067\u3082\u3001\n `WHERE` \u30EB\u30FC\u30C8\u304B\u3089 AND \u3068\u62EC\u5F27\u3060\u3051\u3092\u7D4C\u7531\u3059\u308B\u300C\u5B89\u5168\u306A\u8449\u300D\u3060\u3051\u3092\u5148\u306B\u9001\u308A\u307E\u3059\u3002\n \u5358\u4E00\u8868 FULL_SCAN \u3068\u3001JOIN \u306E\u5404\u7269\u7406 APP\uFF08field vs literal\u30FB\u6B21\u8868\u306E\u898F\u5247\uFF09\u304C\u5BFE\u8C61\u3067\u3059\u3002\n \u305F\u3068\u3048\u3070 `\u88FD\u54C1\u540D = '\u725B\u4E73' AND \u4ED5\u5165\u5148 LIKE 'zz'` \u306F\u524D\u8005\u3060\u3051\u3092 records API \u306B\u9001\u308A\u3001\n \u5143\u306E `WHERE` \u5168\u4F53\u3092\u53D6\u5F97\u5F8C\u306B\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\n3. **\u7D50\u5408\u30AD\u30FC\u306E\u62BC\u3057\u4E0B\u3052**: CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u7269\u7406 APP \u3078 INNER JOIN \u3059\u308B\u5F62\u3067\u306F\u3001\n \u7D50\u5408\u30AD\u30FC\u306E\u5B9F\u5024\u304B\u3089 `in` \u30EA\u30B9\u30C8\u3001\u307E\u305F\u306F\uFF08`in` \u3092\u53D7\u3051\u306A\u3044\u65E5\u4ED8\u7CFB\u306A\u3069\u306F\uFF09min/max \u306E\u7BC4\u56F2\u3092\n \u4F5C\u3063\u3066 JOIN \u5148\u3092\u7D5E\u308A\u8FBC\u307F\u307E\u3059\u3002\u7269\u7406 APP \u5074\u306E\u5B89\u5168\u8449\uFF08\u6A5F\u69CB 2 \u3068\u540C\u3058\u898F\u5247\uFF09\u3082\n \u3053\u306E query \u306B\u5408\u6D41\u3057\u307E\u3059\u3002\n\n\u3053\u308C\u3089\u306E\u5B89\u5168\u8449\u306E\u5224\u5B9A\uFF08\u578B\xD7\u6F14\u7B97\u5B50\xD7literal \u306E\u898F\u5247\uFF09\u306F 1 \u3064\u306E leaf policy \u3092\u5171\u6709\u3057\u307E\u3059\u3002\n\u6B21\u306E\u8868\u304C\u8AAC\u660E\u3059\u308B\u306E\u306F\u3001**1 \u3064\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092 1 \u3064\u306E\u30EA\u30C6\u30E9\u30EB\uFF08`IN` / `NOT IN` \u306F\n\u30EA\u30C6\u30E9\u30EB\u30EA\u30B9\u30C8\uFF09\u3068\u6BD4\u8F03\u3059\u308B\u5358\u4E00\u306E\u6761\u4EF6**\u306E\u5224\u5B9A\u3067\u3059\u3002server-only \u95A2\u6570\u3001`KLIKE` \u306F\u5225\u306E\u898F\u5247\u3067\u3059\u3002\n\n#### `EXPLAIN` \u306E\u8AAD\u307F\u65B9\uFF08\u62BC\u3057\u4E0B\u3052\u95A2\u9023\u306E\u884C\uFF09\n\n- **\u53D6\u5F97\u306E\u5B9F\u614B\u306E\u6B63\u306F\u3001\u5404 source \u306E `fetch:` \u884C**\u3067\u3059\uFF08`EXACT` / `PREFILTERED` / `ALL` \u306A\u3069\uFF09\u3002\n `maxRecords` \u306E\u898B\u7A4D\u3082\u308A\u306F\u3053\u306E\u884C\u3092\u6839\u62E0\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n- **`relation:` \u306F\u300C\u62BC\u3057\u4E0B\u3052\u305F\u6761\u4EF6\u304C\u5FE0\u5B9F\u306B\u8A33\u305B\u305F\u304B\u300D**\uFF08`exact`\uFF1D\u8449\u5358\u4F4D\u3067\u7B49\u4FA1\u30FB\n `superset`\uFF1D\u5E83\u3081\u306B\u53D6\u5F97\uFF09\u3067\u3042\u3063\u3066\u3001**\u300C\u62BC\u3057\u4E0B\u3052\u304B\u3089\u6F0F\u308C\u305F\u6761\u4EF6\u304C\u7121\u3044\u304B\u300D\u3067\u306F\u3042\u308A\u307E\u305B\u3093**\u3002\n `relation: exact` \u3067\u3082 `LIKE` \u306A\u3069\u306E\u6B8B\u4F59\u6761\u4EF6\u304C\u3042\u308C\u3070\u3001\u53D6\u5F97\u4EF6\u6570\u306F\u7B54\u3048\u3088\u308A\u591A\u304F\u306A\u308A\u307E\u3059\n \uFF08\u5B9F\u6E2C\u30FBv3.62.0\uFF09\u3002\n- `pushdown applied:` \u306F\u78BA\u5B9A\u3057\u305F query\u3001`pushdown candidate: \u2026\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09` \u306F\n metadata \u672A\u53D6\u5F97\u306E\u9759\u7684\u8868\u793A\u3067\u3059\uFF08CLI `--dry-run` \u306A\u3069\u30FBAPI 0 \u56DE\u306E\u9762\u3067\u51FA\u307E\u3059\uFF09\u3002\n- `join pushdown plan: not applied` \u306F\u3001CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u542B\u3080\u5834\u5408\u306B\u300C\u7269\u7406 APP \u3060\u3051\u306E\n \u76F4\u63A5 JOIN planner\u300D\u304C\u4E0D\u9069\u7528\u3067\u3042\u308B\u3053\u3068\u3092\u793A\u3059\u3060\u3051\u3067\u3001\u7D9A\u304F source \u3054\u3068\u306E\n JOIN key / WHERE prefilter \u307E\u3067\u4E0D\u9069\u7528\u3068\u3044\u3046\u610F\u5473\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF08\u5404 source \u884C\u3092\u8AAD\u307F\u307E\u3059\uFF09\u3002\n\n\u30D5\u30A9\u30FC\u30E0\u9078\u629E\u7CFB\u306E `IN` / `NOT IN` \u306F\u3001\u7A7A\u3067\u306A\u3044\u5B9F\u5728\u9078\u629E\u80A2\u3060\u3051\u306E\u30EA\u30B9\u30C8\u3092\u6307\u5B9A\u3057\u3001\u578B\u60C5\u5831\u3068\n\u9078\u629E\u80A2\u60C5\u5831\u3092\u53D6\u5F97\u3067\u304D\u305F\u5834\u5408\u306B\u62BC\u3057\u4E0B\u304C\u308A\u307E\u3059\u3002\u30E6\u30FC\u30B6\u30FC\u30FB\u7D44\u7E54\u30FB\u30B0\u30EB\u30FC\u30D7\u30FB\u4F5C\u696D\u8005\u7CFB\u306F\n`name` \u3067\u306F\u306A\u304F\u975E\u7A7A\u306E `code` \u3092\u9010\u8A9E\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\u8868\u306F\u3053\u308C\u3089\u306E\u6761\u4EF6\u3092\u6E80\u305F\u3059\u30EA\u30C6\u30E9\u30EB\u3067\u306E\u5224\u5B9A\u3067\u3059\u3002\n\n**\u25CB = \u62BC\u3057\u4E0B\u304C\u308B\uFF0F\u2715 = \u62BC\u3057\u4E0B\u304C\u3089\u306A\u3044**\uFF08\u2715 \u306E\u6761\u4EF6\u306F prefilter \u306B\u4F7F\u308F\u305A\u3001\u53D6\u5F97\u5F8C\u306B JS \u3067\u5224\u5B9A\u3057\u307E\u3059\uFF09\u3002\n\u5358\u4E00\u5024\u9078\u629E\u7CFB\uFF08`RADIO_BUTTON` / `DROP_DOWN` / `STATUS`\uFF09\u306E `=` / `!=` \u306F\u3001\u30A8\u30F3\u30B8\u30F3\u304C\n`in` / `not in` \u3078\u6B63\u898F\u5316\u3057\u305F\u3046\u3048\u3067\u62BC\u3057\u4E0B\u3052\u308B\u305F\u3081 \u25CB \u3067\u3059\uFF08\u6761\u4EF6\u306F `in` \u3068\u540C\u3058\uFF1D\u5B9F\u5728\u9078\u629E\u80A2\u30FB\u7A7A\u3067\u306A\u3044\u5024\uFF09\u3002\n\n<!-- B84_JOIN_FIELD_LITERAL_TABLE_START -->\n| \u30D5\u30A3\u30FC\u30EB\u30C9\u578B | `=` | `!=` | `<` | `>` | `<=` | `>=` | `in` | `not in` |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| `CALC` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB |\n| `CATEGORY` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 |\n| `CHECK_BOX` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `CREATED_TIME` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u2715 | \u2715 |\n| `CREATOR` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `DATE` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u2715 | \u2715 |\n| `DATETIME` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u2715 | \u2715 |\n| `DROP_DOWN` | \u25CB | \u25CB | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `FILE` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 |\n| `GROUP_SELECT` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `LINK` | \u25CB | \u25CB | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `MODIFIER` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `MULTI_LINE_TEXT` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 |\n| `MULTI_SELECT` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `NUMBER` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB |\n| `ORGANIZATION_SELECT` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `RADIO_BUTTON` | \u25CB | \u25CB | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `RECORD_NUMBER` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB |\n| `RICH_TEXT` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 |\n| `SINGLE_LINE_TEXT` | \u25CB | \u25CB | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `STATUS` | \u25CB | \u25CB | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `STATUS_ASSIGNEE` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n| `TIME` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u2715 | \u2715 |\n| `UPDATED_TIME` | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u25CB | \u2715 | \u2715 |\n| `USER_SELECT` | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u2715 | \u25CB | \u25CB |\n<!-- B84_JOIN_FIELD_LITERAL_TABLE_END -->\n\n\u65E5\u4ED8\u30FB\u6642\u523B\u7CFB\u306E\u884C\u306F\u3001\u53F3\u8FBA\u304C\u6B63\u898F\u5F62\u5F0F\u306E\u5834\u5408\u306B\u9650\u308A\u307E\u3059\u3002`DATE` \u306F\u5B9F\u5728\u3059\u308B\n`YYYY-MM-DD`\u3001`TIME` \u306F `HH:mm`\u3001`DATETIME` / `CREATED_TIME` / `UPDATED_TIME` \u306F\n`YYYY-MM-DDTHH:mm:ssZ` \u3060\u3051\u304C\u5BFE\u8C61\u3067\u3059\u3002UTC offset\u3001\u79D2\u7701\u7565\u3001\u5C0F\u6570\u79D2\u3001\u524D\u5F8C\u7A7A\u767D\u3001\u7A7A\u6587\u5B57\u306F\n\u62BC\u3057\u4E0B\u3052\u305A\u3001\u53D6\u5F97\u5F8C\u306B\u5224\u5B9A\u3057\u307E\u3059\u3002\n\n`SINGLE_LINE_TEXT` / `LINK` \u306F\u3001\u7A7A\u3067\u306A\u3044\u6587\u5B57\u5217\u306B\u3088\u308B `=` / `!=`\uFF08`<>` \u3092\u542B\u3080\uFF09\u3068\u3001\n1\u4EF6\u4EE5\u4E0A\u306E\u7A7A\u3067\u306A\u3044\u6587\u5B57\u5217\u3060\u3051\u304B\u3089\u306A\u308B `IN` / `NOT IN` \u3092 `relation: exact` \u3068\u3057\u3066\n\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3001\u5168\u89D2\u534A\u89D2\u3001Unicode\u3001\u7A7A\u767D\u306F\u6B63\u898F\u5316\u305B\u305A\u3001records API query \u306B\n\u5FC5\u8981\u306A `\"` \u3068 `\\` \u306E escape \u3060\u3051\u3092\u884C\u3044\u307E\u3059\u3002\u7BC4\u56F2\u6BD4\u8F03\u3001\u7A7A\u6587\u5B57\u3001\u7A7A\u6587\u5B57\u3092\u542B\u3080\u30EA\u30B9\u30C8\u306F\n\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\u3002`LIKE` \u306F\u5F15\u304D\u7D9A\u304D client \u8A55\u4FA1\u3067\u3001kintone \u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u306B\u306F `KLIKE` \u3092\n\u4F7F\u7528\u3057\u307E\u3059\u3002\n\n`CALC` / `RECORD_NUMBER` \u306F\u3001B151 \u306E numeric literal policy \u3092\u6E80\u305F\u3059\u6570\u5024\u3001\u307E\u305F\u306F\u7A7A\u3067\u306A\u3044\n\u6587\u5B57\u5217\u30928\u6F14\u7B97\u5B50\u3067\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002`IN` / `NOT IN` \u306F1\u4EF6\u4EE5\u4E0A\u306E\u540C\u7A2E literal \u3060\u3051\u304B\u3089\u306A\u308B\u30EA\u30B9\u30C8\u304C\n\u5BFE\u8C61\u3067\u3059\u3002\u3044\u305A\u308C\u3082 `relation: superset` \u3068\u3057\u3066\u53D6\u5F97\u5F8C\u306B\u5143\u306E `WHERE` \u3092\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\nCALC \u306E\u8868\u793A\u66F8\u5F0F\u3084 RECORD_NUMBER \u306E\u30A2\u30D7\u30EA\u30B3\u30FC\u30C9\u5F62\u5F0F\u306B\u5408\u308F\u306A\u3044\u5024\u306F\u3001\u5358\u4E00\u8868\u3068\u540C\u3058\u304F kintone\nquery error \u306B\u306A\u308A\u307E\u3059\u3002\u5168\u4EF6\u53D6\u5F97\u3078\u306E silent retry \u306F\u884C\u3044\u307E\u305B\u3093\u3002\n\n\u30E6\u30FC\u30B6\u30FC\u30FB\u7D44\u7E54\u30FB\u30B0\u30EB\u30FC\u30D7\u30FB\u4F5C\u696D\u8005\u7CFB6\u578B\u306F\u30011\u4EF6\u4EE5\u4E0A\u306E\u975E\u7A7A string literal code \u306B\u3088\u308B\n`IN` / `NOT IN` \u3092 `relation: exact` \u3067\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002\u8868\u793A\u540D `name` \u306F\u4F7F\u3044\u307E\u305B\u3093\u3002\n\u5B58\u5728\u3057\u306A\u3044 code\uFF08`GAIA_IL26` \u7B49\uFF09\u3084\u30D7\u30ED\u30BB\u30B9\u7121\u52B9\u6642\u306E\u4F5C\u696D\u8005\u306A\u3069\u3001kintone \u304C\u53D7\u7406\u3057\u306A\u3044\u6307\u5B9A\u306F\n\u5358\u4E00\u8868\u3068\u540C\u3058\u304F query error \u3068\u3057\u3066\u8868\u9762\u5316\u3057\u3001\u5168\u4EF6\u53D6\u5F97\u3078 retry \u3057\u307E\u305B\u3093\u3002\n\n`NUMBER` \u884C\u306F\u3001\u76F4\u63A5\u306E\u7269\u7406 NUMBER \u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u3001\u6B63\u898F\u5316\u5F8C\u306E\u5C0F\u6570\u90E810\u6841\u4EE5\u4E0B\u30FB\u5168\u4F5330\u6841\u4EE5\u4E0B\u306E\n\u6709\u965010\u9032 numeric literal\uFF08`IN` / `NOT IN` \u306F1\u4EF6\u4EE5\u4E0A\u306E numeric literal \u3060\u3051\u306E\u30EA\u30B9\u30C8\uFF09\u3092\n\u6BD4\u8F03\u3059\u308B\u5834\u5408\u306B\u9650\u308A\u307E\u3059\u30028\u6F14\u7B97\u5B50\u306F\u3044\u305A\u308C\u3082 `relation: exact` \u3067\u3059\u3002\u6307\u6570\u8868\u8A18\u3068\u5148\u982D\u306E `+` \u306F\nplain decimal \u306B\u6B63\u898F\u5316\u3057\u3001\u5B89\u5168\u6574\u6570\u5916\u3082\u5143\u306E10\u9032\u5B57\u53E5\u3092\u4FDD\u6301\u3057\u307E\u3059\u3002\u30A2\u30D7\u30EA\u306E `numberPrecision`\n\u306F\u4FDD\u5B58\u5024\u306E\u4E38\u3081\u8A2D\u5B9A\u3067\u3042\u308A\u3001query literal \u3092\u305D\u306E\u8A2D\u5B9A\u3078\u4E38\u3081\u307E\u305B\u3093\u3002\u6587\u5B57\u5217 literal\u3001\n\u8A31\u53EF\u7BC4\u56F2\u5916\u306E\u5024\u3001\u7B97\u8853\u5F0F\u30FB\u95A2\u6570\u30FB`CASE` \u3067\u5305\u3093\u3060\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3053\u306E NUMBER \u898F\u5247\u306E\u5BFE\u8C61\u5916\u3067\u3059\u3002\n\n`$id` \u306F\u4E0A\u8868\u306E `RECORD_NUMBER` \u3068\u306F\u5225\u3067\u3059\u3002`$id` \u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3067\u306F\u306A\u304F\u3001\u6B63\u6E96\u306A\u30EC\u30B3\u30FC\u30C9 ID\n\u3067\u3042\u308B\u3068\u8A3C\u660E\u3067\u304D\u308B\u64EC\u4F3C\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u306A\u306E\u3067\u3001\u6B63\u306E\u5B89\u5168\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u306B\u5BFE\u3059\u308B `=` / `<` / `>` /\n`<=` / `>=` \u3092 JOIN \u3067\u3082\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002JOIN \u4E2D\u306E `RECORD_NUMBER` \u306F\u540C\u3058 exact \u4FDD\u8A3C\u3092\u6301\u305F\u306A\u3044\n\u305F\u3081\u3001\u5225\u5951\u7D04\u306E `superset` \u3068\u3057\u3066\u62BC\u3057\u4E0B\u3052\u3001\u53D6\u5F97\u5F8C\u306B\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\n\n\u30D5\u30A3\u30FC\u30EB\u30C9\u3092 `DATE_FORMAT(field, ...)` \u306A\u3069\u306E\u95A2\u6570\u3067\u5305\u3080\u6761\u4EF6\u306F kintone query \u3068\u3057\u3066\u8868\u73FE\u3067\u304D\u305A\u3001\n\u62BC\u3057\u4E0B\u304C\u308A\u307E\u305B\u3093\u3002server-only \u306E kintone \u30AF\u30A8\u30EA\u95A2\u6570\u306F\n[\u5C02\u7528\u7BC0](#kintone-\u30AF\u30A8\u30EA\u95A2\u6570server-only)\u3001`KLIKE` / `NOT KLIKE` \u306F\n[\u5C02\u7528\u7BC0](#klike--not-klikekintone\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22)\u306E\u898F\u5247\u306B\u5F93\u3044\u307E\u3059\u3002\n\n\u9078\u629E\u7CFB\u306E `=` / `!=` \u306F kintone query \u304C `in` / `not in` \u3057\u304B\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093\u304C\u3001\n**\u5358\u4E00\u5024\u306E\u9078\u629E\u7CFB\uFF08`RADIO_BUTTON` / `DROP_DOWN` / `STATUS` \u306A\u3069\uFF09\u3067\u306F\u3001\u30A8\u30F3\u30B8\u30F3\u304C\u81EA\u52D5\u3067\n`IN` / `NOT IN` \u3078\u6B63\u898F\u5316\u3057\u3066\u62BC\u3057\u4E0B\u3052\u307E\u3059**\uFF08`EXPLAIN` \u306B `pushdown normalized:` \u884C\u304C\u51FA\u307E\u3059\u3002\n\u66F8\u304D\u63DB\u3048\u306F\u4E0D\u8981\u3067\u3059\uFF09\u3002**\u6B63\u898F\u5316\u306E\u5BFE\u8C61\u5916**\uFF1D\u8907\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30FB\u8907\u6570\u9078\u629E\u30FB\n\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u306A\u3069\u3002`IN` \u306B\u3059\u308B\u3068\u300C\u3044\u305A\u308C\u304B\u3092\u542B\u3080\u300D\u5224\u5B9A\u306B\u306A\u308A\u610F\u5473\u304C\u5909\u308F\u308B\u305F\u3081\uFF09\u30FB\n**\u5B9A\u7FA9\u306B\u7121\u3044\u9078\u629E\u80A2\u5024\u30FB\u7A7A\u6587\u5B57\uFF08`= ''`\uFF09**\u3002\u3053\u308C\u3089\u306F\u5F93\u6765\u3069\u304A\u308A\u62BC\u3057\u4E0B\u304C\u308A\u307E\u305B\u3093\u3002\n\u3053\u306E\u6B63\u898F\u5316\u306F WHERE \u306E AST \u3092\u5404\u30D7\u30E9\u30F3\u30CA\u30FC\u3067\u5171\u6709\u3059\u308B\u524D\u306B\u884C\u308F\u308C\u308B\u305F\u3081\u3001\n**\u5358\u4E00\u8868\u3068 JOIN \u306E field-vs-literal prefilter\uFF08\u4E0A\u8868\uFF09\u306E\u4E21\u65B9\u306E\u7D4C\u8DEF\u306B\u639B\u304B\u308A\u307E\u3059**\u3002\n\n#### \u62BC\u3057\u4E0B\u304C\u308B\u5F62\u3078\u306E\u66F8\u304D\u63DB\u3048\n\n**\u7D50\u679C\u306F\u540C\u3058\u3067\u3082\u3001\u66F8\u304D\u65B9\u3067\u53D6\u5F97\u4EF6\u6570\u304C\u5909\u308F\u308A\u307E\u3059\u3002**\u4E0B\u8868\u306F\u540C\u3058\u610F\u5473\u306E\u307E\u307E\u62BC\u3057\u4E0B\u304C\u308B\u5F62\u3078\n\u66F8\u304D\u63DB\u3048\u308B\u4F8B\u3067\u3059\uFF08`fetch:` \u306F `EXPLAIN` \u306E\u8868\u793A\u3002\u2192 [\xA724 \u51FA\u529B\u306E\u8AAD\u307F\u65B9](#\u51FA\u529B\u306E\u8AAD\u307F\u65B9)\uFF09\u3002\n\n| \u5168\u4EF6\u53D6\u5F97\u306B\u306A\u308B\u66F8\u304D\u65B9 | \u306A\u305C | \u62BC\u3057\u4E0B\u304C\u308B\u66F8\u304D\u65B9 |\n|---|---|---|\n| `\u78BA\u5EA6 = ''`\uFF08\u9078\u629E\u7CFB\u306E\u7A7A\u30BB\u30EB\u5224\u5B9A\uFF09 | \u7A7A\u6587\u5B57\u306F `IN` \u3078\u306E\u81EA\u52D5\u6B63\u898F\u5316\uFF08\u5358\u4E00\u5024\u9078\u629E\u7CFB\u306E `=` / `!=`\uFF09\u306E\u5BFE\u8C61\u5916 | **`\u78BA\u5EA6 IN ('')`** |\n| `YEAR(\u53D7\u6CE8\u4E88\u5B9A\u65E5) = 2026` | \u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u95A2\u6570\u3067\u5305\u3080\u3068\u5909\u63DB\u3067\u304D\u306A\u3044 | **`\u53D7\u6CE8\u4E88\u5B9A\u65E5 = THIS_YEAR()`** |\n| `\u53D7\u6CE8\u4E88\u5B9A\u65E5 >= CURRENT_DATE()` | kSQL \u306E\u30B9\u30AB\u30E9\u30FC\u95A2\u6570\u3067\u3001\u62BC\u3057\u4E0B\u3052\u7D4C\u8DEF\u304C\u7121\u3044 | **\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570**\uFF08`TODAY()` / `FROM_TODAY(n, unit)`\uFF09 |\n| `\u6848\u4EF6\u540D LIKE '%\u5546\u4E8B%'` | `LIKE` \u306F**\u524D\u65B9\u4E00\u81F4\u3067\u3082**\u5E38\u306B JS \u8A55\u4FA1 | **`\u6848\u4EF6\u540D KLIKE '\u5546\u4E8B'`**\uFF08\u4E00\u81F4\u898F\u5247\u306F kintone \u6E96\u62E0\u3067\u5225\u7269\uFF09\u3001\u307E\u305F\u306F\u62BC\u3057\u4E0B\u304C\u308B\u6761\u4EF6\u3092 `AND` \u3067\u8DB3\u3057\u3066 prefilter \u3092\u52B9\u304B\u305B\u308B |\n| `\u78BA\u5EA6 IS NULL` | `IS NULL` \u306F\u62BC\u3057\u4E0B\u304C\u3089\u306A\u3044 | \u9078\u629E\u7CFB\u306E\u672A\u9078\u629E\u306F **`\u78BA\u5EA6 IN ('')`** |\n\n**\u4E0A\u8868\u306F\u3044\u305A\u308C\u3082\u5B9F\u6E2C\u3067\u3059**\uFF08`EXPLAIN` \u306E `fetch:` \u304C `ALL` \u2192 `EXACT` \u3078\u5909\u308F\u308B\u3053\u3068\u3092\u78BA\u8A8D\uFF09\u3002\n\n> JOIN \u4E2D\u306E\u76F4\u63A5 NUMBER \u6BD4\u8F03\u306F\u3001\u8A31\u53EF\u7BC4\u56F2\u5185\u306E\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u3067\u3042\u308C\u3070 `>=` / `<=` \u3092\u542B\u3081\u3066\n> \u305D\u306E\u307E\u307E exact prefilter \u306B\u306A\u308A\u307E\u3059\u3002\u6574\u6570\u5883\u754C\u3078\u306E\u624B\u52D5\u66F8\u304D\u63DB\u3048\u306F\u4E0D\u8981\u3067\u3059\u3002\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\n> \u7B97\u8853\u5F0F\u3084\u95A2\u6570\u3067\u5305\u3080\u3068\u76F4\u63A5 field leaf \u3067\u306F\u306A\u304F\u306A\u308B\u305F\u3081\u62BC\u3057\u4E0B\u304C\u308A\u307E\u305B\u3093\u3002\n> JOIN \u306E\u62BC\u3057\u4E0B\u3052\u306F\u7D50\u5408\u30AD\u30FC\u306B\u3088\u308B\u7D5E\u308A\u8FBC\u307F\u304C\u4E2D\u5FC3\u3067\u3001\u5916\u90E8\u7D50\u5408\u3067\u306F\u884C\u308F\u308C\u307E\u305B\u3093\u3002\n\n> **`CURRENT_DATE()` / `CURRENT_TIMESTAMP()` \u306F\u5B9F\u884C\u74B0\u5883\u306E\u30ED\u30FC\u30AB\u30EB\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3067\u8A55\u4FA1\u3055\u308C\u307E\u3059\u3002**\n> kintone \u30C9\u30E1\u30A4\u30F3\u3068\u6642\u5DEE\u304C\u3042\u308B\u74B0\u5883\u3067\u306F\u6708\u521D\u30FB\u6708\u672B\u306E\u5883\u754C\u304C\u305A\u308C\u5F97\u308B\u305F\u3081\u3001**\u671F\u9593\u306E\u7D5E\u308A\u8FBC\u307F\u306B\u306F\n> \u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u3092\u512A\u5148**\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30B5\u30FC\u30D0\u30FC\u5074\u3067\u8A55\u4FA1\u3055\u308C\u307E\u3059\uFF09\u3002\u5217\u306E\u5024\u3068\u3057\u3066\u4ECA\u65E5\u3092\u51FA\u3059\u7528\u9014\n> \uFF08`SELECT CURRENT_DATE() AS \u4ECA\u65E5`\uFF09\u306F\u5F93\u6765\u3069\u304A\u308A\u3067\u3059\u3002\n\n### KLIKE / NOT KLIKE\uFF08kintone\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\uFF09\n\n`KLIKE` \u306FSQL `LIKE`\u3068\u306F\u5225\u306E\u6F14\u7B97\u5B50\u3067\u3059\u3002\u6761\u4EF6\u3092kintone\u306E `like` / `not like` \u3078\u5909\u63DB\u3057\u3001kintone\u5074\u3067\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u3057\u307E\u3059\u3002\n\n```sql\nSELECT \u4EF6\u540D, \u62C5\u5F53\u8005\nFROM APP100\nWHERE \u4EF6\u540D KLIKE '\u81F3\u6025'\n\nSELECT \u4EF6\u540D\nFROM APP100\nWHERE \u4EF6\u540D NOT KLIKE '\u4FDD\u7559'\n```\n\n- `LIKE` \u306FkSQL\u306E\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\uFF0F\u90E8\u5206\u4E00\u81F4\u3092JavaScript\u3067\u8A55\u4FA1\u3057\u307E\u3059\u3002`KLIKE` \u306Fkintone\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u3067\u3042\u308A\u3001\u534A\u89D2\u30FB\u5168\u89D2\u3001\u5927\u5C0F\u6587\u5B57\u3001\u5358\u8A9E\u5206\u5272\u306A\u3069\u306E\u4E00\u81F4\u898F\u5247\u306Fkintone\u306B\u6E96\u62E0\u3057\u307E\u3059\u3002**SQL\u306E\u90E8\u5206\u4E00\u81F4\u3068\u306F\u7570\u306A\u308B**\u70B9\u306B\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n - **\u4E00\u81F4\u6319\u52D5\u306F\u6587\u5B57\u7A2E\u30FB\u7528\u5B57\u7CFB\u306B\u3088\u3063\u3066\u7570\u306A\u308A\u307E\u3059**\uFF08\u8A73\u7D30\u306Fkintone\u306E\u691C\u7D22\u4ED5\u69D8\u306B\u6E96\u62E0\uFF09\u3002**\u4ECA\u56DE\u306E\u5B9F\u6A5F\u89B3\u6E2C**\u3067\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3057\u305F\u3002**\u82F1\u6570\u5B57\u4F8B\u306F\u7A7A\u767D\u533A\u5207\u308A\u306E\u8A9E\uFF08\u30C8\u30FC\u30AF\u30F3\uFF09\u5358\u4F4D**\u3067\u4E00\u81F4\u3057\u8A9E\u306E\u4E00\u90E8\u3067\u306F\u4E00\u81F4\u305B\u305A\u3001**\u65E5\u672C\u8A9E\u4F8B\u306F2\u6587\u5B57\u4EE5\u4E0A\u306E\u90E8\u5206\u4E00\u81F4\uFF08\u4E2D\u9593\u3092\u542B\u3080\uFF09**\u3067\u4E00\u81F4\u30571\u6587\u5B57\u3067\u306F\u4E00\u81F4\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002\n\n | \u691C\u7D22 | \u5BFE\u8C61\u306E\u5024 | \u4E00\u81F4\uFF08\u89B3\u6E2C\u4F8B\uFF09 |\n |---|---|---|\n | `KLIKE 'TOKYO'` | `TOKYO TO` | \u25CB\uFF08\u7A7A\u767D\u533A\u5207\u308A\u306E\u8A9E `TOKYO`\uFF09 |\n | `KLIKE 'TOK'` / `'OKYO'` | `TOKYO TO` | \xD7\uFF08\u8A9E\u306E\u4E00\u90E8\u3067\u306F\u4E00\u81F4\u3057\u306A\u3044\uFF09 |\n | `KLIKE 'A'` | `A1` | \xD7\uFF08`A1` \u30671\u8A9E\uFF09 |\n | `KLIKE 'X'` / `'Y'` / `'X-Y'` | `X-Y` | \u25CB\uFF08**\u30CF\u30A4\u30D5\u30F3\u306F\u8A9E\u3092\u5206\u5272\u3059\u308B**\uFF09 |\n | `KLIKE 'ALPHA'` / `'BETA'` | `ALPHA_BETA` | \xD7\uFF08**\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u306F\u8A9E\u3092\u5206\u5272\u3057\u306A\u3044**\u305F\u3081 `ALPHA_BETA` \u30671\u8A9E\uFF09 |\n | `KLIKE 'KSQL-FLOW-TEST-C'` | `KSQL-FLOW-TEST-C200` | \xD7\uFF08\u672B\u5C3E\u306E\u8A9E `C` \u304C `C200` \u3068\u4E00\u81F4\u3057\u306A\u3044\uFF09 |\n | `KLIKE '\u4E38\u306E'` / `'\u306E\u5185'` | `\u4E38\u306E\u5185` | \u25CB\uFF082\u6587\u5B57\u4EE5\u4E0A\u306E\u90E8\u5206\u4E00\u81F4\u30FB\u4E2D\u9593\u3092\u542B\u3080\uFF09 |\n | `KLIKE '\u5185'` | `\u4E38\u306E\u5185` | \xD7\uFF081\u6587\u5B57\u3067\u306F\u4E00\u81F4\u3057\u306A\u3044\uFF09 |\n\n > \u4E0A\u8A18\u306F\u89B3\u6E2C\u3055\u308C\u305F\u4F8B\u3067\u3042\u308A\u3001kintone\u306E\u4E00\u81F4\u898F\u5247\u3092\u7DB2\u7F85\u7684\u306B\u5B9A\u7FA9\u3059\u308B\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u534A\u89D2\u30FB\u5168\u89D2\u3001\u5927\u5C0F\u6587\u5B57\u3001\u8A18\u53F7\u306E\u6271\u3044\u7B49\u306Fkintone\u306E\u4ED5\u69D8\u306B\u5F93\u3044\u307E\u3059\u3002\uFF08\u5B9F\u6E2C\u30FBv3.72.0\uFF09\n - **\u66F8\u8FBC\u76F4\u5F8C\u306E `KLIKE` \u306F\u7D50\u679C\u304C\u5909\u308F\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002** kintone\u306E\u691C\u7D22\u7D22\u5F15\u306F\u66F8\u8FBC\u306B\u5BFE\u3057\u3066\u5373\u6642\u3067\u306F\u306A\u3044\u305F\u3081\u3001**\u540C\u3058\u30D0\u30C3\u30C1\u3067\u66F8\u3044\u305F\u884C\u3092\u76F4\u5F8C\u306B `KLIKE` \u3067\u62FE\u3046\u3068\u3001\u66F4\u65B0\u5F8C\u306E\u5024\u3067\u306F\u5F15\u3051\u305A\u3001\u66F4\u65B0\u524D\u306E\u5024\u3067\u5F15\u3051\u3066\u3057\u307E\u3046**\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u30A8\u30E9\u30FC\u306B\u306F\u306A\u3089\u305A\u4EF6\u6570\u304C\u5909\u308F\u308B\u3060\u3051\u306A\u306E\u3067\u6C17\u3065\u3051\u307E\u305B\u3093\u3002\n ```sql\n UPSERT INTO APP100 (\u30B3\u30FC\u30C9, \u533A\u5206) VALUES (...) ON DUPLICATE (\u30B3\u30FC\u30C9);\n SELECT * FROM APP100 WHERE \u533A\u5206 KLIKE '\u8981\u78BA\u8A8D'; -- \u76F4\u524D\u306B\u66F8\u3044\u305F\u884C\u304C\u5165\u3089\u306A\u3044\u3053\u3068\u304C\u3042\u308B\n ```\n **\u5BFE\u51E6\u306F\u3001\u66F8\u8FBC\u6587\u3092\u30D0\u30C3\u30C1\u306E\u6700\u5F8C\u306B\u7F6E\u304F\u3053\u3068\u3067\u3059\u3002** \u3069\u3046\u3057\u3066\u3082\u66F8\u3044\u305F\u884C\u3092\u540C\u3058\u30D0\u30C3\u30C1\u3067\u6570\u3048\u308B\uFF0F\u7D5E\u308A\u8FBC\u3080\u5FC5\u8981\u304C\u3042\u308B\u5834\u5408\u306F `LIKE`\uFF08JavaScript\u8A55\u4FA1\uFF09\u306B\u66FF\u3048\u3089\u308C\u307E\u3059\u304C\u3001`LIKE` \u306FFULL_SCAN\u306B\u306A\u308B\u305F\u3081**\u5927\u898F\u6A21\u30A2\u30D7\u30EA\u3067\u306F\u53D6\u5F97\u4E0A\u9650\uFF08`maxRecords`\uFF09\u306B\u9054\u3057\u3066\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059**\uFF08\u4E0B\u8A18\u300C\u6027\u80FD\u300D\u53C2\u7167\uFF09\u3002`ASSERT` \u306E\u4EF6\u6570\u30B2\u30FC\u30C8\u3092 `KLIKE` \u3067\u66F8\u304F\u3068\u3001\u30B2\u30FC\u30C8\u304C\u7D20\u901A\u308A\u3057\u305F\u308A\u3001\u53E4\u3044\u6761\u4EF6\u3067\u8AA4\u3063\u3066\u6210\u7ACB\u3057\u305F\u308A\u3057\u5F97\u307E\u3059\u3002\n \u306A\u304A**\u7D22\u5F15\u306B\u8F09\u308B\u5185\u5BB9\u304C\u5909\u308F\u3063\u305F\u3068\u304D\u3060\u3051**\u8D77\u3053\u308A\u307E\u3059\u3002`KLIKE` \u306E\u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u304D\u63DB\u3048\u306A\u3044\u66F4\u65B0\u3084 `DELETE` \u3067\u306F\u89B3\u6E2C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\uFF08\u5B9F\u6E2C\u30FBv3.72.0\uFF09\n - \u8FF7\u3063\u305F\u3089\u3001\u78BA\u5B9F\u306B\u90E8\u5206\u4E00\u81F4\u3055\u305B\u305F\u3044\u5834\u5408\u306F `LIKE`\uFF08JavaScript\u8A55\u4FA1\u30FBFULL_SCAN\uFF09\u3092\u3001kintone\u5074\u3067\u9AD8\u901F\u306B\u7D5E\u308A\u8FBC\u307F\u305F\u3044\u5834\u5408\u306F `KLIKE` \u3092\u4F7F\u3044\u5206\u3051\u3066\u304F\u3060\u3055\u3044\u3002\n- **\u6027\u80FD**: `LIKE` \u306FFULL_SCAN\u306B\u306A\u308A\u3001AND\u6761\u4EF6\u306B\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u5B89\u5168\u8FF0\u8A9E\uFF08`$id`\u30FB\u578B\u78BA\u8A8D\u6E08\u307FNUMBER\u3068\u8A31\u53EF\u7BC4\u56F2\u5185\u306E\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u306B\u3088\u308B\u6BD4\u8F03\u30FB`IN`\u30FB\u9078\u629E\u7CFB `IN` \u306A\u3069\uFF09\u304C\u306A\u3051\u308C\u3070\u5168\u4EF6\u53D6\u5F97\u306B\u306A\u308A\u307E\u3059\u3002\u5927\u898F\u6A21\u30A2\u30D7\u30EA\u3067\u306F\u53D6\u5F97\u4E0A\u9650\uFF08`maxRecords`\uFF09\u306B\u9054\u3057\u3066\u30A8\u30E9\u30FC\u306B\u306A\u308A\u304C\u3061\u3067\u3059\u3002`KLIKE` \u306FSIMPLE\u306E\u307E\u307Ekintone\u5074\u3067\u691C\u7D22\u3059\u308B\u305F\u3081\u3001\u5927\u898F\u6A21\u30A2\u30D7\u30EA\u3067\u3082\u9AD8\u901F\u3067\u3059\uFF08\u4F8B: \u6570\u5341\u4E07\u4EF6\u898F\u6A21\u306E\u30A2\u30D7\u30EA\u3067 `\u90FD\u9053\u5E9C\u770C LIKE '%\u6771\u4EAC%'` \u306F\u4E0A\u9650\u30A8\u30E9\u30FC\u3001`\u90FD\u9053\u5E9C\u770C KLIKE '\u6771\u4EAC\u90FD'` \u306F\u5373\u5FDC\uFF09\u3002\u305F\u3060\u3057\u4E0B\u8A18\u306E10\u4E07\u4EF6\u6253\u3061\u5207\u308A\u306B\u6CE8\u610F\u3002\n- SIMPLE SELECT\u3067\u306F\u5F93\u6765\u3069\u304A\u308AWHERE\u5168\u4F53\u3092kintone\u3078\u6E21\u3057\u307E\u3059\u3002FULL_SCAN SELECT\u3067\u3082\u3001KLIKE\u304CWHERE\u30EB\u30FC\u30C8\u304B\u3089AND\u3068\u62EC\u5F27\u3060\u3051\u3092\u7D4C\u7531\u3059\u308B\u5B89\u5168\u306A\u30EA\u30FC\u30D5\u306A\u3089\u3001kintone\u3078\u30D7\u30EC\u30D5\u30A3\u30EB\u30BF\u62BC\u3057\u4E0B\u3052\u3057\u3066\u6B8B\u308A\u306E\u6761\u4EF6\u3092JavaScript\u3067\u7CBE\u88FD\u3057\u307E\u3059\u3002\u3053\u308C\u306B\u3088\u308AKLIKE\u3068`LIKE`\u30FB\u95A2\u6570\u30FB\u96C6\u8A08\u30FB`DISTINCT`\u3092\u4F75\u7528\u3067\u304D\u307E\u3059\u3002\n ```sql\n -- \u4EF6\u540D\u306Fkintone\u3067\u7C97\u304F\u7D5E\u308A\u3001\u5099\u8003\u306FkSQL\u306E\u90E8\u5206\u4E00\u81F4\u3067\u7CBE\u88FD\n SELECT \u4EF6\u540D, \u5099\u8003 FROM APP100\n WHERE \u4EF6\u540D KLIKE '\u81F3\u6025' AND \u5099\u8003 LIKE '%\u7DCA\u6025%'\n ```\n- FULL_SCAN\u3067\u306E\u5236\u7D04: \u901A\u5E38\u306F OR \u307E\u305F\u306F`NOT (...)`\u914D\u4E0B\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u3001CTE\uFF0F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u306EKLIKE\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u4F8B\u5916\u3068\u3057\u3066\u3001alias \u4ED8\u304D\u7269\u7406 APP \u3060\u3051\u306E INNER JOIN \u3067 server-only \u95A2\u6570\u3092\u542B\u307F\u3001\u5358\u4E00 alias \u306E `WHERE` \u5168\u4F53\u3092 exact \u306B\u62BC\u3057\u4E0B\u3052\u308B\u7B2C5-W\u3067\u306F\u3001OR / NOT \u914D\u4E0B\u3092\u542B\u3080\u5168 KLIKE occurrence \u3092\u540C\u3058 server query \u306B\u9069\u7528\u3057\u3066 client residual \u3092\u7121\u304F\u305B\u308B\u305F\u3081\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002whole-WHERE exact \u3067\u306A\u3044 KLIKE-containing OR \u306F\u62D2\u5426\u3057\u307E\u3059\u3002\u305D\u308C\u4EE5\u5916\u306E JOIN \u3068\u306E\u4F75\u7528\u306F\u3001\u3059\u3079\u3066\u306E JOIN \u304C `INNER JOIN` \u3067\u3001KLIKE \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30C6\u30FC\u30D6\u30EB\u30A8\u30A4\u30EA\u30A2\u30B9\u3067\u660E\u793A\u3057\u305F\u5834\u5408\u3060\u3051\u8A31\u53EF\u3057\u307E\u3059\u3002`LEFT JOIN` / `RIGHT JOIN`\u3092\u542B\u3080SELECT\u3067\u306F\u3001\u5B89\u5168\u5074\u306BKLIKE\u3092\u62D2\u5426\u3057\u307E\u3059\u3002\u76F4\u63A5\u306E`NOT KLIKE`\u306FAND\u30EA\u30FC\u30D5\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n- \u53F3\u8FBA\u306F\u5358\u4E00\u5F15\u7528\u7B26\u306E\u6587\u5B57\u5217\u307E\u305F\u306F\u6587\u5B57\u5217\u30D0\u30C3\u30C1\u5909\u6570\u306B\u9650\u5B9A\u3055\u308C\u307E\u3059\u3002`%` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002`_` \u306F\u4F7F\u7528\u3067\u304D\u307E\u3059\u304C\u30011\u6587\u5B57\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u3067\u306F\u306A\u304Fkintone\u691C\u7D22\u4E0A\u306E\u5358\u8A9E\u69CB\u6210\u6587\u5B57\u3067\u3059\u3002\n- DML \u3067\u306F\u6B21\u306E\u89AA\u30EC\u30B3\u30FC\u30C9 DML \u306E WHERE \u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF08v3.10.0\uFF09: **\u901A\u5E38\uFF08APPLY \u306A\u3057\uFF09\u306E\u89AA `UPDATE` / `DELETE`**\u3001\u304A\u3088\u3073 **APPLY \u8907\u6570\u89AA `UPDATE` \u306E\u89AA WHERE**\u3002\u524D\u8005\u306F WHERE \u5168\u4F53\u3092 kintone \u30AF\u30A8\u30EA\u3078 exact \u5909\u63DB\u3057\u3066\u5BFE\u8C61\u3092\u89E3\u6C7A\u3059\u308B\u305F\u3081 `OR` / `NOT` \u914D\u4E0B\u306E KLIKE \u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u5F8C\u8005\u306F\u5B89\u5168\u30D7\u30EC\u30D5\u30A3\u30EB\u30BF\uFF0B\u6B8B\u4F59\u8A55\u4FA1\u306E\u305F\u3081\u3001`OR` / `NOT` \u914D\u4E0B\u306A\u3069 native query \u306B\u5B8C\u5168\u9069\u7528\u3067\u304D\u306A\u3044 KLIKE \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002**\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB `UPDATE` / `DELETE`\u30FB`REORDER`\u30FB`INSERT` / `INSERT ... SELECT`\u30FB`UPSERT` / `UPSERT ... SELECT`\u30FB\u72EC\u7ACB\u3057\u305F `VALIDATE` \u3067\u306F\u5F15\u304D\u7D9A\u304D\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093**\uFF08JS \u8A55\u4FA1\u7D4C\u8DEF\u306E\u305F\u3081\uFF09\u3002SQL `LIKE` / `NOT LIKE` \u306F\u901A\u5E38 DML \u3067\u306F\u5F15\u304D\u7D9A\u304D\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08JS \u8A55\u4FA1\u304C\u5FC5\u8981\uFF09\u3002\n- \u5229\u7528\u53EF\u80FD\u306A\u30D5\u30A3\u30FC\u30EB\u30C9\u306F[kintone\u516C\u5F0F\u306E\u6F14\u7B97\u5B50\u5BFE\u5FDC\u8868](https://cybozu.dev/ja/kintone/docs/overview/query/)\u306B\u5F93\u3044\u307E\u3059\u3002\u6587\u5B57\u52171\u884C\u30FB\u8907\u6570\u884C\u3001\u30EA\u30C3\u30C1\u30A8\u30C7\u30A3\u30BF\u30FC\u3001\u30EA\u30F3\u30AF\u3001\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u306A\u3069\u304C\u5BFE\u8C61\u3067\u3059\u3002\u975E\u5BFE\u5FDC\u30D5\u30A3\u30FC\u30EB\u30C9\u306Fkintone API\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n- kintone\u306F\u30AD\u30FC\u30EF\u30FC\u30C9\u4E00\u81F4\u304C10\u4E07\u4EF6\u306B\u9054\u3059\u308B\u3068\u691C\u7D22\u3092\u6253\u3061\u5207\u308A\u307E\u3059\u3002**CLI / MCP / \u30D7\u30E9\u30B0\u30A4\u30F3\u3059\u3079\u3066\u3067\u6253\u3061\u5207\u308A\u3092\u691C\u51FA\u3057\u307E\u3059**\uFF08\u30D7\u30E9\u30B0\u30A4\u30F3\u306F v3.10.0 \u3067 raw fetch \u306B\u3088\u308A\u30EC\u30B9\u30DD\u30F3\u30B9\u30D8\u30C3\u30C0\u30FC `X-Cybozu-Warning` \u3092\u8AAD\u307F\u53D6\u308A\u307E\u3059\uFF09\u3002\u691C\u7D22\u6253\u3061\u5207\u308A\u5F8C\u306E\u6319\u52D5\u306F\u3001\u5229\u7528\u9762\u3068\u30AF\u30A8\u30EA\u306E\u5F62\u3067\u7570\u306A\u308A\u307E\u3059\u3002\n\n | \u5229\u7528\u9762 | `LEFT` / `RIGHT JOIN` \u3092\u542B\u3080\u30AF\u30A8\u30EA | `INNER JOIN` / \u5358\u4E00\u8868 |\n |---|---|---|\n | \u30D7\u30E9\u30B0\u30A4\u30F3 / CLI / MCP | `SearchAbortedError`\uFF08B79 \u304B\u3089\uFF09 | \u8B66\u544A\uFF0B\u90E8\u5206\u7D50\u679C |\n | engine \u30E9\u30A4\u30D6\u30E9\u30EA | `SEARCH_ABORTED` hard error\uFF08\u5F93\u6765\u3069\u304A\u308A\uFF09 | `SEARCH_ABORTED` hard error\uFF08\u5F93\u6765\u3069\u304A\u308A\uFF09 |\n\n \u5916\u90E8\u7D50\u5408\u3067\u306F\u3001\u7D50\u5408\u76F8\u624B\u3092\u53D6\u5F97\u3067\u304D\u306A\u304B\u3063\u305F\u3060\u3051\u306E\u884C\u304C null \u62E1\u5F35\u3055\u308C\u3001**\u300C\u8A72\u5F53\u306A\u3057\u300D\u3068\u3044\u3046\u8AA4\u3063\u305F\u5024**\u306B\u306A\u308A\u5F97\u307E\u3059\u3002\u5358\u306A\u308B\u884C\u306E\u6B20\u843D\u3067\u306F\u306A\u304F\u3001\u8FD4\u3063\u305F\u884C\u306E\u5024\u81EA\u4F53\u304C\u8AA4\u308B\u305F\u3081\u3001\u30D7\u30E9\u30B0\u30A4\u30F3 / CLI / MCP \u3067\u3082 B79 \u304B\u3089 fail-closed \u306B\u5909\u66F4\u3057\u307E\u3057\u305F\u3002\u5F93\u6765\u6210\u529F\u3057\u3066\u898B\u3048\u305F\u8A72\u5F53\u30AF\u30A8\u30EA\u306F\u5B9F\u969B\u306B\u306F\u8AA4\u3063\u305F\u5024\u3092\u8FD4\u3057\u3066\u3044\u305F\u305F\u3081\u3001\u30A8\u30E9\u30FC\u5316\u306B\u3088\u3063\u3066\u6B63\u3057\u3044\u7D50\u679C\u304C\u5931\u308F\u308C\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002`WHERE` \u3067\u5BFE\u8C61\u3092\u7D5E\u308B\u304B\u3001\u610F\u5473\u3092\u4FDD\u3066\u308B\u5834\u5408\u306F `INNER JOIN` \u3078\u7F6E\u304D\u63DB\u3048\u3066\u304F\u3060\u3055\u3044\u3002\n\n engine \u30E9\u30A4\u30D6\u30E9\u30EA\u306F B79 \u306E\u5909\u66F4\u5BFE\u8C61\u3067\u306F\u306A\u304F\u3001\u5F93\u6765\u304B\u3089\u30AF\u30A8\u30EA\u5F62\u3092\u554F\u308F\u305A\u5E38\u306B hard error \u3067\u3059\u3002\u30D7\u30ED\u30B0\u30E9\u30E0 API \u3067\u306F\u90E8\u5206\u7D50\u679C\u304C\u9ED9\u3063\u3066\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30ED\u30B8\u30C3\u30AF\u3078\u6D41\u308C\u8FBC\u3080\u307B\u3046\u304C\u5371\u967A\u306A\u305F\u3081\u3001\u610F\u56F3\u7684\u306B\u53B3\u683C\u306A\u5951\u7D04\u3068\u3057\u3066\u3044\u307E\u3059\u3002\u8AAD\u307F\u53D6\u308A\u7D50\u679C\u3092\u66F8\u304D\u8FBC\u307F\u3084\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5B9F\u4F53\u5316\u306B\u4F7F\u3046\u5834\u5408\u3001\u304A\u3088\u3073 KLIKE \u3092\u542B\u3080\u89AA DML \u306E\u5BFE\u8C61\u89E3\u6C7A\u3067\u3082\u3001\u4E0D\u5B8C\u5168\u306A\u5BFE\u8C61\u96C6\u5408\u3067\u5B9F\u884C\u3057\u306A\u3044\u3088\u3046\u5F93\u6765\u3069\u304A\u308A `SearchAbortedError` \u3067\u30A8\u30E9\u30FC\u7D42\u4E86\u3057\u3001\u66F8\u304D\u8FBC\u307F0\u4EF6\u3067 fail-closed \u3068\u3057\u307E\u3059\u3002\n- engine \u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u9759\u7684\u691C\u8A3C\u3067 `KLIKE` / `NOT KLIKE` \u306E\u4F7F\u7528\u4F4D\u7F6E\u3084\u691C\u7D22\u8A9E\u304C\u4E0D\u6B63\u306A\u5834\u5408\u3001\u30A8\u30E9\u30FC `code` \u306F\u5F93\u6765\u3069\u304A\u308A `PARSE_ERROR` \u306E\u307E\u307E\u3001`message` \u306B\u5177\u4F53\u7684\u306A reason\uFF08\u4F8B: `KLIKE / NOT KLIKE \u306F SELECT \u306E WHERE \u53E5\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059`\uFF09\u3092\u8FD4\u3057\u307E\u3059\u3002B80 \u3088\u308A\u3001\u5F93\u6765\u306E\u4E00\u5F8B\u306A `SQL statement could not be parsed` \u3067\u306F\u306A\u304F\u3001\u30D7\u30E9\u30B0\u30A4\u30F3 / CLI / MCP \u3068\u540C\u3058 reason \u3067\u539F\u56E0\u3092\u7279\u5B9A\u3067\u304D\u307E\u3059\u3002`code` \u3067\u5206\u5C90\u3057\u3066\u3044\u308B\u5229\u7528\u8005\u30B3\u30FC\u30C9\u3078\u306E\u5F71\u97FF\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n- `KLIKE` \u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u53C2\u7167\u3059\u308B\u3068\u304D\u306F `` `KLIKE` `` \u3068\u8A18\u8FF0\u3057\u307E\u3059\u3002\n\n### IN / NOT IN\uFF08\u5024\u30EA\u30B9\u30C8\u306B\u3088\u308B\u4E00\u81F4\u30FB\u9664\u5916\uFF09\n\n`IN` \u306F\u5217\u6319\u3057\u305F\u5024\u306E**\u3044\u305A\u308C\u304B\u306B\u4E00\u81F4**\u3059\u308B\u884C\u3001`NOT IN` \u306F**\u3044\u305A\u308C\u306B\u3082\u4E00\u81F4\u3057\u306A\u3044**\u884C\u3092\u9078\u3073\u307E\u3059\u3002\n\n```sql\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u9032\u884C\u4E2D', '\u5B8C\u4E86', '\u30EC\u30D3\u30E5\u30FC\u4E2D')\nWHERE \u533A\u5206 IN (1, 2, 3)\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 NOT IN ('\u30AD\u30E3\u30F3\u30BB\u30EB', '\u5374\u4E0B')\n```\n\n**IN \u30EA\u30B9\u30C8\u306E\u5024\uFF08\u69CB\u6587\uFF09**\n\n- \u5358\u4E00\u5F15\u7528\u7B26\u306E\u6587\u5B57\u5217 `'...'`\u30FB\u6570\u5024\u30FB\u30D0\u30C3\u30C1\u5909\u6570 `@\u540D\u524D` \u3092\u6307\u5B9A\u3067\u304D\u3001**1 \u8981\u7D20\u4EE5\u4E0A\u304C\u5FC5\u9808**\u3067\u3059\u3002\u6587\u5B57\u5217\u306F\u30C0\u30D6\u30EB\u30AF\u30A9\u30FC\u30C8\u3067\u306A\u304F\u5358\u4E00\u5F15\u7528\u7B26\u3067\u3059\uFF08`IN (\"A\")` \u306F\u69CB\u6587\u30A8\u30E9\u30FC\uFF09\u3002\n- \u4F8B\u5916\u3068\u3057\u3066\u3001`CREATOR` / `MODIFIER` / `USER_SELECT` \u3067\u306F singleton \u306E\n `LOGINUSER()`\u3001`ORGANIZATION_SELECT` \u3067\u306F singleton \u306E `PRIMARY_ORGANIZATION()` \u3092\n `in` / `not in` \u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u6587\u5B57\u5217\u30FB\u6570\u5024\u3068\u306E\u6DF7\u5728 list\u3001\u8907\u6570\u500B\u306E\u95A2\u6570\u3001\n `TODAY()` / `NOW()` / \u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u306F IN list \u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\n- \u8CA0\u6570\u30EA\u30C6\u30E9\u30EB\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08`IN (-1, -2)`\uFF09\u3002\n- **`IN ()`\uFF080 \u8981\u7D20\uFF09\u306F\u66F8\u3051\u307E\u305B\u3093**\uFF08ParseError\uFF09\u3002\u300C\u7A7A\uFF0F\u672A\u9078\u629E\u300D\u3092\u63A2\u3059\u306E\u306F `IN ('')` \u3067\u3059\uFF08\u5F8C\u8FF0\uFF09\u3002\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u6E21\u3059 `IN (SELECT ...)` \u306F\u5225\u9805\u3067\u3059\uFF08\u5F8C\u8FF0\uFF09\u3002\n\n**\u4E00\u81F4\u306E\u610F\u5473\u8AD6\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3067\u7570\u306A\u308A\u307E\u3059**\n\n- **\u5358\u4E00\u5024\u30D5\u30A3\u30FC\u30EB\u30C9**\uFF08\u30C6\u30AD\u30B9\u30C8\u30FB\u6570\u5024\u30FB\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u30FB\u30E9\u30B8\u30AA\u30FB\u65E5\u4ED8\u30FB\u30B9\u30C6\u30FC\u30BF\u30B9\u7B49\uFF09\uFF1D**\u30B9\u30AB\u30E9\u30FC\u7B49\u5024**\uFF08`\u5217 = \u50241 OR \u5217 = \u50242 \u2026`\uFF09\u3002**\u6A19\u6E96SQL\u3068\u540C\u3058**\u3067\u3059\u3002\n- **\u8907\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9**\uFF08\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30FB\u8907\u6570\u9078\u629E\uFF09\uFF1D**\u9078\u629E\u96C6\u5408\u304C\u5217\u6319\u5024\u306E\u5C11\u306A\u304F\u3068\u3082 1 \u3064\u3092\u542B\u3080**\uFF08\u96C6\u5408\u306E overlap\uFF09\u3002\u6A19\u6E96SQL \u306E\u30B9\u30AB\u30E9\u30FC `IN` \u3068\u306F\u7570\u306A\u308A\u307E\u3059\uFF08\u5F8C\u8FF0\u306E\u300C\u6A19\u6E96SQL\u3068\u306E\u9055\u3044\u300D\uFF09\u3002\n- \u30E6\u30FC\u30B6\u30FC\u30FB\u7D44\u7E54\u30FB\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u30FB\u4F5C\u696D\u8005\u3082\u8907\u6570\u5024\u306A\u306E\u3067\u3001`code` \u306E\u96C6\u5408 overlap\uFF08\u3044\u305A\u308C\u304B\u3092\u542B\u3080\uFF09\u3067\u5224\u5B9A\u3057\u307E\u3059\u3002\u4F5C\u6210\u8005\u30FB\u66F4\u65B0\u8005\u306F\u5358\u4E00\u5024\u3067 `code` \u306E\u30B9\u30AB\u30E9\u30FC\u7B49\u5024\u3067\u3059\uFF08\u3044\u305A\u308C\u3082\u8868\u793A\u540D\u3067\u306F\u306A\u304F `code` \u3067\u6BD4\u8F03\uFF09\u3002\n- \u578B\u60C5\u5831\u3092\u53D6\u5F97\u3067\u304D\u306A\u3044\u5024\u3001\u578B\u3068\u5024\u306E\u5F62\u304C\u4E00\u81F4\u3057\u306A\u3044\u5834\u5408\u306F\u6587\u5B57\u5217\u6BD4\u8F03\u3092\u7DAD\u6301\u3057\u307E\u3059\u3002\n- \u9078\u629E\u7CFB\u306E\u7A7A\uFF0F\u672A\u8A2D\u5B9A\u30BB\u30EB\u306F `IN ('')` \u306B\u4E00\u81F4\u3057\u3001`NOT IN ('')` \u3067\u9664\u5916\u3055\u308C\u307E\u3059\uFF08\u7A7A\u30B9\u30AB\u30E9\u30FC\u5024\u306E\u6295\u5F71\u3082\u7A7A\u6587\u5B57\u3067\u8FD4\u3057\u307E\u3059\uFF09\u3002\n\n\u3053\u306E\u898F\u5247\u306F\u30EA\u30C6\u30E9\u30EB\uFF0F\u30D0\u30C3\u30C1\u5909\u6570\u306E IN \u30EA\u30B9\u30C8\u30FB`IN (SELECT ...)`\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E JavaScript \u8A55\u4FA1\u3059\u3079\u3066\u306B\u9069\u7528\u3055\u308C\u307E\u3059\u3002**\u5B9F\u5728\u3059\u308B\u5024\u306B\u5BFE\u3059\u308B\u4E00\u81F4\u7D50\u679C\u306F\u3001REST \u62BC\u3057\u4E0B\u3052\u3067\u3082 JS \u8A55\u4FA1\u3067\u3082\u540C\u3058**\u3067\u3059\uFF08\u5B9A\u7FA9\u5916\u306E\u9078\u629E\u80A2\u5024\u3060\u3051\u306F\u3001\u62BC\u3057\u4E0B\u3052\u7D4C\u8DEF\u3067\u5B9F\u884C\u30A8\u30E9\u30FC\u306B\u306A\u308A\u5F97\u307E\u3059\u30FB\u4E0B\u8A18\uFF09\u3002\n\n```sql\n-- \u7A7A\uFF0F\u672A\u8A2D\u5B9A\u306E\u9078\u629E\u30BB\u30EB\u3092\u62BD\u51FA\uFF08\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u306F = '' \u304C\u4F7F\u3048\u306A\u3044\u305F\u3081 IN ('') \u3092\u4F7F\u3046\uFF09\nWHERE \u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3 IN ('') -- \u672A\u9078\u629E\u306E\u30EC\u30B3\u30FC\u30C9\nWHERE \u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3 NOT IN ('') -- \u9078\u629E\u6E08\u307F\u306E\u30EC\u30B3\u30FC\u30C9\nWHERE \u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3 IN ('', '\u5BFE\u5FDC\u4E2D') -- \u672A\u9078\u629E \u307E\u305F\u306F\u300C\u5BFE\u5FDC\u4E2D\u300D\n```\n\n> **\u6A19\u6E96SQL\u3068\u306E\u9055\u3044\uFF08\u8907\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u306E `IN`\uFF09** \n> \u6A19\u6E96SQL\u306E `x IN ('A','B')` \u306F `x = 'A' OR x = 'B'` \u3068\u3044\u3046\u30B9\u30AB\u30E9\u30FC\u7B49\u5024\u3067\u3001**`x` \u3092 1 \u3064\u306E\u5024**\u3068\u3057\u3066 `'A'`\u30FB`'B'` \u3068\u7A81\u304D\u5408\u308F\u305B\u307E\u3059\uFF08\u8981\u7D20\u3054\u3068\u306B\u306F\u7167\u5408\u3057\u307E\u305B\u3093\uFF09\u3002\u6A19\u6E96SQL\u306F 1 \u30D5\u30A3\u30FC\u30EB\u30C9\uFF1D\u30B9\u30AB\u30E9\u30FC\u304C\u524D\u63D0\u3067\u591A\u5024\u5217\u3092\u6301\u305F\u305A\u3001\u591A\u5024\u306F\u5225\u884C\u306B\u6B63\u898F\u5316\u3057\u3066 `EXISTS` \u306A\u3069\u3067\u8868\u3059\u305F\u3081\u3067\u3059\u3002 \n> \u4E00\u65B9 kintone \u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30FB\u8907\u6570\u9078\u629E\u306F 1 \u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u8907\u6570\u5024\u306A\u306E\u3067\u3001kSQL \u306F kintone \u30CD\u30A4\u30C6\u30A3\u30D6\u306E `in` \u306B\u5408\u308F\u305B\u3001**\u96C6\u5408\u3092\u8981\u7D20\u306B\u958B\u3044\u3066\u300C\u5217\u6319\u5024\u306E\u5C11\u306A\u304F\u3068\u3082 1 \u3064\u3092\u542B\u3080\u304B\u300D**\uFF08\u96C6\u5408\u306E overlap\uFF09\u3067\u5224\u5B9A\u3057\u307E\u3059\u3002\u3053\u308C\u306B\u3088\u308A `['A']` \u3082 `['A','B']` \u3082 `IN ('A','B')` \u306B**\u4E00\u81F4\u3057\u307E\u3059**\u3002\u6A19\u6E96SQL\u3067\u540C\u7FA9\u3092\u66F8\u304F\u306A\u3089\u4E2D\u9593\u30C6\u30FC\u30D6\u30EB\u306E `EXISTS`\uFF08\u30BB\u30DF\u7D50\u5408\uFF09\u3084\u914D\u5217 overlap\uFF08`checkbox && ARRAY[...]`\uFF09\u306B\u76F8\u5F53\u3057\u307E\u3059\u3002\u5B9F\u5728\u3059\u308B\u5024\u306B\u5BFE\u3059\u308B\u4E00\u81F4\u7D50\u679C\u306F REST \u62BC\u3057\u4E0B\u3052\u3067\u3082 JS \u8A55\u4FA1\u3067\u3082\u540C\u3058\u3067\u3059\uFF08\u5358\u4E00\u9078\u629E\u30FB\u30C6\u30AD\u30B9\u30C8\u30FB\u6570\u5024\u306F\u5F93\u6765\u3069\u304A\u308A\u30B9\u30AB\u30E9\u30FC\u7B49\u5024\u3067\u3001\u6A19\u6E96SQL\u3068\u540C\u3058\uFF09\u3002\n\n`\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9`\uFF08\u9078\u629E\u80A2 A/B/C\uFF09\u306B\u5BFE\u3059\u308B\u5224\u5B9A\u4F8B:\n\n| \u30D5\u30A3\u30FC\u30EB\u30C9\u5024 | `IN ('A','B')` | `IN ('')` | `NOT IN ('')` |\n|---|:---:|:---:|:---:|\n| `[]`\uFF08\u672A\u9078\u629E\uFF09 | \u2717 | \u2713 | \u2717 |\n| `['A']` | \u2713 | \u2717 | \u2713 |\n| `['C']` | \u2717 | \u2717 | \u2713 |\n| `['A','C']` | \u2713 | \u2717 | \u2713 |\n| `['A','B','C']` | \u2713 | \u2717 | \u2713 |\n\n- **`IN ('\u5217\u6319\u5024', ...)`**\uFF1A\u5217\u6319\u5024\u306E\u3044\u305A\u308C\u304B\u3092**\u542B\u3080**\u884C\u306B\u4E00\u81F4\u3057\u307E\u3059\u3002`['A','C']` \u306F\u30EA\u30B9\u30C8\u5916\u306E `C` \u3092\u542B\u3093\u3067\u3044\u3066\u3082 `A` \u304C\u3042\u308C\u3070\u4E00\u81F4\u3067\u3001\u90E8\u5206\u96C6\u5408\u3084\u5B8C\u5168\u4E00\u81F4\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n- **`IN ('')`\uFF08\u7A7A\u6587\u5B57 1 \u8981\u7D20\uFF09\uFF1D\u672A\u9078\u629E\uFF08\u7A7A\uFF09\u306E\u884C\u3060\u3051\u306B\u4E00\u81F4**\u3057\u307E\u3059\u3002`= ''` \u304C\u4F7F\u3048\u306A\u3044\u9078\u629E\u7CFB\uFF08\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u7B49\uFF09\u306E\u300C\u7A7A\u300D\u5224\u5B9A\u306B\u3082\u4F7F\u3044\u307E\u3059\u3002\u7A7A\u6587\u5B57\u3092\u542B\u3081\u308B `IN ('', 'A')` \u306F\u300C\u672A\u9078\u629E \u307E\u305F\u306F A \u3092\u542B\u3080\u300D\u3067\u3059\u3002\n- **`NOT IN ('')`\uFF1D\u9078\u629E\u304C 1 \u3064\u4EE5\u4E0A\u3042\u308B\u884C**\uFF08`[]` \u4EE5\u5916\uFF09\u306B\u4E00\u81F4\uFF1D`IN ('')` \u306E\u88DC\u96C6\u5408\u3067\u3059\u3002\n- **`NOT IN ('A','B')`\uFF1DA \u3082 B \u3082\u542B\u307E\u306A\u3044\u884C**\u306B\u4E00\u81F4\u3057\u307E\u3059\uFF08\u4E0A\u8868\u306A\u3089 `[]` \u3068 `['C']`\uFF09\u3002\n\nFULL_SCAN \u306E `WHERE` \u3067\u306F\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3068\u9078\u629E\u80A2\u306E\u5B9F\u5728\u3092\u78BA\u8A8D\u3067\u304D\u305F\n`DROP_DOWN`\uFF0F`RADIO_BUTTON`\uFF0F`CHECK_BOX`\uFF0F`MULTI_SELECT` \u306E `IN`\uFF0F`NOT IN`\n\uFF08\u7A7A\u3067\u306A\u3044\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u306E\u307F\uFF09\u3092 kintone \u306E\u4E8B\u524D\u7D5E\u308A\u8FBC\u307F\u306B\u3082\u4F7F\u7528\u3057\u307E\u3059\u3002\u7D50\u679C\u306F\u53D6\u5F97\u5F8C\u306B\u540C\u3058\u578B\u4ED8\u304D\u898F\u5247\u3067\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\n\u5B58\u5728\u3057\u306A\u3044\u9078\u629E\u80A2\u3001\u7A7A\u6587\u5B57\u3001\u578B\u60C5\u5831\u30FB\u9078\u629E\u80A2\u60C5\u5831\u3092\u53D6\u5F97\u3067\u304D\u306A\u3044\u5834\u5408\u306F\u62BC\u3057\u4E0B\u3052\u305A\u3001JavaScript \u8A55\u4FA1\u3060\u3051\u3092\u884C\u3044\u307E\u3059\u3002\n\u30E6\u30FC\u30B6\u30FC\u30FB\u7D44\u7E54\u30FB\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u306F\u3053\u306E\u6700\u9069\u5316\u306E\u5BFE\u8C61\u5916\u3067\u3059\u3002\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406\u304C\u6709\u52B9\u3067\u3001\u5B9F\u884C\u30E6\u30FC\u30B6\u30FC\u306E\u8868\u793A\u8A00\u8A9E\u306B\u304A\u3051\u308B\u72B6\u614B\u540D\u306E\u5B9F\u5728\u3092\u78BA\u8A8D\u3067\u304D\u305F\u30B9\u30C6\u30FC\u30BF\u30B9\u306E `IN`\uFF0F`NOT IN` \u3082\u4E8B\u524D\u7D5E\u308A\u8FBC\u307F\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406\u304C\u7121\u52B9\u3001\u72B6\u614B\u540D\u304C\u975E\u5B9F\u5728\u3001\u307E\u305F\u306F\u7A7A\u6587\u5B57\u306E\u5834\u5408\u306F\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\u3002\n\n> **\u9078\u629E\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u306E `=` \u3068\u53D6\u5F97\u4EF6\u6570:** \u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\uFF0F\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\uFF0F\n> \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\uFF0F\u8907\u6570\u9078\u629E\u306B\u5BFE\u3059\u308B `=` \u306F\u3001kintone \u306E\u30AF\u30A8\u30EA\u6587\u6CD5\u304C\n> `in` / `not in` \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u308B\u305F\u3081\u3001records API \u3078\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\u3002\n> \u7D50\u679C\u306F\u53D6\u5F97\u5F8C\u306E\u8A55\u4FA1\u3067\u6B63\u3057\u304F\u306A\u308A\u307E\u3059\u304C\u3001\u53D6\u5F97\u5019\u88DC\u304C\u5927\u304D\u304F\u5897\u3048\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\n> \u540C\u3058\u6761\u4EF6\u3092\u8868\u305B\u308B\u3068\u304D\u306F `IN (...)` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n> **\u9078\u629E\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u300C\u5B9A\u7FA9\u306B\u7121\u3044\u9078\u629E\u80A2\u5024\u300D\u3092\u6E21\u3057\u305F\u3068\u304D\u306E\u6CE8\u610F\uFF08\u91CD\u8981\uFF09** \n> `DROP_DOWN`\uFF0F`RADIO_BUTTON`\uFF0F`CHECK_BOX`\uFF0F`MULTI_SELECT`\uFF0F\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u3001\u305D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u9078\u629E\u80A2\u3068\u3057\u3066**\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u306A\u3044\u5024**\u3092 `IN`\uFF0F`NOT IN` \u3078\u6E21\u3059\u3068\u3001\u305D\u306E `IN` \u304C **kintone REST \u3078\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u304B\u5426\u304B**\u3067\u6319\u52D5\u304C\u5206\u304B\u308C\u307E\u3059\uFF08\u5B9F\u884C\u30E2\u30FC\u30C9\u304C SIMPLE \u304B FULL_SCAN \u304B\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n> - **`WHERE` \u5168\u4F53\u304C REST \u306B\u5B8C\u5168\u62BC\u3057\u4E0B\u3052\u3055\u308C\u308B\u5834\u5408**\uFF08\u7D14\u7C8B\u306A SIMPLE \u306E\u307B\u304B\u3001`DISTINCT`\uFF0F`GROUP BY`\uFF0F`ORDER BY` \u306A\u3069\u3067\u5B9F\u884C\u30E2\u30FC\u30C9\u304C FULL_SCAN \u306B\u306A\u3063\u3066\u3082\u3001`WHERE` \u81EA\u4F53\u306F\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u3068\u304D\uFF09: \u5B9A\u7FA9\u5916\u5024\u304C kintone \u306B\u6E21\u308A\u3001`GAIA_IQ10`\uFF08\u9805\u76EE\u306B\u300C\u5024\u300D\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\uFF09\u3067**\u5B9F\u884C\u30A8\u30E9\u30FC**\u306B\u306A\u308A\u307E\u3059\u3002\n> - **`WHERE` \u306B JavaScript \u8A55\u4FA1\u304C\u5FC5\u9808\u306A\u90E8\u5206\u304C\u3042\u308B\u5834\u5408**\uFF08\u95A2\u6570\u30FB\u7B97\u8853\u5F0F\u30FB`LIKE`\u30FB`IN (SELECT ...)` \u306A\u3069\u306E\u6B8B\u4F59\u304C\u3042\u308A\u3001\u5B89\u5168\u30EA\u30FC\u30D5\u3060\u3051\u3092\u4E8B\u524D\u7D5E\u308A\u8FBC\u307F\u3059\u308B\u7D4C\u8DEF\uFF09\u3084\u3001**`CASE WHEN` \u306A\u3069\u306E\u6761\u4EF6**\uFF08\u2192 \xA74\uFF09: \u5B9A\u7FA9\u5916\u5024\u30FB\u7A7A\u6587\u5B57\u3092\u542B\u3080\u9078\u629E\u7CFB `IN` \u306F\u62BC\u3057\u4E0B\u3052\u305A JS \u3067\u8A55\u4FA1\u3059\u308B\u305F\u3081\u3001**\u30A8\u30E9\u30FC\u306B\u306A\u3089\u305A\u5358\u306B\u4E00\u81F4 0 \u4EF6**\uFF08`NOT IN` \u306F\u5168\u4E00\u81F4\uFF09\u306B\u306A\u308A\u307E\u3059\u3002\n>\n> \u30C6\u30AD\u30B9\u30C8\u30FB\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u5B9A\u7FA9\u9078\u629E\u80A2\u306E\u6982\u5FF5\u304C\u7121\u3044\u305F\u3081\u3001\u672A\u4E00\u81F4\u3067\u3082\u5E38\u306B 0 \u4EF6\uFF08\u30A8\u30E9\u30FC\u306A\u3057\uFF09\u3067\u3059\u3002**\u30D0\u30C3\u30C1\u5909\u6570**\u306F\u7F6E\u63DB\u5F8C\u306B\u901A\u5E38\u306E `IN` \u30EA\u30B9\u30C8\u306B\u306A\u308B\u305F\u3081\u3001\u4E0A\u306E\u300C\u5B8C\u5168\u62BC\u3057\u4E0B\u3052\u300D\u7D4C\u8DEF\u3067\u306F\u5B9A\u7FA9\u5916\u5024\u304C\u6DF7\u3058\u308B\u3068 `GAIA_IQ10` \u306B\u306A\u308A\u5F97\u307E\u3059\uFF08\u4E8B\u524D\u306B\u6709\u52B9\u5024\u3078\u7D5E\u3063\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\u4E00\u65B9 **`IN (SELECT ...)` \u306F\u5E38\u306B JavaScript \u8A55\u4FA1**\uFF08REST \u3078\u6E21\u3055\u306A\u3044\uFF09\u306A\u306E\u3067\u3001\u3053\u306E\u7D4C\u8DEF\u3067\u306F `GAIA_IQ10` \u306B\u306F\u306A\u308A\u307E\u305B\u3093\u3002\n\n### IN (SELECT ...) / NOT IN (SELECT ...)\uFF08\u30B5\u30D6\u30AF\u30A8\u30EA\uFF09\n\n\u5225\u30A2\u30D7\u30EA\u306E\u691C\u7D22\u7D50\u679C\u3092 IN \u30EA\u30B9\u30C8\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- APP88 \u304B\u3089\u300C\u30E9\u30F3\u30AF A\u300D\u306E\u9867\u5BA2\u540D\u4E00\u89A7\u3092\u53D6\u5F97\u3057\u3066\u30D5\u30A3\u30EB\u30BF\nSELECT * FROM APP88\nWHERE \u9867\u5BA2\u540D IN (SELECT \u9867\u5BA2\u540D FROM APP89 WHERE \u9867\u5BA2\u30E9\u30F3\u30AF = 'A')\n\n-- \u9664\u5916\nSELECT * FROM APP88\nWHERE \u9867\u5BA2\u540D NOT IN (SELECT \u9867\u5BA2\u540D FROM APP89 WHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u505C\u6B62')\n```\n\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u306F SELECT 1\u5217\u76EE\uFF08\u307E\u305F\u306F `SELECT \u30D5\u30A3\u30FC\u30EB\u30C9\u540D`\uFF09\u306E\u5024\u30BB\u30C3\u30C8\u3092\u8FD4\u3057\u307E\u3059\n- \u81EA\u52D5\u7684\u306B FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u81EA\u4F53\u3082 SIMPLE / FULL_SCAN \u3092\u81EA\u52D5\u5224\u5B9A\u3057\u307E\u3059\n\n### EXISTS / NOT EXISTS\uFF08\u30B5\u30D6\u30AF\u30A8\u30EA\uFF09\n\n\u30B5\u30D6\u30AF\u30A8\u30EA\u304C 1 \u4EF6\u4EE5\u4E0A\u8FD4\u3059\u304B\u3069\u3046\u304B\u3067\u6761\u4EF6\u3092\u5224\u5B9A\u3057\u307E\u3059\uFF08\u975E\u76F8\u95A2\u306E\u307F\uFF09\u3002\n\n```sql\n-- \u30B5\u30D6\u30AF\u30A8\u30EA\u304C 1\u4EF6\u4EE5\u4E0A\u3042\u308C\u3070\u5168\u884C\u3092\u8FD4\u3059\nSELECT * FROM APP88\nWHERE EXISTS (SELECT $id FROM APP89 WHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u627F\u8A8D\u6E08\u307F')\n\n-- \u30B5\u30D6\u30AF\u30A8\u30EA\u304C 0\u4EF6\u306A\u3089\u5168\u884C\u3092\u8FD4\u3059\nSELECT * FROM APP88\nWHERE NOT EXISTS (SELECT $id FROM APP89 WHERE \u30D5\u30E9\u30B0 = 'NG')\n\n-- AND / OR \u3068\u7D44\u307F\u5408\u308F\u305B\nSELECT \u9867\u5BA2\u540D, \u91D1\u984D FROM APP88\nWHERE \u91D1\u984D > 10000\n AND EXISTS (SELECT $id FROM APP89 WHERE \u627F\u8A8D\u30D5\u30E9\u30B0 = '1')\n```\n\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u306F 1 \u56DE\u3060\u3051\u5B9F\u884C\u3055\u308C\u3001\u5168\u884C\u306B\u540C\u3058\u7D50\u679C\uFF08\u771F/\u507D\uFF09\u304C\u9069\u7528\u3055\u308C\u307E\u3059\n- **\u76F8\u95A2\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u975E\u5BFE\u5FDC**\uFF08\u5916\u5074\u30C6\u30FC\u30D6\u30EB\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u53C2\u7167\u4E0D\u53EF\uFF09\n- \u81EA\u52D5\u7684\u306B FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\n\n### \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\uFF08WHERE \u53F3\u8FBA\uFF09\n\n\u6BD4\u8F03\u6F14\u7B97\u5B50\u306E\u53F3\u8FBA\u306B 1 \u884C 1 \u5217\u3092\u8FD4\u3059\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- \u5168\u4F53\u306E\u5E73\u5747\u3068\u6BD4\u8F03\nSELECT * FROM APP100\nWHERE \u91D1\u984D > (SELECT AVG(\u91D1\u984D) FROM APP100)\n\n-- \u5225\u30A2\u30D7\u30EA\u306E\u6700\u5927\u5024\u3068\u6BD4\u8F03\nSELECT * FROM APP100\nWHERE \u91D1\u984D >= (SELECT MAX(\u4E0A\u9650\u91D1\u984D) FROM APP200 WHERE \u533A\u5206 = '\u6A19\u6E96')\n```\n\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u306F 1 \u884C 1 \u5217\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF080 \u884C\u307E\u305F\u306F 2 \u884C\u4EE5\u4E0A\u306F\u30A8\u30E9\u30FC\uFF09\n- GROUP BY \u306A\u3057\u306E\u96C6\u8A08\u30B5\u30D6\u30AF\u30A8\u30EA\uFF08`AVG(...)` \u7B49\uFF09\u306F\u5BFE\u8C61 0 \u4EF6\u3067\u3082 1 \u884C\u3092\u8FD4\u3059\u305F\u3081\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u305B\u3093\u3002**\u623B\u308A\u5024\u306F\u95A2\u6570\u3054\u3068\u306B\u9055\u3044\u307E\u3059**\uFF08\u2192 [\xA78\u300C0 \u4EF6\u6642\u306E\u6319\u52D5\u300D](#0-\u4EF6\u6642\u306E\u6319\u52D5)\uFF09\n- **\u76F8\u95A2\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u975E\u5BFE\u5FDC**\uFF08\u5916\u5074\u30C6\u30FC\u30D6\u30EB\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u53C2\u7167\u4E0D\u53EF\uFF09\n- \u81EA\u52D5\u7684\u306B FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\n\n### BETWEEN\uFF08\u7BC4\u56F2\u6307\u5B9A\uFF09\n\n`BETWEEN a AND b` \u306F `>= a AND <= b` \u3068\u540C\u7B49\u3067\u3059\u3002\n\n```sql\nWHERE \u91D1\u984D BETWEEN 10000 AND 50000\nWHERE \u4F5C\u6210\u65E5\u6642 BETWEEN '2024-01-01' AND '2024-12-31'\n```\n\n### LIKE / NOT LIKE\uFF08\u90E8\u5206\u4E00\u81F4\u30FB\u9664\u5916\uFF09\n\n| \u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9 | \u610F\u5473 |\n|----------------|------|\n| `%` | 0\u6587\u5B57\u4EE5\u4E0A\u306E\u4EFB\u610F\u306E\u6587\u5B57\u5217 |\n| `_` | \u4EFB\u610F\u306E1\u6587\u5B57 |\n\n```sql\nWHERE \u6C0F\u540D LIKE '\u7530%' -- \u300C\u7530\u300D\u3067\u59CB\u307E\u308B\nWHERE \u30E1\u30E2 LIKE '%\u91CD\u8981%' -- \u300C\u91CD\u8981\u300D\u3092\u542B\u3080\nWHERE \u30B3\u30FC\u30C9 LIKE 'A__' -- \u300CA\u300D+\u4EFB\u610F2\u6587\u5B57\nWHERE \u6C0F\u540D NOT LIKE '\u7530%' -- \u300C\u7530\u300D\u3067\u59CB\u307E\u3089\u306A\u3044\nWHERE \u9867\u5BA2\u540D LIKE '\u4F1A\u793E' -- \u300C\u4F1A\u793E\u300D\u3092\u542B\u3080\uFF08\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u306A\u3057\uFF1D\u90E8\u5206\u4E00\u81F4\uFF09\n```\n\n> **\u8A55\u4FA1\u7D4C\u8DEF\uFF08Breaking\uFF09**<br>\n> `LIKE` / `NOT LIKE`\u306F\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u306E\u6709\u7121\u306B\u304B\u304B\u308F\u3089\u305Akintone\u3078\u6E21\u3055\u305A\u3001\u5168\u4EF6\u53D6\u5F97\u5F8C\u306BJavaScript\u3067\u8A55\u4FA1\u3057\u307E\u3059\u3002`%` / `_`\u4ED8\u304D\u306F\u4E0A\u8868\u306ESQL\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u3001\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u306A\u3057\u306E`LIKE '\u4F1A\u793E'`\u306FkSQL\u72EC\u81EA\u4ED5\u69D8\u306E\u90E8\u5206\u4E00\u81F4\uFF08`includes`\uFF09\u3067\u3059\u3002kintone\u306E\u5358\u8A9E\uFF08\u30C8\u30FC\u30AF\u30F3\uFF09\u691C\u7D22\u306B\u306F\u59D4\u8B72\u3057\u307E\u305B\u3093\u3002<br>\n> LIKE\u3092\u542B\u3080SELECT\u306FFULL_SCAN\u306B\u306A\u308A\u307E\u3059\u3002AND\u3067\u4F75\u8A18\u3057\u305F\u5B89\u5168\u306A`$id`\u6761\u4EF6\u3001\u578B\u78BA\u8A8D\u6E08\u307FNUMBER\u6761\u4EF6\u3001\u5B9F\u5728\u78BA\u8A8D\u6E08\u307F\u9078\u629E\u7CFB`IN`\uFF0F`NOT IN`\u306F\u4E8B\u524D\u7D5E\u308A\u8FBC\u307F\u306B\u4F7F\u308F\u308C\u307E\u3059\u304C\u3001\u305D\u308C\u4EE5\u5916\u306F\u5168\u4EF6\u53D6\u5F97\u306B\u306A\u308A\u307E\u3059\u3002\u5927\u91CF\u30EC\u30B3\u30FC\u30C9\u3067\u306F\u8D70\u67FB\u4EF6\u6570\u304C`maxRecords`\u3078\u5230\u9054\u3057\u3001\u65E2\u5B9A\u3067\u306F\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002`onLimitReached = \"truncate\"`\u3092\u9078\u3076\u3068\u4E0A\u9650\u4EE5\u964D\u306E\u4E00\u81F4\u884C\u3092\u6B20\u843D\u3055\u305B\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002<br>\n> \u901A\u5E38\u306E\u89AA\u30EC\u30B3\u30FC\u30C9\u306B\u5BFE\u3059\u308B`UPDATE` / `DELETE`\u3067\u306F\u3001\u3059\u3079\u3066\u306E`LIKE` / `NOT LIKE`\u3092\u62D2\u5426\u3057\u307E\u3059\u3002\u5148\u306B\u4E0A\u9650\u30A8\u30E9\u30FC\u306E\u306A\u3044SELECT\u3067\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u3092\u78BA\u8A8D\u3057\u3001`IN`\u307E\u305F\u306F\u5B8C\u5168\u4E00\u81F4\u6761\u4EF6\u3067\u5BFE\u8C61\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EBDML\u306FJavaScript\u8A55\u4FA1\u7D4C\u8DEF\u306E\u305F\u3081\u5F93\u6765\u3069\u304A\u308A\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n### IS NULL / IS NOT NULL\n\nkintone \u3067\u306F\u7A7A\u6587\u5B57\uFF08`\"\"`\uFF09\u3092 NULL \u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002\n\n```sql\nWHERE \u5099\u8003 IS NULL -- \u5099\u8003\u304C\u7A7A\u306E\u30EC\u30B3\u30FC\u30C9\nWHERE \u62C5\u5F53\u8005 IS NOT NULL -- \u62C5\u5F53\u8005\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30EC\u30B3\u30FC\u30C9\n```\n\n### \u8AD6\u7406\u6F14\u7B97\u5B50\n\n\u512A\u5148\u9806\u4F4D: `NOT` > `AND` > `OR`\n\n```sql\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86' AND \u91D1\u984D > 50000\nWHERE \u90E8\u7F72 = '\u55B6\u696D\u90E8' OR \u90E8\u7F72 = '\u958B\u767A\u90E8'\nWHERE NOT \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u30AD\u30E3\u30F3\u30BB\u30EB'\n```\n\n\u30AB\u30C3\u30B3\u3067\u512A\u5148\u9806\u4F4D\u3092\u660E\u793A\u3067\u304D\u307E\u3059\u3002\n\n```sql\nWHERE (\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86' OR \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u627F\u8A8D\u6E08') AND \u91D1\u984D > 10000\n```\n\n### WHERE \u3067\u306E\u95A2\u6570\u4F7F\u7528\n\nWHERE \u53E5\u306E\u5DE6\u8FBA\u306B\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002 \n\u3053\u306E\u5834\u5408\u3001\u81EA\u52D5\u7684\u306B FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002\n\n```sql\nWHERE UPPER(\u30B9\u30C6\u30FC\u30BF\u30B9) = 'ACTIVE'\nWHERE LOWER(\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9) LIKE '%@example.com'\nWHERE LENGTH(\u30B3\u30FC\u30C9) > 5\nWHERE TRIM(\u6C0F\u540D) != ''\nWHERE SUBSTRING(\u90F5\u4FBF\u756A\u53F7, 1, 3) = '100'\n```\n\n### kintone \u5C02\u7528\u95A2\u6570\n\nkintone \u306E [\u30AF\u30A8\u30EA\u95A2\u6570](https://cybozu.dev/ja/kintone/docs/overview/query/#function) \u306B\u5BFE\u5FDC\u3059\u308B\u95A2\u6570\u3067\u3059\u3002\u5024\u30FB\u6BD4\u8F03\u306F kintone \u30B5\u30FC\u30D0\u30FC\u304C\u6C7A\u5B9A\u3057\u307E\u3059\uFF08server-only\uFF09\u3002\n\n**\u57FA\u672C\u306E3\u95A2\u6570**:\n\n| \u95A2\u6570 | \u610F\u5473 |\n|------|------|\n| `TODAY()` | \u4ECA\u65E5\u306E\u65E5\u4ED8\uFF08`YYYY-MM-DD` \u5F62\u5F0F\uFF09 |\n| `NOW()` | \u73FE\u5728\u65E5\u6642\uFF08ISO 8601 \u5F62\u5F0F\uFF09 |\n| `LOGINUSER()` | \u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\uFF08`WHERE` \u3067\u306F kintone server \u304C\u89E3\u6C7A\uFF09 |\n| `PRIMARY_ORGANIZATION()` | \u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u306E\u512A\u5148\u7D44\u7E54\uFF08`WHERE` \u3067\u306F kintone server \u304C\u89E3\u6C7A\uFF09 |\n\n```sql\nWHERE \u4F5C\u6210\u65E5\u6642 >= TODAY()\nWHERE \u671F\u9650\u65E5 < TODAY()\nWHERE \u4F5C\u6210\u8005 in (LOGINUSER())\nWHERE \u62C5\u5F53\u8005 not in (LOGINUSER())\nWHERE \u62C5\u5F53\u7D44\u7E54 in (PRIMARY_ORGANIZATION())\n```\n\n`WHERE` \u3067\u306F16\u95A2\u6570\u3059\u3079\u3066\u304C server-only \u3067\u3059\u3002`TODAY()` \u306F\u65E5\u4ED8\u7CFB4\u578B\u3001\n`NOW()` \u306F `DATETIME` / \u4F5C\u6210\u65E5\u6642 / \u66F4\u65B0\u65E5\u6642\uFF08**`DATE` \u306B\u306F\u4E0D\u53EF**\uFF09\u306E\u6BD4\u8F03\u53F3\u8FBA\u30FB\n`BETWEEN` \u5883\u754C\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002`LOGINUSER()` \u306F\u4F5C\u6210\u8005 / \u66F4\u65B0\u8005 / \u30E6\u30FC\u30B6\u30FC\u9078\u629E\u306E\nsingleton `in` / `not in` \u3060\u3051\u306B\u4F7F\u7528\u3067\u304D\u3001**\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u306B\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093**\u3002\n`PRIMARY_ORGANIZATION()` \u306F\u7D44\u7E54\u9078\u629E\u306E singleton `in` / `not in` \u3060\u3051\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n`WHERE` \u4EE5\u5916\u3067\u69CB\u6587\u4E0A\u8A31\u53EF\u3055\u308C\u308B\u65E2\u5B58\u7D4C\u8DEF\u306E `TODAY()` / `NOW()` \u306F\u3001\u5F93\u6765\u3069\u304A\u308A\n\u5B9F\u884C\u74B0\u5883\u306E\u30ED\u30FC\u30AB\u30EB TZ \u3067\u8A55\u4FA1\u3055\u308C\u307E\u3059\u3002\u5185\u90E8\u306E\u30ED\u30FC\u30AB\u30EB\u8A55\u4FA1\u5668\u3067 `LOGINUSER()` /\n`PRIMARY_ORGANIZATION()` \u3092\u89E3\u6C7A\u3057\u305F\u5834\u5408\u306F\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u542B\u3080**\u5168\u5B9F\u884C\u9762\u3067\u7A7A\u6587\u5B57**\u3067\u3059\n\uFF08`SET` / `DECLARE` \u306E\u53F3\u8FBA\u3067\u306F\u4E21\u95A2\u6570\u3092\u69CB\u6587\u4E0A\u62D2\u5426\u3057\u307E\u3059\uFF09\u3002\u73FE\u5728\u306E\u65E5\u4ED8\u30FB\u65E5\u6642\u3092\u610F\u56F3\u7684\u306B client \u306E\u30ED\u30FC\u30AB\u30EB TZ \u3067\u8A55\u4FA1\u3059\u308B\u5834\u5408\u306F\u3001\nkSQL \u30B9\u30AB\u30E9\u30FC\u95A2\u6570\u306E `CURRENT_DATE()` / `CURRENT_TIMESTAMP()` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u3053\u308C\u3089\u306B\u306F\u62BC\u3057\u4E0B\u3052\u7D4C\u8DEF\u304C\u306A\u304F\u3001\u672C\u9805\u306E fail-closed \u5BFE\u8C61\u5916\u3067\u3059\u3002\n\n**\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\uFF0812\u95A2\u6570\u30FB`WHERE` \u5C02\u7528\uFF09**: `YESTERDAY()` / `TOMORROW()` / `FROM_TODAY(n, unit)` / `THIS_WEEK([\u66DC\u65E5])` / `LAST_WEEK([\u66DC\u65E5])` / `NEXT_WEEK([\u66DC\u65E5])` / `THIS_MONTH([\u65E5])` / `LAST_MONTH([\u65E5])` / `NEXT_MONTH([\u65E5])` / `THIS_YEAR()` / `LAST_YEAR()` / `NEXT_YEAR()`\u3002\n\n16\u95A2\u6570\u5171\u901A\u3067\u3001\u5358\u4E00 APP \u3067\u306F **\u305D\u306E SELECT \u306E `WHERE` \u5168\u4F53\u3092\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u5F62**\uFF08`OR` \u4F75\u7528\u3082\u5168\u4F53\u304C\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u3089\u53EF\u3002`GROUP BY` / `DISTINCT` / \u96C6\u8A08 / \u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570 / \u901A\u5E38\u306E `ORDER BY`\u3001\u5B9F\u4F53\u5316 CTE \u672C\u4F53\u3001`WITH` \u306E\u6700\u7D42 SELECT\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source\u3001\u5358\u4E00 CTE \u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u5C55\u958B\u3067\u3082\u53EF\uFF09\u3068\u3001**\u95A2\u6570\u3092\u542B\u307E\u306A\u3044\u6B8B\u4F59\uFF08\u4F8B `LENGTH(...) > 1`\uFF09\u3068 `AND` \u3067\u7D50\u3070\u308C\u305F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u5358\u4E00\u7269\u7406\u30A2\u30D7\u30EA SELECT**\uFF08\u95A2\u6570 leaf \u3092 prefilter \u306B\u62BC\u3057\u4E0B\u3052\u6B8B\u4F59\u3060\u3051 client \u8A55\u4FA1\u30FB`SUPERSET_PREFILTER`\uFF09\u3067\u4F7F\u3048\u307E\u3059\u3002INNER JOIN \u3067\u306F alias \u4ED8\u304D\u7269\u7406 APP \u3060\u3051\u3092\u5165\u529B\u3068\u3057\u3001\u5358\u4E00 alias \u306E whole-WHERE exact\uFF08\u7B2C5-W\uFF09\u3001\u307E\u305F\u306F AND \u30B9\u30D1\u30A4\u30F3\u4E0A\u306E exact \u95A2\u6570 leaf \u3092 alias \u3054\u3068\u306B\u62BC\u3057\u4E0B\u3052\u3066\u95A2\u6570\u306A\u3057\u6B8B\u4F59\u3060\u3051\u3092 client \u8A55\u4FA1\u3059\u308B\u5F62\uFF08\u7B2C5-L\uFF09\u3067\u4F7F\u3048\u307E\u3059\u3002\u5F8C\u8005\u306F\u8907\u6570 alias \u3078\u5206\u6563\u3057\u305F\u95A2\u6570\u306B\u3082\u5BFE\u5FDC\u3057\u307E\u3059\u3002`LEFT` / `RIGHT JOIN`\u3001cross-alias `OR`\u3001\u95A2\u6570\u3092\u542B\u3080 cross-table \u8FF0\u8A9E\u3001whole-WHERE exact \u3067\u306A\u3044 KLIKE-containing `OR`\u3001JOIN \u5165\u529B\u304C CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FB\u5165\u308C\u5B50 SELECT\u30FB\u6D3E\u751F\u8868\u306E\u5F62\u306F\u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u524D\u306B fail-closed \u3057\u307E\u3059\u3002\u5358\u4E00 APP \u306E prefilter\uFF0B\u6B8B\u4F59\u306F CTE \u672C\u4F53\u30FB`WITH` \u306E\u6700\u7D42 SELECT\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002`VALIDATE`\u3001\u304A\u3088\u3073**\u5B9F\u4F53\u5316 CTE \u672C\u4F53 / `WITH` \u6700\u7D42\u30AF\u30A8\u30EA / \u4E00\u6642\u30C6\u30FC\u30D6\u30EB source \u304C `UNION` \u306E\u5834\u5408**\u3082 fail-closed \u3057\u307E\u3059\uFF08\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E `UNION` \u306F\u679D\u3054\u3068\u306B\u5224\u5B9A\u3057\u307E\u3059\uFF09\u3002**`KORDER BY` \u3068 DML \u306F whole-WHERE exact \u306E\u5F62\u3060\u3051\u304C\u4F7F\u3048\u3001prefilter\uFF0B\u6B8B\u4F59\u3084 FULL_SCAN_EXACT \u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002`PRIMARY_ORGANIZATION()` \u3092\u542B\u3080 DML \u306F\u5E38\u306B\u62D2\u5426\u3057\u307E\u3059\u3002** \u578B\u30FB\u6F14\u7B97\u5B50\u30FBreason code\u30FB\u79FB\u884C\u65B9\u6CD5\u306F [\xA75\u300Ckintone \u30AF\u30A8\u30EA\u95A2\u6570\u300D](#kintone-\u30AF\u30A8\u30EA\u95A2\u6570server-only) \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n```sql\nWHERE \u4F5C\u6210\u65E5\u6642 < FROM_TODAY(5, DAYS)\nWHERE \u65E5\u4ED8 BETWEEN FROM_TODAY(-7, DAYS) AND TODAY()\nWHERE \u66F4\u65B0\u65E5\u6642 >= YESTERDAY() AND LENGTH(\u90FD\u9053\u5E9C\u770C) > 1 -- prefilter\uFF0B\u6B8B\u4F59\uFF08v3.21.0\uFF09\nWHERE \u65E5\u4ED8 = TODAY() AND LENGTH(\u4EF6\u540D) > 1 -- TODAY() \u3082\u540C\u3058 prefilter\n```\n\n> `PRIMARY_ORGANIZATION()` \u306F\u7D44\u7E54\u9078\u629E\u306E singleton `in` / `not in` \u3060\u3051\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n> **\u512A\u5148\u7D44\u7E54\u304C\u672A\u8A2D\u5B9A\u306E\u30E6\u30FC\u30B6\u30FC\u3067\u306F\u6761\u4EF6\u304C\u7121\u8996\u3055\u308C\u3001\u5168\u30EC\u30B3\u30FC\u30C9\u304C\u8FD4\u308A\u307E\u3059**\n> \uFF08kintone \u516C\u5F0F\u306E\u8A18\u8FF0\u30022026-07-31 \u306B\u5B9F\u6A5F\u3067\u518D\u73FE\u3092\u78BA\u8A8D\uFF09\u3002\n> **\u3053\u306E\u95A2\u6570\u3092\u542B\u3080 DML \u306F\u5E38\u306B\u62D2\u5426**\u3057\u307E\u3059\u304C\u3001**`SELECT` \u306F\u305D\u306E\u307E\u307E\u8FD4\u3057\u307E\u3059**\u2014\u2014\n> **\u7D5E\u308A\u8FBC\u307F\u304C\u52B9\u3044\u3066\u3044\u306A\u3044\u3053\u3068\u3092\u3001\u30A8\u30F3\u30B8\u30F3\u304B\u3089\u3082\u753B\u9762\u304B\u3089\u3082\u5224\u5225\u3067\u304D\u307E\u305B\u3093**\uFF08\xA75 \u53C2\u7167\uFF09\u3002\n\n---", uri: "ksql://language-reference/06-where" }, "07-join": { heading: "7. JOIN", text: "## 7. JOIN\n\nINNER JOIN\u30FBLEFT JOIN\u30FBRIGHT JOIN\u30FBCROSS JOIN \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002 \n\u8907\u6570\u306E JOIN \u3092\u9023\u9396\u3057\u3066 3\u30C6\u30FC\u30D6\u30EB\u4EE5\u4E0A\u306E\u7D50\u5408\u3082\u53EF\u80FD\u3067\u3059\u3002 \nINNER / LEFT / RIGHT JOIN \u306E\u7D50\u5408\u6761\u4EF6\u306F\u7B49\u5024\u7D50\u5408\uFF08`ON a.\u30D5\u30A3\u30FC\u30EB\u30C9 = b.\u30D5\u30A3\u30FC\u30EB\u30C9`\uFF09\u306E\u307F\u5BFE\u5FDC\u3002\n\n### CROSS JOIN\n\n\u5DE6\u53F3\u306E\u5168\u7D44\u307F\u5408\u308F\u305B\uFF08\u76F4\u7A4D\uFF09\u3092\u8FD4\u3057\u307E\u3059\u3002`ON` \u53E5\u306F\u6307\u5B9A\u3057\u307E\u305B\u3093\u3002\u5DE6\u5165\u529B\u3092\u5916\u5074\u3001\u53F3\u5165\u529B\u3092\n\u5185\u5074\u3068\u3057\u3066\u51E6\u7406\u3057\u307E\u3059\u304C\u3001\u516C\u958B\u7D50\u679C\u306E\u9806\u5E8F\u304C\u5FC5\u8981\u306A\u5834\u5408\u306F `ORDER BY` \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n```sql\nWITH\nd AS (GENERATE_SERIES('2026-08-01', '2026-08-07') AS \u65E5\u4ED8),\nm AS (SELECT \u88FD\u54C1\u540D FROM APP4229)\nSELECT d.\u65E5\u4ED8, m.\u88FD\u54C1\u540D\nFROM d\nCROSS JOIN m\nORDER BY d.\u65E5\u4ED8, m.\u88FD\u54C1\u540D\n```\n\n\u7247\u5074\u304C 0 \u884C\u306A\u3089\u7D50\u679C\u3082 0 \u884C\u3067\u3059\u3002\u5404 CROSS JOIN \u6BB5\u306E\u751F\u6210\u884C\u6570\u306F\u884C\u751F\u6210\u524D\u306B\u8A08\u7B97\u3057\u3001\n10,000 \u884C\u3092\u8D85\u3048\u308B\u5834\u5408\u306F\u30A8\u30E9\u30FC\u306B\u3057\u307E\u3059\u3002\u5F8C\u7D9A\u306E `WHERE`\u3001`GROUP BY`\u3001`DISTINCT`\u3001`LIMIT`\n\u3067\u6E1B\u308B\u898B\u8FBC\u307F\u306F\u4E0A\u9650\u5224\u5B9A\u306B\u4F7F\u3044\u307E\u305B\u3093\u3002CROSS JOIN \u306F\u5B8C\u5168\u5165\u529B\u3092\u5FC5\u8981\u3068\u3059\u308B\u305F\u3081\u3001\n`onLimit=truncate` \u306F\u7121\u52B9\u3067\u3059\u3002\n\n\u7269\u7406 APP \u306B\u5C5E\u3059\u308B\u5B89\u5168\u306A\u5358\u4E00 alias \u306E `WHERE` leaf \u306F\u53D6\u5F97 query \u3078 prefilter \u3067\u304D\u307E\u3059\u304C\u3001\n\u5143\u306E `WHERE` \u306F JOIN \u5F8C\u306B\u3082\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002CROSS JOIN \u306B\u306F\u7D50\u5408\u30AD\u30FC\u304C\u306A\u3044\u305F\u3081\u3001\u7D50\u5408\u30AD\u30FC\u306E\n`in` / range prefilter \u306F\u4F7F\u7528\u3057\u307E\u305B\u3093\u3002\n\n`EXPLAIN` \u306F\u9759\u7684\u306B\u8A3C\u660E\u3067\u304D\u308B\u5165\u529B\u3067\u306F\u5DE6\u53F3\u884C\u6570\u30FB\u751F\u6210\u884C\u6570\u30FB`row guard` \u3092\u78BA\u5B9A\u8868\u793A\u3057\u3001\u7269\u7406 APP\n\u3092\u542B\u3080\u5834\u5408\u306F\u5B9F\u884C\u6642\u7B97\u51FA\u5F0F\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u73FE\u5728\u306E\u7269\u7406\u884C\u6570\u3092\u5F97\u308B\u305F\u3081\u306B records API \u3092\u547C\u3073\u307E\u305B\u3093\u3002\n\n`LEFT CROSS JOIN`\u3001`RIGHT CROSS JOIN`\u3001`INNER CROSS JOIN`\u3001`CROSS JOIN ... ON`\u3001\n`INNER JOIN ... ON 1=1`\u3001\u30AB\u30F3\u30DE\u7D50\u5408\u306F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\u3002`GENERATE_SERIES` \u306F\u76F4\u63A5\u30C6\u30FC\u30D6\u30EB\u4F4D\u7F6E\u3078\n\u66F8\u304B\u305A\u3001\u4E0A\u4F8B\u306E\u3088\u3046\u306B CTE \u306B\u7F6E\u304D\u307E\u3059\u3002\n\n### INNER JOIN\n\n\u4E21\u30C6\u30FC\u30D6\u30EB\u3067\u7D50\u5408\u6761\u4EF6\u3092\u6E80\u305F\u3059\u884C\u306E\u307F\u8FD4\u3057\u307E\u3059\u3002\n\n```sql\nSELECT a.\u6C0F\u540D, b.\u5546\u54C1\u540D, b.\u91D1\u984D\nFROM APP100 AS a\nINNER JOIN APP200 AS b ON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n```\n\n`INNER` \u306F\u7701\u7565\u53EF\u80FD\uFF08`JOIN` \u306E\u307F\u3067 INNER JOIN \u6271\u3044\uFF09\u3002\n\n```sql\nFROM APP100 AS a\nJOIN APP200 AS b ON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n```\n\n#### \u7D50\u5408\u30AD\u30FC\u306B\u3088\u308B\u53D6\u5F97\u7BC4\u56F2\u306E\u7D5E\u308A\u8FBC\u307F\n\n\u5B9F\u4F53\u5316\u6E08\u307F\u306E CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FB\u5148\u306B\u53D6\u5F97\u3057\u305F\u7269\u7406 APP \u304B\u3089\u3001alias \u4ED8\u304D\u7269\u7406 APP \u3078\n`INNER JOIN` \u3059\u308B\u5834\u5408\u3001kSQL \u306F\u7D50\u5408\u30AD\u30FC\u306E\u5B9F\u5024\u3092\u4F7F\u3063\u3066 JOIN \u5148\u306E\u53D6\u5F97\u5019\u88DC\u3092\u7D5E\u308A\u307E\u3059\u3002\n\u305F\u3060\u3057\u3001JOIN \u5148\u306B\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A\u5358\u4E00 alias \u306E\u8FF0\u8A9E\u304C\u3042\u308B\u5834\u5408\u3001\u3053\u306E\u7D5E\u308A\u8FBC\u307F\u306F\u884C\u3044\u307E\u305B\u3093\u3002\nJOIN \u5148\u306F\u305D\u306E\u8FF0\u8A9E\u3067\u72EC\u7ACB\u306B\u53D6\u5F97\u3057\u3066 FROM \u5074\u3068\u4E26\u5217\u306B\u8AAD\u307F\u307E\u3059\u3002\u7D50\u5408\u30AD\u30FC\u3067\u7D5E\u308B\u306E\u306F\u3001JOIN \u5148\u306B\n\u62BC\u3057\u4E0B\u3052\u308B\u8FF0\u8A9E\u304C\u306A\u304F\u3001FROM \u5074\u306E\u53D6\u5F97\u5B8C\u4E86\u5F8C\u306B JOIN \u5148\u3092\u53D6\u5F97\u3059\u308B\u5834\u5408\u3060\u3051\u3067\u3059\u3002\n\nJOIN \u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u304C `in` \u3092\u53D7\u3051\u308B\u578B\u3067\u306F\u3001\u91CD\u8907\u3092\u9664\u3044\u305F\u30AD\u30FC\u3092 `in (...)` \u306B\u8F09\u305B\u300150\u30AD\u30FC\u5358\u4F4D\u30FB\n\u6700\u5927300\u30AD\u30FC\u3067\u53D6\u5F97\u3057\u307E\u3059\u3002`SINGLE_LINE_TEXT` / `LINK` / `NUMBER` / `CALC` / `DROP_DOWN` /\n`RADIO_BUTTON` / `CHECK_BOX` / `MULTI_SELECT` / `STATUS` \u306F `in (\"\")` \u3092\u53D7\u3051\u308B\u305F\u3081\u3001FROM \u5074\u306E\n\u30AD\u30FC\u306B\u7A7A\u5024\u304C\u3042\u3063\u3066\u3082\u7A7A\u5024\u3092\u542B\u3081\u3066\u7D5E\u308A\u8FBC\u307F\u3092\u7DAD\u6301\u3057\u307E\u3059\u3002\u305D\u308C\u4EE5\u5916\u306E\u578B\uFF08\u30EC\u30B3\u30FC\u30C9\u756A\u53F7 `$id` \u3092\u542B\u3080\uFF09\n\u3067\u306F\u3001\u7A7A\u5024\u304C1\u4EF6\u3067\u3082\u3042\u308C\u3070 JOIN \u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\u3002\u3053\u306E\u5224\u5B9A\u306F FROM \u5074\u306E\u53D6\u5F97\u5F8C\u306B\u884C\u308F\u308C\u308B\u305F\u3081\u3001\n`EXPLAIN` \u3067\u306F `join key prefilter: runtime candidate` \u306E\u307E\u307E\u3067\u4E8B\u524D\u306B\u306F\u5206\u304B\u3089\u305A\u3001\u5B9F\u884C\u6642\u306B\u3082\u8B66\u544A\u306F\n\u51FA\u307E\u305B\u3093\uFF08\u30AD\u30FC\u6570\u306E\u4E0A\u9650\u8D85\u904E\u3068\u306F\u7570\u306A\u308A\u307E\u3059\uFF09\u3002\n\n\u91CD\u8907\u3092\u9664\u3044\u305F\u30AD\u30FC\u304C300\u4EF6\u3092\u8D85\u3048\u308B\u5834\u5408\u3082\u3001\u7D5E\u308A\u8FBC\u307F\u3092\u884C\u308F\u305A JOIN \u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\u3002\u3053\u306E\u5834\u5408\u306F\n`JOIN\u30AD\u30FC\u304C N \u4EF6\u306E\u305F\u3081 ON \u6700\u9069\u5316\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3001JOIN\u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\uFF08\u4E0A\u9650 300 \u4EF6\uFF09\u3002`\n\u3068\u3044\u3046\u8B66\u544A\u3092\u8FD4\u3057\u307E\u3059\u3002\n\n`DATE` / `TIME` / `DATETIME` / `CREATED_TIME` / `UPDATED_TIME` \u306F `in` \u3092\u53D7\u3051\u306A\u3044\u305F\u3081\u3001\n\u3059\u3079\u3066\u306E\u30AD\u30FC\u304C\u578B\u306B\u5BFE\u5FDC\u3059\u308B\u6B63\u898F\u5F62\u5F0F\u306A\u3089\u6700\u5C0F\u5024\u30FB\u6700\u5927\u5024\u306B\u3088\u308B\u7BC4\u56F2 prefilter \u3092\u4F7F\u3044\u307E\u3059\u3002\n\n```text\n\u65E5\u4ED8 >= \"2025-08-04\" and \u65E5\u4ED8 <= \"2025-08-06\"\n```\n\n\u3053\u306E\u7BC4\u56F2\u306F\u5019\u88DC\u3092\u5E83\u3081\u306B\u53D6\u5F97\u3059\u308B `relation: superset` \u3067\u3059\u3002\u7BC4\u56F2\u5185\u306B\u5B9F\u969B\u306E\u30AD\u30FC\u96C6\u5408\u306B\u306A\u3044\u5024\u304C\n\u542B\u307E\u308C\u3066\u3082\u3001\u65E2\u5B58\u306E JOIN \u5F8C\u7167\u5408\u304C\u6700\u7D42\u7D50\u679C\u304B\u3089\u9664\u5916\u3057\u307E\u3059\u3002\u3053\u306E\u7BC4\u56F2\u65B9\u5F0F\u3067\u306F\u3001\u30AD\u30FC\u306B\u7A7A\u5024\u307E\u305F\u306F\n\u6B63\u898F\u5F62\u5F0F\u3067\u306A\u3044\u5024\u304C1\u4EF6\u3067\u3082\u542B\u307E\u308C\u308B\u5834\u5408\u3001JOIN \u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\u3002\u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u304C `in` \u3068\n\u7BC4\u56F2\u6BD4\u8F03\u306E\u3069\u3061\u3089\u3082\u53D7\u3051\u306A\u3044\u5834\u5408\u3082\u3001\u4E0D\u9069\u5207\u306A\u6F14\u7B97\u5B50\u3092\u63A8\u6E2C\u305B\u305A JOIN \u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\u3002\n\u6B63\u898F\u5F62\u5F0F\u306F `DATE` \u304C `YYYY-MM-DD`\u3001`TIME` \u304C `HH:mm`\u3001\u65E5\u6642\u7CFB\u304C\n`YYYY-MM-DDTHH:mm:ssZ` \u3067\u3059\u3002\n\nJOIN \u306E `WHERE` \u306B `\u30AD\u30FC != ''` \u3092\u52A0\u3048\u3066\u3082\u3001\u7A7A\u5024\u306B\u3088\u308B\u5168\u4EF6\u53D6\u5F97\u306F\u9632\u3052\u307E\u305B\u3093\u3002JOIN \u6587\u8108\u3067\u306F\n\u3053\u306E\u8FF0\u8A9E\u3092 records API \u3078\u62BC\u3057\u4E0B\u3052\u305A\u3001`join pushdown not applied: UNSAFE_RELATION` \u3092\u8868\u793A\u3057\u3066\nJOIN \u5F8C\u306B\u8A55\u4FA1\u3057\u307E\u3059\u3002\u4E00\u65B9\u3001\u7D50\u5408\u30AD\u30FC\u306F FROM \u5074\u306E\u53D6\u5F97\u76F4\u5F8C\u306E\u884C\u304B\u3089\u96C6\u3081\u308B\u305F\u3081\u3001\u3053\u306E\u8FF0\u8A9E\u306B\u3088\u308B\n\u7A7A\u5024\u9664\u5916\u3088\u308A\u5148\u306B\u53D6\u5F97\u65B9\u5F0F\u304C\u6C7A\u307E\u308A\u307E\u3059\u3002\u5358\u8868\u306E `WHERE \u30AD\u30FC != ''` \u306F records API \u3078\u62BC\u3057\u4E0B\u304C\u308A\u3001\n`fetch: EXACT` \u306B\u306A\u308A\u307E\u3059\u3002\u7A7A\u5024\u3092\u9664\u3044\u3066\u7D5E\u308A\u8FBC\u307F\u3092\u7DAD\u6301\u3059\u308B\u306B\u306F\u3001FROM \u5074\u3092\u3053\u306E\u5358\u8868 SELECT \u3067\n\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u5B9F\u4F53\u5316\u3057\u3066\u304B\u3089\u3001\u305D\u306E\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092 FROM \u5074\u3068\u3057\u3066\u7269\u7406 APP \u3078 `INNER JOIN`\n\u3057\u307E\u3059\u3002\u5B9F\u4F53\u5316\u6E08\u307F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u304B\u3089\u7269\u7406 APP \u3078\u306E\u7D50\u5408\u30AD\u30FC\u306B\u3088\u308B\u7D5E\u308A\u8FBC\u307F\u306F\u6709\u52B9\u3067\u3059\u3002\n\n\u65B9\u5F0F\u9078\u629E\u306F records API \u547C\u3073\u51FA\u3057\u524D\u306B\u884C\u3044\u307E\u3059\u3002\u9078\u629E\u6E08\u307F\u306E query \u306B\u5BFE\u3057\u3066 kintone \u304C\u8FD4\u3057\u305F\u8A8D\u8A3C\u30FB\n\u6A29\u9650\u30FB\u5024\u53D7\u7406\u30FB\u691C\u7D22\u6253\u3061\u5207\u308A\u30FB\u901A\u4FE1\u30A8\u30E9\u30FC\u3092\u3001\u7A7A query \u3084\u5168\u4EF6\u53D6\u5F97\u3067 silent retry \u306F\u3057\u307E\u305B\u3093\u3002\n`EXPLAIN` \u3067\u306F `join key prefilter: in`\u3001`join key prefilter: range`\u3001\n`join key prefilter: not applied`\u3001\u5B9F\u884C\u524D\u306B\u306F `join key prefilter: runtime candidate`\u3001\n\u9069\u7528\u6642\u306E `relation`\u3001\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u6642\u306E `join key prefilter reason` \u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002\nJOIN \u5148\u306E\u8FF0\u8A9E\u3092\u72EC\u7ACB\u306B\u62BC\u3057\u4E0B\u3052\u3066\u4E26\u5217\u53D6\u5F97\u3059\u308B\u5834\u5408\u306F\u3001\u7D50\u5408\u30AD\u30FC\u306B\u3088\u308B\u7D5E\u308A\u8FBC\u307F\u3092\u8A66\u3055\u306A\u3044\u305F\u3081\n`join key prefilter` \u884C\u3092\u8868\u793A\u3057\u307E\u305B\u3093\u3002\u53D6\u5F97\u7BC4\u56F2\u306F\u5404 source \u306E `fetch:` \u884C\u3067\u78BA\u8A8D\u3057\u307E\u3059\u3002\n\n### LEFT JOIN\n\n\u5DE6\u30C6\u30FC\u30D6\u30EB\u306E\u5168\u884C + \u7D50\u5408\u6761\u4EF6\u3092\u6E80\u305F\u3059\u53F3\u30C6\u30FC\u30D6\u30EB\u306E\u884C\u3092\u8FD4\u3057\u307E\u3059\u3002 \n\u53F3\u30C6\u30FC\u30D6\u30EB\u306B\u30DE\u30C3\u30C1\u3057\u306A\u3044\u5834\u5408\u3001\u53F3\u5074\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u7A7A\u6587\u5B57\u306B\u306A\u308A\u307E\u3059\u3002\n\n```sql\nSELECT a.\u6C0F\u540D, b.\u91D1\u984D\nFROM APP100 AS a\nLEFT JOIN APP200 AS b ON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n```\n\n### RIGHT JOIN\n\n\u53F3\u30C6\u30FC\u30D6\u30EB\u306E\u5168\u884C + \u7D50\u5408\u6761\u4EF6\u3092\u6E80\u305F\u3059\u5DE6\u30C6\u30FC\u30D6\u30EB\u306E\u884C\u3092\u8FD4\u3057\u307E\u3059\u3002 \n\u5DE6\u30C6\u30FC\u30D6\u30EB\u306B\u30DE\u30C3\u30C1\u3057\u306A\u3044\u5834\u5408\u3001\u5DE6\u5074\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u7A7A\u6587\u5B57\u306B\u306A\u308A\u307E\u3059\u3002\n\n```sql\nSELECT a.\u91D1\u984D, b.\u9867\u5BA2\u540D\nFROM APP100 AS a\nRIGHT JOIN APP200 AS b ON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n```\n\n### 3\u30C6\u30FC\u30D6\u30EB\u4EE5\u4E0A\u306E JOIN\uFF08\u8907\u6570 JOIN \u9023\u9396\uFF09\n\n```sql\nSELECT a.\u6C0F\u540D, b.\u5546\u54C1\u540D, c.\u914D\u9001\u5148\nFROM APP100 AS a\nINNER JOIN APP200 AS b ON a.\u6CE8\u6587ID = b.\u6CE8\u6587ID\nLEFT JOIN APP300 AS c ON a.\u914D\u9001ID = c.\u914D\u9001ID\n```\n\n> **\u6CE8\u610F:** JOIN \u306F FULL_SCAN \u30E2\u30FC\u30C9\u3067 client \u5074\u306E\u7D50\u5408\u3092\u884C\u3044\u307E\u3059\u3002\u901A\u5E38\u306F\u5143\u306E `WHERE` \u3092\n> client \u5074\u3067\u3082\u518D\u8A55\u4FA1\u3057\u307E\u3059\u304C\u3001\u7B2C5-W \u306F whole WHERE \u3092 server \u3067 exact \u306B\u9069\u7528\u3057\u3066\n> client residual \u3092\u6301\u305F\u305A\u3001\u7B2C5-L \u306F server-only \u95A2\u6570 leaf \u3092\u9664\u3044\u305F\u6B8B\u4F59\u3060\u3051\u3092\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\n> \u305F\u3060\u3057\u3001INNER / CROSS JOIN \u3067\u3001\u578B\u3068\u6F14\u7B97\u5B50\u304C\u5BFE\u5FDC\u3059\u308B\u5358\u4E00 alias \u306E\u8FF0\u8A9E\u306F\u3001\u5404 APP \u306E records API\n> query \u3078 prefilter \u3068\u3057\u3066\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002\u62BC\u3057\u4E0B\u3052\u306F\u53D6\u5F97\u4EF6\u6570\u3092\u6E1B\u3089\u3059\u6027\u80FD\u6700\u9069\u5316\u3067\u3042\u308A\u3001\n> \u901A\u5E38\u8FF0\u8A9E\u306F\u5143\u306E `WHERE` \u3092 client \u3067\u518D\u8A55\u4FA1\u3059\u308B\u305F\u3081\u7D50\u679C\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n>\n> server-only \u95A2\u6570\u306F\u3001alias \u4ED8\u304D\u7269\u7406 APP \u3060\u3051\u306E INNER / CROSS JOIN \u3067\u6B21\u306E2\u5F62\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n> **\u7B2C5-W**\u306F `WHERE` \u5168\u4F53\u304C\u5358\u4E00 alias \u306B\u5C5E\u3059\u308B exact \u5F62\u3067\u3001\u540C\u4E00 alias \u306E `OR` / `NOT` /\n> whole-exact \u306A KLIKE \u5171\u5B58\u3082\u53EF\u3067\u3059\u3002**\u7B2C5-L**\u306F AND \u30B9\u30D1\u30A4\u30F3\u306E exact \u95A2\u6570 leaf \u3092\n> alias \u3054\u3068\u306B\u62BC\u3057\u4E0B\u3052\u3001\u95A2\u6570\u3092\u542B\u307E\u306A\u3044\u6B8B\u4F59\u3060\u3051\u3092 client \u8A55\u4FA1\u3057\u307E\u3059\u3002\u8907\u6570 alias \u306B\n> \u95A2\u6570\u304C\u5206\u6563\u3057\u3066\u3044\u3066\u3082\u5404 APP \u3078\u62BC\u3057\u4E0B\u3052\u307E\u3059\u3002`LOGINUSER()` \u306F\u4F5C\u6210\u8005 / \u66F4\u65B0\u8005 /\n> \u30E6\u30FC\u30B6\u30FC\u9078\u629E\u3001`PRIMARY_ORGANIZATION()` \u306F\u7D44\u7E54\u9078\u629E\u306E singleton `in` / `not in` \u306B\u9650\u308A\u307E\u3059\u3002\n>\n> server-only \u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u306A\u3044 JOIN \u306F\u3001LEFT / RIGHT JOIN\u3001cross-alias `OR`\u3001\n> \u95A2\u6570\u3092\u542B\u3080 cross-table \u8FF0\u8A9E\u3001whole exact \u3067\u306A\u3044 KLIKE-containing `OR`\u3001\u304A\u3088\u3073\n> \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FB\u5165\u308C\u5B50 SELECT\u30FB\u6D3E\u751F\u8868\u30FBCTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u5165\u529B\u306B\u3059\u308B\u5F62\u3067\u3059\u3002\n> \u901A\u5E38\u8FF0\u8A9E\u306E APP \u5225 prefilter \u306B\u3064\u3044\u3066\u306F\u3001\u578B\u4E0D\u660E\u30FB\u975E\u5B9F\u5728\u306E\u9078\u629E\u80A2\u30FB\u9078\u629E\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u7B49\u3092\n> \u5F15\u304D\u7D9A\u304D\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\u3002\n>\n> `EXPLAIN` \u3067\u306F\u3001\u5B9F\u884C\u6642\u30E1\u30BF\u30C7\u30FC\u30BF\u3067\u78BA\u5B9A\u3057\u305F `pushdown applied`\u3001\u9759\u7684\u306A\n> `pushdown candidate`\u3001\u304A\u3088\u3073\u96C6\u5408\u95A2\u4FC2 `relation: exact` / `relation: superset`\n> \u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002\u62D2\u5426\u5F62\u3067\u3082 throw \u305B\u305A `plan status: rejected` \u3068 reason\u3001\n> `client evaluation: forbidden`\u3001\u5B9F\u884C API \u306A\u3057\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n\n---", uri: "ksql://language-reference/07-join" }, "08-group-by-aggregates": { heading: "8. GROUP BY / \u96C6\u8A08\u95A2\u6570", text: "## 8. GROUP BY / \u96C6\u8A08\u95A2\u6570\n\n### GROUP BY\n\n```sql\nSELECT \u90E8\u7F72, COUNT(*) AS \u4EF6\u6570\nFROM APP100\nGROUP BY \u90E8\u7F72\n```\n\n```sql\nSELECT \u62C5\u5F53\u8005, \u30B9\u30C6\u30FC\u30BF\u30B9, SUM(\u91D1\u984D) AS \u5408\u8A08\nFROM APP100\nGROUP BY \u62C5\u5F53\u8005, \u30B9\u30C6\u30FC\u30BF\u30B9\n```\n\n#### GROUP BY \u306B\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u6307\u5B9A\u3059\u308B\n\n`GROUP BY` \u306B\u306F\u3001**\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u5F0F\u306E\u307B\u304B\u3001SELECT \u53E5\u3067\u4ED8\u3051\u305F\u30A8\u30A4\u30EA\u30A2\u30B9**\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT DATE_FORMAT(\u4F5C\u6210\u65E5\u6642, '%Y-%m') AS \u5E74\u6708, COUNT(*) AS \u4EF6\u6570\nFROM APP100\nGROUP BY \u5E74\u6708 -- \u5F0F\u306B\u4ED8\u3051\u305F\u30A8\u30A4\u30EA\u30A2\u30B9\u3067\u96C6\u8A08\u3067\u304D\u308B\n```\n\n\u4E0A\u306F `GROUP BY DATE_FORMAT(\u4F5C\u6210\u65E5\u6642, '%Y-%m')` \u3068**\u540C\u3058\u7D50\u679C**\u306B\u306A\u308A\u307E\u3059\u3002\u30A8\u30A4\u30EA\u30A2\u30B9\u306E\u5143\u304C\u6587\u5B57\u5217\u30FB\u65E5\u4ED8\u95A2\u6570\u3001\u7B97\u8853\u5F0F\u3001`CASE`\u3001\u30EA\u30C6\u30E9\u30EB\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3001\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u3044\u305A\u308C\u3067\u3082\u89E3\u6C7A\u3055\u308C\u307E\u3059\u3002\n\n**\u540D\u524D\u306E\u89E3\u6C7A\u9806**\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059\u3002\n\n1. **\u540C\u540D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u3042\u308C\u3070\u305D\u308C\u3092\u4F7F\u3044\u307E\u3059**\uFF08\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u3001`$id` / `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7` \u306A\u3069\u306E\u30B7\u30B9\u30C6\u30E0\u5217\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E `_pid` / `_rid` / `_idx` / `_p.<\u89AA\u30D5\u30A3\u30FC\u30EB\u30C9>`\u3001CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5217\uFF09\u3002SELECT \u3067\u540C\u540D\u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u4ED8\u3051\u3066\u3044\u3066\u3082\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u512A\u5148\u3055\u308C\u307E\u3059\u3002\n2. \u540C\u540D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u7121\u3044\u3068\u304D\u3060\u3051\u3001SELECT \u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u3068\u3057\u3066\u89E3\u6C7A\u3057\u307E\u3059\u3002\n\n\u5B9F\u4F53\u5316\u5217\u30FBSELECT \u5225\u540D\u306B\u82F1\u5B57\u304C\u3042\u308B\u5834\u5408\u306E\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u306E\u6271\u3044\u306F [\u57FA\u672C\u30EB\u30FC\u30EB\u300C\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u300D](#\u5927\u6587\u5B57\u5C0F\u6587\u5B57) \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u5B8C\u5168\u4E00\u81F4\u3092\u5148\u306B\u8A66\u3057\u3001\u305D\u306E\u5F8C\u3067\u5C0F\u6587\u5B57\u3078\u6B63\u898F\u5316\u3055\u308C\u305F\u5217\u540D\u3092\u89E3\u6C7A\u3057\u307E\u3059\u3002\u7269\u7406 APP \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u306B\u306F\u3053\u306E\u6B63\u898F\u5316\u3092\u9069\u7528\u3057\u307E\u305B\u3093\u3002\n\n`ORDER BY` \u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u512A\u5148\u3057\u307E\u3059\u304C\u3001`GROUP BY` \u306F**\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u512A\u5148**\u3057\u307E\u3059\u3002`GROUP BY` \u306F\u30B0\u30EB\u30FC\u30D7\u5316\u524D\u306E\u884C\u306B\u5BFE\u3059\u308B\u64CD\u4F5C\u3067\u3001`ORDER BY` \u306F\u51FA\u529B\u884C\u306B\u5BFE\u3059\u308B\u64CD\u4F5C\u3060\u304B\u3089\u3067\u3059\uFF08\u6A19\u6E96 SQL / MySQL \u3068\u540C\u3058\uFF09\u3002\n\n\u6B21\u306F\u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u524D\u306B\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n\n- **\u96C6\u8A08\u95A2\u6570\u306E\u30A8\u30A4\u30EA\u30A2\u30B9**\uFF08`SELECT COUNT(*) AS \u4EF6\u6570 \u2026 GROUP BY \u4EF6\u6570`\uFF09\u3002\u30B0\u30EB\u30FC\u30D7\u5316\u524D\u306B\u5024\u304C\u78BA\u5B9A\u3057\u306A\u3044\u305F\u3081\u3067\u3059\u3002\u96C6\u8A08\u3092\u542B\u3080 `CASE` / \u6587\u5B57\u5217\u95A2\u6570 / \u9023\u7D50\u5F0F\u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u3001\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u4ED8\u3051\u3066\u3044\u306A\u3044\u96C6\u8A08\u5217\u306E\u5408\u6210\u540D\uFF08`` GROUP BY `SUM(\u91D1\u984D)` ``\uFF09\u3082\u540C\u69D8\u3067\u3059\u3002\n- \u540C\u540D\u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u8907\u6570\u3042\u308A\u3001`GROUP BY` \u304C\u305D\u308C\u3092\u30A8\u30A4\u30EA\u30A2\u30B9\u3068\u3057\u3066\u89E3\u6C7A\u3057\u3088\u3046\u3068\u3057\u305F\u5834\u5408\uFF08\u540C\u540D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u3042\u308C\u3070\u30D5\u30A3\u30FC\u30EB\u30C9\u512A\u5148\u3067\u6B63\u5E38\u306B\u52D5\u304D\u307E\u3059\uFF09\u3002\n- JOIN \u3067\u8907\u6570\u306E\u30C6\u30FC\u30D6\u30EB\u306B\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u3042\u308B\u975E\u4FEE\u98FE\u540D\u3002\u30C6\u30FC\u30D6\u30EB\u5225\u540D\u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n- `GROUPING()` \u5217\u3084\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u3002\n- **\u96C6\u8A08\u3082\u30B0\u30EB\u30FC\u30D7\u5316\u3082\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u53C2\u7167**\uFF08`SELECT \u88FD\u54C1\u540D, \u500B\u6570, SUM(\u500B\u6570) \u2026 GROUP BY \u88FD\u54C1\u540D` \u306E `\u500B\u6570`\uFF09\u3002\u2192 [\u96C6\u8A08\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u306F\u66F8\u3051\u307E\u305B\u3093](#\u96C6\u8A08\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u306F\u66F8\u3051\u307E\u305B\u3093)\uFF08v3.57.0\u301C\uFF09\n\n> `GROUP BY ROLLUP(...)` / `GROUP BY GROUPING SETS (...)`\uFF08[\u5C0F\u8A08\u30FB\u7DCF\u8A08](#\u5C0F\u8A08\u7DCF\u8A08rollup--cube--grouping-sets--grouping)\uFF09\u306E grouping item \u306F**\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u307F**\u3067\u3001\u30A8\u30A4\u30EA\u30A2\u30B9\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08\u5F93\u6765\u3069\u304A\u308A\uFF09\u3002\n\n### SELECT \u5185\u3067\u306F\u540C\u3058 SELECT \u306E\u5225\u540D\u3092\u53C2\u7167\u3057\u307E\u305B\u3093\n\n**SELECT \u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u3001\u305D\u306E query block \u306E\u5165\u529B\u5217\u3092\u53C2\u7167\u3057\u307E\u3059\u3002** \u540C\u3058 SELECT \u53E5\u306B\u3042\u308B\u5225\u306E\u5217\u306E alias \u306F\u53C2\u7167\u3057\u307E\u305B\u3093\u3002\u5217\u3092\u5DE6\u304B\u3089\u53F3\u3078\u66F8\u3044\u305F\u9806\u5E8F\u3067\u3082\u610F\u5473\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n\n```sql\nSELECT \u500B\u6570 * 2 AS \u500D,\n SUM(\u500B\u6570) AS \u500B\u6570\nFROM APP100\nGROUP BY \u88FD\u54C1\u540D, \u500B\u6570\n```\n\n`\u500D` \u306E `\u500B\u6570` \u306F\u5165\u529B\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u3059\u3002\u96C6\u8A08\u7D50\u679C\u306E alias `\u500B\u6570` \u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306E alias \u3082\u540C\u3058 SELECT \u306E\u5225\u5F0F\u304B\u3089\u306F\u898B\u3048\u307E\u305B\u3093\u3002\n\n```sql\nSELECT \u500B\u6570 * 2 AS \u500D,\n ROW_NUMBER() OVER (ORDER BY $id) AS \u500B\u6570\nFROM APP100\n```\n\n\u96C6\u8A08\u30FB\u30A6\u30A3\u30F3\u30C9\u30A6\u306E alias \u304C\u5165\u529B\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u540C\u540D\u3067\u3082\u30A8\u30E9\u30FC\u3084\u8B66\u544A\u306B\u306F\u306A\u308A\u307E\u305B\u3093\u3002`HAVING` \u3068\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u901A\u5E38 `ORDER BY` \u306F\u5225\u306E\u53E5\u306A\u306E\u3067\u3001\u5F93\u6765\u3069\u304A\u308A SELECT alias \u3092\u53C2\u7167\u3067\u304D\u307E\u3059\u3002CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FB\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u5B9F\u4F53\u5316\u3057\u305F\u5F8C\u306F\u3001\u305D\u306E\u516C\u958B\u51FA\u529B\u5217\u304C\u4E0B\u6D41 query block \u306E\u901A\u5E38\u306E\u5165\u529B\u5217\u306B\u306A\u308A\u307E\u3059\u3002\n\n### \u96C6\u8A08\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u306F\u66F8\u3051\u307E\u305B\u3093\n\n**\uFF08\u5B9F\u6E2C\u30FBv3.57.0\uFF09**\n\n**\u96C6\u8A08\u3092\u542B\u3080\u30AF\u30A8\u30EA\u3067\u306F\u3001`SELECT` / `HAVING` / `ORDER BY` \u306B\u66F8\u3051\u308B\u5217\u53C2\u7167\u306F\u6B21\u306E\u3044\u305A\u308C\u304B\u3060\u3051\u3067\u3059\u3002**\n\n1. **`GROUP BY` \u306B\u66F8\u3044\u305F\u5217\u305D\u306E\u3082\u306E**\n2. **`GROUP BY` \u306B\u66F8\u3044\u305F\u5217\uFF08\u307E\u305F\u306F\u5F0F\uFF09\u3060\u3051\u304B\u3089\u8A08\u7B97\u3057\u305F\u5F0F**\n3. **\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u306E\u4E2D**\n\n**\u3069\u308C\u306B\u3082\u5F53\u3066\u306F\u307E\u3089\u306A\u3044\u5217\u306F\u3001\u30EC\u30B3\u30FC\u30C9\u3092\u53D6\u5F97\u3059\u308B\u524D\u306B\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002**\n\n```sql\nSELECT \u88FD\u54C1\u540D, \u500B\u6570, SUM(\u500B\u6570) AS \u5408\u8A08 FROM APP100 GROUP BY \u88FD\u54C1\u540D -- \u30A8\u30E9\u30FC\uFF08\u500B\u6570\uFF09\nSELECT \u88FD\u54C1\u540D, \u500B\u6570, SUM(\u500B\u6570) AS \u5408\u8A08 FROM APP100 -- \u30A8\u30E9\u30FC\uFF08GROUP BY \u304C\u7121\u304F\u3066\u3082\u540C\u3058\uFF09\nSELECT \u88FD\u54C1\u540D, SUM(\u500B\u6570) AS \u5408\u8A08 FROM APP100 GROUP BY \u88FD\u54C1\u540D HAVING \u500B\u6570 > 0 -- \u30A8\u30E9\u30FC\n```\n\n**`GROUP BY` \u304C\u7121\u304F\u3066\u3082\u96C6\u8A08\u95A2\u6570\u304C\u3042\u308C\u3070\u540C\u3058\u898F\u5247\u304C\u52B9\u304D\u307E\u3059**\uFF08\u5165\u529B\u5168\u4F53\u304C 1 \u30B0\u30EB\u30FC\u30D7\u306B\u306A\u308B\u305F\u3081\uFF09\u3002\n\n**\u901A\u308B\u5F62**\n\n```sql\nSELECT \u88FD\u54C1\u540D, SUM(\u500B\u6570) AS \u5408\u8A08 FROM APP100 GROUP BY \u88FD\u54C1\u540D\nSELECT DATE_FORMAT(\u65E5\u4ED8,'%Y-%m') AS \u5E74\u6708, SUM(\u500B\u6570) FROM APP100 GROUP BY \u5E74\u6708\nSELECT \u500B\u6570 + 1 AS \u52A0\u7B97, SUM(\u500B\u6570) FROM APP100 GROUP BY \u500B\u6570 -- \u30AD\u30FC\u3060\u3051\u304B\u3089\u8A08\u7B97\u3057\u305F\u5F0F\nSELECT YEAR(\u65E5\u4ED8) + 1 AS \u7FCC\u5E74, SUM(\u500B\u6570) FROM APP100 GROUP BY YEAR(\u65E5\u4ED8)\nSELECT \u88FD\u54C1\u540D, \u500B\u6570 FROM APP100 -- \u96C6\u8A08\u3082\u30B0\u30EB\u30FC\u30D7\u5316\u3082\u7121\u3044\u7D20\u306E SELECT\nSELECT SUM(\u500B\u6570) OVER () AS \u7DCF\u8A08 FROM APP100 -- \u30A6\u30A3\u30F3\u30C9\u30A6\u3060\u3051\n```\n\n**\u79FB\u884C**\n\n| \u3057\u305F\u3044\u3053\u3068 | \u66F8\u304D\u65B9 |\n|---|---|\n| \u30B0\u30EB\u30FC\u30D7\u3054\u3068\u306B 1 \u3064\u306B\u6C7A\u307E\u308B\u5024\u3092\u51FA\u3059 | **`MIN(<\u5217>)`** / `MAX(<\u5217>)` |\n| \u305D\u306E\u5217\u3067\u3082\u884C\u3092\u5206\u3051\u308B | **`GROUP BY` \u306B\u8DB3\u3059** |\n\n**`ANY_VALUE()` \u306F\u3042\u308A\u307E\u305B\u3093\u3002** `MIN()` / `MAX()` \u304C\u540C\u3058\u5F79\u5272\u3092\u679C\u305F\u3057\u307E\u3059\u3002\n\n> **v3.57.0 \u3088\u308A\u524D\u306F\u3001\u3053\u308C\u3089\u306F\u9ED9\u3063\u3066\u300C\u30B0\u30EB\u30FC\u30D7\u306E\u5148\u982D\u30EC\u30B3\u30FC\u30C9\u306E\u5024\u300D\u3092\u8FD4\u3057\u3066\u3044\u307E\u3057\u305F\u3002**\n> **`SELECT \u88FD\u54C1\u540D, \u500B\u6570, SUM(\u500B\u6570) \u2026 GROUP BY \u88FD\u54C1\u540D` \u306E `\u500B\u6570` \u306F\u3001\n> \u305D\u306E\u30B0\u30EB\u30FC\u30D7\u306E 220 \u4EF6\u306E\u3046\u3061 1 \u4EF6\u306E\u5024**\u3067\u3057\u305F\u3002\u30A8\u30E9\u30FC\u3082\u8B66\u544A\u3082\u51FA\u307E\u305B\u3093\u3067\u3057\u305F\u3002\n\n> **`ksql_validate` \u306F\u69CB\u6587\u3068\u9759\u7684\u691C\u67FB\u3060\u3051**\u3092\u884C\u3044\u3001kintone \u306E\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3092\u8AAD\u307F\u307E\u305B\u3093\u3002\n> **\u540C\u540D\u306E\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u3068 SELECT \u30A8\u30A4\u30EA\u30A2\u30B9\u306E\u3069\u3061\u3089\u3078 `GROUP BY` \u304C\u89E3\u6C7A\u3055\u308C\u308B\u304B\u306F\u3001\n> \u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u304C\u8981\u308B**\u305F\u3081\u3001`ksql_validate` \u304C\u6210\u529F\u3057\u3066\u3082\u5B9F\u884C\u6642\u306B\u3053\u306E\u30A8\u30E9\u30FC\u306B\u306A\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n> **`ksql_explain` \u3068\u5B9F\u884C\u306F\u6700\u7D42\u5224\u65AD\u3092\u3057\u307E\u3059\u3002**\n\n> **`ROLLUP` / `CUBE` / `GROUPING SETS` \u3067\u306F\u4EE5\u524D\u304B\u3089\u30A8\u30E9\u30FC**\u306B\u306A\u3063\u3066\u3044\u307E\u3057\u305F\u3002\n> v3.57.0 \u3067 ordinary `GROUP BY` \u3068 `GROUP BY` \u7121\u3057\u96C6\u8A08\u306B\u3082\u540C\u3058\u898F\u5247\u304C\u52B9\u304D\u307E\u3059\u3002\n\n### \u96C6\u8A08\u95A2\u6570\n\n| \u95A2\u6570 | \u610F\u5473 | NULL/\u7A7A\u306E\u6271\u3044 |\n|------|------|---------------|\n| `COUNT(*)` | \u5168\u884C\u6570 | NULL \u3092\u542B\u3080\u5168\u884C\u3092\u6570\u3048\u308B |\n| `COUNT(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u7A7A\u3067\u306A\u3044\u884C\u6570 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `SUM(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5408\u8A08 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `AVG(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u5E73\u5747 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `MAX(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u6700\u5927\u5024 | NULL \u306F\u30B9\u30AD\u30C3\u30D7\u3002\u9078\u629E\u3055\u308C\u305F\u7A7A\u30BB\u30EB\u306F canonical empty band \u306E\u5019\u88DC |\n| `MIN(\u30D5\u30A3\u30FC\u30EB\u30C9)` | \u6700\u5C0F\u5024 | NULL \u306F\u30B9\u30AD\u30C3\u30D7\u3002\u9078\u629E\u3055\u308C\u305F\u7A7A\u30BB\u30EB\u306F canonical empty band \u306E\u5019\u88DC |\n| `GROUP_CONCAT([DISTINCT] \u5F15\u6570 [SEPARATOR '\u533A\u5207\u308A'])` | \u6587\u5B57\u5217\u9023\u7D50 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `VAR_POP([DISTINCT] \u5F15\u6570)` | \u6BCD\u96C6\u56E3\u5206\u6563 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `VAR_SAMP([DISTINCT] \u5F15\u6570)` | \u6A19\u672C\u5206\u6563 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `STDDEV_POP([DISTINCT] \u5F15\u6570)` | \u6BCD\u96C6\u56E3\u6A19\u6E96\u504F\u5DEE | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `STDDEV_SAMP([DISTINCT] \u5F15\u6570)` | \u6A19\u672C\u6A19\u6E96\u504F\u5DEE | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `MEDIAN([DISTINCT] \u5F15\u6570)` | \u4E2D\u592E\u5024 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u30B9\u30AD\u30C3\u30D7 |\n| `MODE(\u5F15\u6570)` | \u6700\u983B\u5024 | \u7A7A\u6587\u5B57\u30FBNULL \u306F\u5019\u88DC\u304B\u3089\u9664\u5916 |\n\n> **`MAX`/`MIN`/`MODE` \u306E\u6BD4\u8F03\u898F\u5247**: \u5B9F\u30A2\u30D7\u30EA\u306E NUMBER \u3068\u6570\u5024\u5F62\u5F0F CALC \u306F\u6570\u5024\u9806\u3001\u30C6\u30AD\u30B9\u30C8\u30FB\u9078\u629E\u30FB\u65E5\u6642\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u6587\u5B57\u5217\u5F62\u5F0F CALC \u306F\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3001\u9078\u629E\u80A2\u30FBSTATUS \u306F\u5B9A\u7FA9\u9806\u3067\u6BD4\u8F03\u3057\u307E\u3059\u3002\u65E5\u6642\u306E\u6642\u7CFB\u5217\u9806\u3068\u4E00\u81F4\u3059\u308B\u306E\u306F kintone \u304C\u8FD4\u3059\u6B63\u898F\u5316\u5F62\u5F0F\uFF08DATE=`YYYY-MM-DD`\u3001TIME=`HH:mm`\u3001DATETIME/\u4F5C\u6210\u65E5\u6642/\u66F4\u65B0\u65E5\u6642=`...Z`\uFF09\u304C\u524D\u63D0\u3067\u3059\u3002\u78BA\u5B9A\u3067\u304D\u305F\u578B\u30E1\u30BF\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB/CTE\u306B\u3082\u4F1D\u64AD\u3057\u307E\u3059\u3002`CASE` \u5F15\u6570\u306F\u5168\u5206\u5C90\u304C\u540C\u3058\u578B\u306A\u3089\u305D\u306E\u578B\u3001\u578B\u304C\u6DF7\u5728\u3059\u308B\u304B\u4E0D\u660E\u306A\u3089\u6587\u5B57\u5217\u3068\u3057\u3066\u6BD4\u8F03\u3057\u307E\u3059\u3002`MODE` \u306E\u7B97\u8853\u5F0F\u5F15\u6570\u306F\u6570\u5024\u9806\u3001\u578B\u30E1\u30BF\u4E0D\u660E\u306E\u76F4\u63A5\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u5B89\u5168\u5074\u306E\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3067\u3059\u3002\n\n```sql\nSELECT COUNT(*) AS \u7DCF\u4EF6\u6570, SUM(\u91D1\u984D) AS \u5408\u8A08\u91D1\u984D, AVG(\u91D1\u984D) AS \u5E73\u5747\u91D1\u984D\nFROM APP100\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86'\n```\n\n### \u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u306B\u5F0F\u3092\u6307\u5B9A\uFF08v3.16.0\uFF09\n\n\u5F15\u6570\u3092\u53D6\u308B\u5168 12 \u96C6\u8A08\u95A2\u6570\u306B\u3001\u5F93\u6765\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u7B97\u8853\u5F0F\u30FB\u95A2\u6570\u547C\u3073\u51FA\u3057\u306B\u52A0\u3048\u3066\u3001`CASE` \u5F0F\u30FB`||` \u9023\u7D50\u30FB\u30B9\u30AB\u30E9\u30FC\u5909\u6570 `@var` \u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u95A2\u6570\u3054\u3068\u306E\u7A7A\u5024\u30FB\u5B8C\u5168\u5165\u529B\u30FB`DISTINCT` \u898F\u7D04\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n\n```sql\n-- \u6761\u4EF6\u4ED8\u304D\u96C6\u8A08\nSELECT\n \u90E8\u7F72,\n SUM(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) AS \u53D7\u6CE8\u58F2\u4E0A,\n COUNT(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8' THEN 1 END) AS \u53D7\u6CE8\u4EF6\u6570\nFROM APP100\nGROUP BY \u90E8\u7F72\n\n-- \u30AB\u30C6\u30B4\u30EA\u3092\u5217\u3078\u5C55\u958B\u3059\u308B\u6A2A\u6301\u3061\u30D4\u30DC\u30C3\u30C8\nSELECT\n \u90E8\u7F72,\n SUM(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) AS \u53D7\u6CE8,\n SUM(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u63D0\u6848\u4E2D' THEN \u58F2\u4E0A ELSE 0 END) AS \u63D0\u6848\u4E2D\nFROM APP100\nGROUP BY \u90E8\u7F72\n```\n\n> **\u96C6\u8A08\u3059\u308B\u5024\u304C 1 \u3064\u3082\u7121\u3044\u3068\u304D\u306E\u623B\u308A\u5024\u306F\u3001\u95A2\u6570\u3054\u3068\u306B\u9055\u3044\u307E\u3059\u3002** `GROUP BY` \u306E\u7121\u3044\u96C6\u8A08\u306F\u5BFE\u8C61\u304C 0 \u884C\u3067\u3082 1 \u884C\u3092\u8FD4\u3057\u307E\u3059\u304C\u3001\u305D\u306E\u5024\u306F `0` \u3068\u306F\u9650\u308A\u307E\u305B\u3093\uFF08\u2192 [\xA78\u300C0 \u4EF6\u6642\u306E\u6319\u52D5\u300D](#0-\u4EF6\u6642\u306E\u6319\u52D5)\uFF09\u3002\n\n- `CASE` \u306E `ELSE` \u3092\u7701\u7565\u3057\u305F\u975E\u4E00\u81F4\u884C\u306F\u96C6\u8A08\u304B\u3089\u9664\u5916\u3055\u308C\u307E\u3059\u3002\u3057\u305F\u304C\u3063\u3066 `COUNT(CASE WHEN \u6761\u4EF6 THEN 1 END)` \u306F\u4E00\u81F4\u4EF6\u6570\u3067\u3059\n- \u6761\u4EF6\u306B\u4E00\u81F4\u3057\u3066\u9078\u629E\u3055\u308C\u305F\u7A7A\u30BB\u30EB\u3068\u3001\u660E\u793A\u3057\u305F `ELSE ''` \u306F\u3001`MIN` / `MAX` \u3067\u306F\u65E2\u5B58\u306E canonical empty band \u306E\u5019\u88DC\u306B\u6B8B\u308A\u307E\u3059\u3002`SUM` / `AVG` / `GROUP_CONCAT` / \u7D71\u8A08\u96C6\u7D04 / `MODE` \u306E\u7A7A\u5024\u898F\u7D04\u306F\u5F93\u6765\u3069\u304A\u308A\u3067\u3059\n- \u6BD4\u8F03\u30FB\u8FF0\u8A9E\u305D\u306E\u3082\u306E\u3092\u5024\u306B\u3059\u308B `SUM(\u58F2\u4E0A > 0)` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002`SUM(CASE WHEN \u58F2\u4E0A > 0 THEN 1 ELSE 0 END)` \u306E\u3088\u3046\u306B\u5024\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08ParseError \u3067\u3082\u3053\u306E\u5F62\u3092\u6848\u5185\u3057\u307E\u3059\uFF09\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u3068\u96C6\u8A08\u306E\u5165\u308C\u5B50\uFF08`SUM(SUM(x))`\uFF09\u306F\u5F15\u6570\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`MODE(DISTINCT ...)` \u3082\u5F15\u304D\u7D9A\u304D\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n- `HAVING SUM(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) > 1000000` \u3082\u540C\u3058\u66F8\u304D\u65B9\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u65E2\u5B58\u306E\u7B97\u8853\u5F0F\u5F15\u6570\u306E\u6319\u52D5\u306F\u5909\u308F\u308A\u307E\u305B\u3093\n\n### \u96C6\u8A08\u7D50\u679C\u306E\u7B97\u8853\u5F0F\n\n\u96C6\u8A08\u3092\u542B\u3080\u7B97\u8853\u5F0F\u306F**\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308A**\u3001\u88AB\u6F14\u7B97\u5B50\u306B\u306F\u96C6\u8A08\u95A2\u6570\u30FB\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u30FB`@\u5909\u6570`\u30FB\n**ordinary `GROUP BY` \u306B\u66F8\u3044\u305F\u8868\u8A18\u3068\u4E00\u81F4\u3059\u308B\u5217**\u3092\u66F8\u3051\u307E\u3059\u3002SELECT \u5217\u3068 `HAVING` \u306E\u4E21\u65B9\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT \u5206\u985E, SUM(\u58F2\u4E0A) * \u5358\u4FA1 FROM APP1 GROUP BY \u5206\u985E, \u5358\u4FA1 -- \u53EF\nSELECT \u5206\u985E, SUM(\u58F2\u4E0A) * \u62C5\u5F53\u8005 FROM APP1 GROUP BY \u5206\u985E -- \u4E0D\u53EF\uFF08GROUP BY \u306B\u7121\u3044\uFF09\nSELECT \u5206\u985E, \u5358\u4FA1 * SUM(\u58F2\u4E0A) FROM APP1 GROUP BY \u5206\u985E, \u5358\u4FA1 -- \u4E0D\u53EF\uFF08\u96C6\u8A08\u95A2\u6570\u59CB\u307E\u308A\u3067\u306A\u3044\uFF09\n```\n\n\u4FEE\u98FE\u540D\u3082\u8868\u8A18\u3092\u5408\u308F\u305B\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u305F\u3068\u3048\u3070 `GROUP BY m.\u5358\u4FA1` \u306B\u5BFE\u3057\u3066\u4F7F\u3048\u308B\u306E\u306F\n`SUM(t.\u6570\u91CF) * m.\u5358\u4FA1` \u3067\u3042\u308A\u3001\u975E\u4FEE\u98FE\u306E `SUM(t.\u6570\u91CF) * \u5358\u4FA1` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n`GROUP BY` \u306E\u5F0F\u30FB\u95A2\u6570\u30FBSELECT alias \u3082\u3001\u3053\u306E\u4F4D\u7F6E\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\n`ROLLUP` / `CUBE` / `GROUPING SETS` \u3067\u306F\u3001\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u3051\u307E\u305B\u3093\n\uFF08\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u3067\u5024\u304C\u5B9A\u307E\u3089\u306A\u3044\u305F\u3081\uFF09\u3002\n\n**`SUM(a) * \u5358\u4FA1` \u3068 `SUM(a * \u5358\u4FA1)` \u306F\u540C\u3058\u5024\u306B\u306A\u308B\u3068\u306F\u9650\u308A\u307E\u305B\u3093\u3002** \u5C0F\u6570\u3067\u306F\u4E38\u3081\u306E\u4F4D\u7F6E\u304C\u9055\u3044\u3001\n\u975E\u6570\u5024\u306E\u5217\u3067\u306F\u524D\u8005\u304C `NaN`\u3001\u5F8C\u8005\u304C `0` \u306B\u306A\u308A\u307E\u3059\u3002\n\n### \u5C0F\u8A08\u30FB\u7DCF\u8A08\uFF08ROLLUP / CUBE / GROUPING SETS / GROUPING\uFF09\n\n`GROUP BY ROLLUP(a[, b ...])`\u3001`GROUP BY CUBE(a[, b ...])`\u3001`GROUP BY GROUPING SETS ((...), (...), ())` \u306F\u3001\u660E\u7D30\u306B\u52A0\u3048\u3066\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u3092\u540C\u3058\u7D50\u679C\u3078\u51FA\u529B\u3057\u307E\u3059\u30021 \u30AF\u30A8\u30EA\u3067\u5FC5\u8981\u306A\u968E\u5C64\u3092\u307E\u3068\u3081\u3066\u96C6\u8A08\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- \u5358\u4E00\u5217 ROLLUP: \u4F1A\u793E\u5225\u660E\u7D30\u3068\u7DCF\u8A08\nSELECT \u4F1A\u793E\u540D, SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08\nFROM APP100\nGROUP BY ROLLUP(\u4F1A\u793E\u540D)\n\n-- \u8907\u6570\u5217 ROLLUP: \u5730\u57DF\xD7\u4F1A\u793E\u660E\u7D30\u3001\u5730\u57DF\u5C0F\u8A08\u3001\u7DCF\u8A08\nSELECT \u5730\u57DF, \u4F1A\u793E\u540D, SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08\nFROM APP100\nGROUP BY ROLLUP(\u5730\u57DF, \u4F1A\u793E\u540D)\n\n-- CUBE: \u660E\u7D30\u306B\u52A0\u3048\u3001\u5730\u57DF\u5C0F\u8A08\u30FB\u4F1A\u793E\u5C0F\u8A08\u30FB\u7DCF\u8A08\u3092\u3059\u3079\u3066\u51FA\u529B\nSELECT \u5730\u57DF, \u4F1A\u793E\u540D, SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08\nFROM APP100\nGROUP BY CUBE(\u5730\u57DF, \u4F1A\u793E\u540D)\n\n-- \u5FC5\u8981\u306A\u968E\u5C64\u3060\u3051\u3092\u660E\u793A\nSELECT \u5730\u57DF, \u4F1A\u793E\u540D, SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08\nFROM APP100\nGROUP BY GROUPING SETS ((\u5730\u57DF, \u4F1A\u793E\u540D), (\u5730\u57DF), ())\n```\n\n`ROLLUP(a, b)` \u306F `(a, b)`\u3001`(a)`\u3001`()` \u306E\u968E\u5C64\u3060\u3051\u3092\u4F5C\u308A\u307E\u3059\u3002`CUBE(a, b)` \u306F\u52A0\u3048\u3066 `(b)` \u3082\u4F5C\u308A\u3001`(a, b)`\u30FB`(a)`\u30FB`(b)`\u30FB`()` \u306E\u5168 `2^n` \u7D44\u5408\u305B\uFF08\u5404\u8EF8\u306E\u5C0F\u8A08\u3068\u7DCF\u8A08\uFF09\u3092\u51FA\u529B\u3057\u307E\u3059\u3002\u4E21\u8EF8\u306E\u5C0F\u8A08\u3092\u63C3\u3048\u305F\u3044\u3068\u304D\u306B\u4F7F\u3044\u307E\u3059\u3002\n\n`GROUPING(field)` \u306F\u3001\u305D\u306E\u884C\u3067 `field` \u304C\u96C6\u7D04\u3055\u308C\u305F super-aggregate \u884C\u306A\u3089 `1`\u3001\u30B0\u30EB\u30FC\u30D7\u30AD\u30FC\u3068\u3057\u3066\u6B8B\u3063\u3066\u3044\u308C\u3070 `0` \u3092\u8FD4\u3057\u307E\u3059\u3002\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u306E grouped \u5217\u306F\u7A7A\u6587\u5B57\u306B\u306A\u308B\u305F\u3081\u3001\u5B9F\u30C7\u30FC\u30BF\u306E\u7A7A\u30BB\u30EB\u3068\u306E\u5224\u5225\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u5024\u3067\u306F\u306A\u304F `GROUPING(field)` \u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\u901A\u5E38\u306E `ORDER BY GROUPING(\u4F1A\u793E\u540D)` \u3092\u6607\u9806\u3067\u6307\u5B9A\u3059\u308B\u3068\u3001\u7DCF\u8A08\u884C\u3092\u672B\u5C3E\u3078\u5BC4\u305B\u3089\u308C\u307E\u3059\uFF08\xA710 \u3082\u53C2\u7167\uFF09\u3002\n\n```sql\nSELECT\n CASE WHEN GROUPING(\u4F1A\u793E\u540D) = 1 THEN '\u5408\u8A08' ELSE \u4F1A\u793E\u540D END AS \u4F1A\u793E\u540D,\n GROUPING(\u4F1A\u793E\u540D) AS grouping_company,\n COUNT(*) AS \u6848\u4EF6\u6570,\n SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08,\n SUM(CASE WHEN \u5546\u8AC7\u30D5\u30A7\u30FC\u30BA = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) AS \u53D7\u6CE8\u6E08\u58F2\u4E0A,\n SUM(CASE WHEN \u5546\u8AC7\u30D5\u30A7\u30FC\u30BA IN ('\u63D0\u6848\u4E2D','\u5185\u793A') THEN \u58F2\u4E0A ELSE 0 END) AS \u898B\u8FBC\u58F2\u4E0A\nFROM APP100\nGROUP BY ROLLUP(\u4F1A\u793E\u540D)\nORDER BY GROUPING(\u4F1A\u793E\u540D), \u58F2\u4E0A\u5408\u8A08 DESC\n```\n\n\u3053\u306E\u4F8B\u306F B64 \u306E\u6761\u4EF6\u4ED8\u304D\u96C6\u8A08\u3068\u4F75\u7528\u3057\u3001\u4F1A\u793E\u5225\u660E\u7D30\u3068\u7DCF\u8A08\u3092\u8FD4\u3057\u307E\u3059\u3002`grouping_company` \u306F\u5B9F\u30C7\u30FC\u30BF\u3068\u7DCF\u8A08\u884C\u3092\u6A5F\u68B0\u7684\u306B\u5224\u5225\u3059\u308B\u5024\u3067\u3059\u3002\n\n- grouping item\uFF08`ROLLUP` / `CUBE` / `GROUPING SETS` \u306E\u8981\u7D20\uFF09\u3068 `GROUPING()` \u306E\u5F15\u6570\u306F\u3001APP \u306E\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u307E\u305F\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3060\u3051\u3067\u3059\u3002\u5F0F\u30FBSELECT alias\u30FBCTE\uFF0F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5B9F\u4F53\u5316\u5217\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n- `ROLLUP` / `CUBE` / `GROUPING SETS` \u306E\u5165\u308C\u5B50\u3001\u901A\u5E38 item \u3068 grouping-set \u306E\u6DF7\u5728\u3001`GROUPING()` \u306E\u5F0F\u5F15\u6570\u30FB\u8907\u6570\u5F15\u6570\u3001`GROUPING_ID` \u306F\u672A\u5BFE\u5FDC\u3067\u3059\n- `GROUPING()` \u306F SELECT \u5217\u3001SELECT \u306E CASE \u6761\u4EF6\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u901A\u5E38 `ORDER BY`\u3001`HAVING`\uFF08`HAVING` \u306F v3.18.0 \u4EE5\u964D\uFF09\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002`HAVING GROUPING(\u4F1A\u793E\u540D) = 1` \u306F\u7DCF\u8A08\u884C\u3060\u3051\u3001`= 0` \u306F\u660E\u7D30\uFF0B\u5C0F\u8A08\u3060\u3051\u306B\u7D5E\u308A\u8FBC\u3081\u307E\u3059\n- `SELECT DISTINCT` \u3092\u4F75\u7528\u3067\u304D\u307E\u3059\uFF08v3.18.0 \u4EE5\u964D\uFF09\u3002`KORDER BY`\u30FB\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u3068\u306E\u4F75\u7528\u306F\u3067\u304D\u307E\u305B\u3093\n- \u5C0F\u8A08\u30FB\u7DCF\u8A08\u306F\u5168\u5165\u529B\u306B\u4F9D\u5B58\u3059\u308B\u305F\u3081\u3001\u5E38\u306B\u5B8C\u5168\u5165\u529B\u304C\u5FC5\u8981\u3067\u3059\u3002`onLimit=truncate` \u306F\u4F7F\u7528\u3067\u304D\u305A\u3001\u53D6\u5F97\u4E0A\u9650\u3078\u5230\u9054\u3057\u305F\u5834\u5408\u306F\u90E8\u5206\u7D50\u679C\u3092\u8FD4\u3055\u305A\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002`SELECT DISTINCT`\u30FB`HAVING`\u30FB`LIMIT` \u3067\u7D50\u679C\u884C\u304C\u6E1B\u308B\u898B\u8FBC\u307F\u3067\u3082\u4E0A\u9650\u306F\u7DE9\u307F\u307E\u305B\u3093\n- \u5C55\u958B\u5F8C\u306E grouping set \u6570\u3001grouping item \u6570\u3001\u751F\u6210\u884C\u6570\u306B\u306F\u5B89\u5168\u4E0A\u9650\u304C\u3042\u308A\u307E\u3059\u3002\u8D85\u904E\u6642\u306F planning \u307E\u305F\u306F\u5B9F\u884C\u6642\u306B fail-closed \u3067\u30A8\u30E9\u30FC\u3068\u306A\u308A\u3001\u90E8\u5206\u7D50\u679C\u3092\u8FD4\u3057\u307E\u305B\u3093\u3002`CUBE(a, b, ...)` \u306F\u5C55\u958B\u5F8C `2^n` \u306E grouping set \u3092\u4F5C\u308B\u305F\u3081\u3001\u4E0A\u9650\u3092\u8D85\u3048\u308B\u5217\u6570\uFF08\u65E2\u5B9A\u4E0A\u9650\u3067\u306F 7 \u5217\u4EE5\u4E0A\uFF09\u306F\u53D6\u5F97\u524D\u306B\u62D2\u5426\u3055\u308C\u307E\u3059\n- \u91CD\u8907\u3059\u308B grouping set \u306F\u9664\u53BB\u305B\u305A\u3001\u305D\u306E\u5206\u306E\u7D50\u679C\u884C\u3092\u4FDD\u6301\u3057\u307E\u3059\u3002`SELECT DISTINCT` \u306F grouping set \u81EA\u4F53\u3092\u6D88\u3055\u305A\u3001SELECT \u51FA\u529B\u5217\u306E\u5024\u304C\u5B8C\u5168\u4E00\u81F4\u3059\u308B\u884C\u3060\u3051\u3092\u9664\u53BB\u3057\u307E\u3059\u3002`GROUPING()` \u3092 SELECT \u3057\u3066\u3044\u308C\u3070\u660E\u7D30\uFF08`0`\uFF09\u3068\u5C0F\u8A08\u30FB\u7DCF\u8A08\uFF08`1`\uFF09\u306F\u5225\u884C\u306E\u307E\u307E\u6B8B\u308A\u3001SELECT \u3057\u3066\u304A\u3089\u305A\u5168\u6295\u5F71\u5024\u304C\u540C\u3058\u884C\u306F 1 \u884C\u306B\u307E\u3068\u307E\u308A\u307E\u3059\n\n### GROUP_CONCAT\n\n`GROUP_CONCAT` \u306F\u30B0\u30EB\u30FC\u30D7\u5185\u306E\u7A7A\u3067\u306A\u3044\u5024\u3092\u53CE\u96C6\u9806\u306B\u9023\u7D50\u3057\u307E\u3059\u3002\u65E2\u5B9A\u306E\u533A\u5207\u308A\u6587\u5B57\u306F `,` \u3067\u3059\u3002\n\n```sql\nSELECT \u9867\u5BA2ID, GROUP_CONCAT(\u62C5\u5F53\u8005) AS \u62C5\u5F53\u8005\u4E00\u89A7\nFROM APP100 GROUP BY \u9867\u5BA2ID\n\nSELECT \u9867\u5BA2ID, GROUP_CONCAT(DISTINCT \u696D\u7A2E SEPARATOR ' / ') AS \u696D\u7A2E\u4E00\u89A7\nFROM APP100 GROUP BY \u9867\u5BA2ID\n```\n\n- `DISTINCT` \u306F\u6587\u5B57\u5217\u3068\u3057\u3066\u91CD\u8907\u3092\u9664\u304D\u3001\u6700\u521D\u306B\u73FE\u308C\u305F\u9806\u5E8F\u3092\u4FDD\u3061\u307E\u3059\n- `SEPARATOR` \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002`SEPARATOR ''` \u306F\u533A\u5207\u308A\u306A\u3057\u3067\u3059\n- `GROUP_CONCAT(*)` \u3068 `GROUP_CONCAT(DISTINCT *)` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n- \u95A2\u6570\u5185\u306E `ORDER BY` \u306F\u672A\u5BFE\u5FDC\u3067\u3059\u3002\u9023\u7D50\u9806\u306F WHERE / JOIN \u9069\u7528\u5F8C\u306E\u53CE\u96C6\u9806\u3067\u3042\u308A\u3001\u53D6\u5F97\u9806\u304C\u5909\u308F\u308C\u3070\u7D50\u679C\u3082\u5909\u308F\u308A\u5F97\u307E\u3059\n- \u7D50\u679C\u3092\u9577\u3055\u3067\u5207\u308A\u6368\u3066\u307E\u305B\u3093\u3002\u66F8\u304D\u8FBC\u307F\u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u6700\u5927\u6587\u5B57\u6570\u3092\u8D85\u3048\u305F\u5834\u5408\u306F\u66F8\u304D\u8FBC\u307F\u6642\u306E\u691C\u8A3C\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\n- `GROUP_CONCAT` \u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F `` `GROUP_CONCAT` `` \u3068\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002`SEPARATOR` \u306F\u901A\u5E38\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u3068\u3057\u3066\u3082\u4F7F\u3048\u307E\u3059\n\n### \u7D71\u8A08\u96C6\u7D04\n\n`VAR_POP` / `VAR_SAMP` / `STDDEV_POP` / `STDDEV_SAMP` / `MEDIAN` \u306F\u6570\u5024\u5206\u5E03\u3092\u3001`MODE` \u306F\u6587\u5B57\u5217\u306E\u5B8C\u5168\u4E00\u81F4\u5358\u4F4D\u3067\u6700\u983B\u5024\u3092\u96C6\u8A08\u3057\u307E\u3059\u3002\u5206\u6563\u3068\u6A19\u6E96\u504F\u5DEE\u306F Welford \u6CD5\u3001\u4E2D\u592E\u5024\u306F\u6570\u5024\u6607\u9806\u3067\u6C42\u3081\u307E\u3059\u3002\u5076\u6570\u4EF6\u306E\u4E2D\u592E\u5024\u306F\u4E2D\u592E 2 \u5024\u306E binary64 \u5E73\u5747\u3067\u3059\u3002\n\n```sql\nSELECT \u90E8\u7F72, STDDEV_SAMP(\u91D1\u984D) AS \u6A19\u6E96\u504F\u5DEE, MEDIAN(\u91D1\u984D) AS \u4E2D\u592E\u5024\nFROM APP100\nGROUP BY \u90E8\u7F72\n\nSELECT \u90E8\u7F72, MODE(\u30B9\u30C6\u30FC\u30BF\u30B9) AS \u6700\u983B\u30B9\u30C6\u30FC\u30BF\u30B9\nFROM APP100\nGROUP BY \u90E8\u7F72\n```\n\n- \u53CE\u96C6\u3057\u305F\u5024\u306B\u6570\u5024\u5316\u3067\u304D\u306A\u3044\u5024\u307E\u305F\u306F `Infinity` / `-Infinity` \u304C\u3042\u308C\u3070 `ArgumentError` \u306B\u306A\u308A\u307E\u3059\n- 6 \u95A2\u6570\u306F\u5B8C\u5168\u5165\u529B\u3092\u5FC5\u8981\u3068\u3057\u307E\u3059\u3002`onLimit=truncate` \u3092\u6307\u5B9A\u3057\u3066\u3082\u4E0A\u9650\u5230\u9054\u6642\u306F\u30A8\u30E9\u30FC\u3068\u306A\u308A\u3001\u90E8\u5206\u96C6\u5408\u306E\u7D71\u8A08\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\n- `DISTINCT` \u306F Number \u5316\u5F8C\u306E\u6570\u5024\u540C\u5024\u3067\u91CD\u8907\u3092\u9664\u304D\u307E\u3059\u3002\u305F\u3068\u3048\u3070 `\"1\"` \u3068 `\"01\"` \u306F\u540C\u3058\u5024\u3067\u3059\u3002\u65E2\u5B58\u306E 6 \u96C6\u8A08\uFF08`COUNT` / `SUM` / `AVG` / `MIN` / `MAX` / `GROUP_CONCAT`\uFF09\u306F\u5F93\u6765\u3069\u304A\u308A\u6587\u5B57\u5217\u5358\u4F4D\u3067\u3059\n- `*` \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u5F15\u6570\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3001\u7B97\u8853\u5F0F\u3001\u307E\u305F\u306F\u524D\u63B2\u306E `CASE` \u5F0F\u30FB`||` \u9023\u7D50\u30FB\u30B9\u30AB\u30E9\u30FC\u5909\u6570\u3092 1 \u3064\u6307\u5B9A\u3057\u307E\u3059\n- `MODE` \u306E\u540C\u983B\u5EA6\u5019\u88DC\u306F\u5F15\u6570\u578B\u306E canonical \u9806\u3067\u6700\u5C0F\u306E\u5024\u3092\u9078\u3073\u307E\u3059\u3002canonical \u540C\u5024\uFF08\u6570\u5024\u5217\u306E `\"1\"` \u3068 `\"01\"` \u306A\u3069\uFF09\u306F raw \u6587\u5B57\u5217\u306E\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3092\u4E8C\u6B21\u30AD\u30FC\u306B\u3059\u308B\u305F\u3081\u3001\u5165\u529B\u9806\u306B\u3088\u3089\u305A\u6C7A\u5B9A\u7684\u3067\u3059\n- `MODE` \u306F\u672A\u9078\u629E\uFF08\u7A7A\u30BB\u30EB\uFF09\u3092\u5019\u88DC\u306B\u542B\u3081\u307E\u305B\u3093\u3002\u672A\u9078\u629E\u4EF6\u6570\u306F `COUNT(*) - COUNT(\u30D5\u30A3\u30FC\u30EB\u30C9)` \u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u672A\u9078\u629E\u3092\u30AB\u30C6\u30B4\u30EA\u5316\u3059\u308B\u5834\u5408\u306F `MODE(CASE WHEN \u30D5\u30A3\u30FC\u30EB\u30C9 = '' THEN '\u672A\u9078\u629E' ELSE \u30D5\u30A3\u30FC\u30EB\u30C9 END)` \u3068\u660E\u793A\u3067\u304D\u307E\u3059\n- `MODE(DISTINCT x)` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002`MODE(COALESCE(\u30D5\u30A3\u30FC\u30EB\u30C9, '\u672A\u9078\u629E'))` \u306F\u7B97\u8853\u5F0F\u6271\u3044\u3067\u6570\u5024\u8A55\u4FA1\u3055\u308C\u308B\u305F\u3081\u3001\u3053\u306E\u7528\u9014\u3067\u306F\u524D\u9805\u306E `CASE` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\n- \u7121\u5370\u306E `STDDEV` / `VARIANCE` \u306F\u5225\u540D\u3067\u306F\u306A\u304F\u975E\u5BFE\u5FDC\u3067\u3059\u3002\u6BCD\u96C6\u56E3\u30FB\u6A19\u672C\u306E\u3069\u3061\u3089\u304B\u304C\u65B9\u8A00\u3067\u7570\u306A\u308B\u305F\u3081\u3001`_POP` / `_SAMP` \u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\n- 6 \u95A2\u6570\u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002`MODE` \u3092\u542B\u3080\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F `` `MODE` `` \u306E\u3088\u3046\u306B\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u3067\u56F2\u307F\u307E\u3059\u3002`MODEL` \u306A\u3069\u9577\u3044\u8B58\u5225\u5B50\u306F\u5F71\u97FF\u3092\u53D7\u3051\u307E\u305B\u3093\n\n### DISTINCT \u4ED8\u304D\u96C6\u8A08\n\n```sql\nSELECT COUNT(DISTINCT \u62C5\u5F53\u8005) AS \u62C5\u5F53\u8005\u6570 FROM APP100\nSELECT COUNT(DISTINCT \u90FD\u9053\u5E9C\u770C) AS \u90FD\u9053\u5E9C\u770C\u6570 FROM APP100\n```\n\n### 0 \u4EF6\u6642\u306E\u6319\u52D5\n\nGROUP BY \u306E\u306A\u3044\u96C6\u8A08\u30AF\u30A8\u30EA\u306F\u3001\u5BFE\u8C61\u304C 0 \u4EF6\u3067\u3082**\u5E38\u306B 1 \u884C**\u3092\u8FD4\u3057\u307E\u3059\uFF08SQL \u6A19\u6E96\u6E96\u62E0\uFF09\u3002\n\n```sql\n-- \u8A72\u5F53 0 \u4EF6\u3067\u3082\u300CCOUNT(*) = 0\u300D\u306E 1 \u884C\u304C\u8FD4\u308B\nSELECT COUNT(*) FROM APP100 WHERE \u7570\u5E38\u30D5\u30E9\u30B0 = '1'\n```\n\n**\u3053\u306E\u8868\u304C\u96C6\u8A08\u306E\u623B\u308A\u5024\u306E\u6B63\u672C\u3067\u3059**\uFF08\u5B9F\u6E2C\u30FBv3.54.3\uFF09\u3002\u672C\u66F8\u306E\u4ED6\u306E\u7B87\u6240\u306F\u5024\u3092\u6301\u305F\u305A\u3001\u3053\u3053\u3092\u53C2\u7167\u3057\u307E\u3059\u3002\n\n| \u96C6\u8A08 | 0 \u4EF6\u6642\u306E\u5024 | \u6A19\u6E96 SQL |\n|------|-----------|---|\n| `COUNT(*)` / `COUNT(f)` / `COUNT(DISTINCT f)` | `0` | `0`\uFF08\u4E00\u81F4\uFF09 |\n| `SUM` / `AVG` | `0` | `NULL`\uFF08**\u65B9\u8A00\u5DEE**\uFF09 |\n| `MAX` / `MIN` | `\"\"`\uFF08\u7A7A\u6587\u5B57\u30FB**v3.54.0 \u3067 `0` \u304B\u3089\u5909\u66F4**\uFF09 | `NULL` |\n| `GROUP_CONCAT` | `\"\"`\uFF08\u7A7A\u6587\u5B57\uFF09 | `NULL` |\n| `VAR_POP` / `STDDEV_POP` / `VAR_SAMP` / `STDDEV_SAMP` / `MEDIAN` | `\"\"`\uFF08\u7A7A\u6587\u5B57\uFF09 | `NULL` |\n| `MODE` | `\"\"`\uFF08\u7A7A\u6587\u5B57\uFF09 | `NULL` |\n\n**\u7A7A\u6587\u5B57\u306F kSQL \u306E NULL \u76F8\u5F53**\u3067\u3059\u3002`SUM` / `AVG` \u304C `0` \u3092\u8FD4\u3059\u306E\u306F\u3001**\u7A7A\u30BB\u30EB\u304C\u7B97\u8853\u3067 `0` \u306B\u306A\u308B**\u3068\u3044\u3046 kSQL \u5168\u4F53\u306E\u898F\u7D04\u306B\u5408\u308F\u305B\u3066\u3044\u308B\u305F\u3081\u3067\u3059\u3002\n\n- \u300C\u5BFE\u8C61\u306A\u3057\uFF08COUNT = 0\uFF09\u300D\u3068\u300C\u5408\u8A08\u304C 0\u300D\u3092\u533A\u5225\u3057\u305F\u3044\u5834\u5408\u306F COUNT \u3092\u4F75\u7528\u3057\u3066\u304F\u3060\u3055\u3044\n- GROUP BY \u304C**\u3042\u308B**\u5834\u5408\u306F\u5F93\u6765\u3069\u304A\u308A 0 \u884C\u3092\u8FD4\u3057\u307E\u3059\uFF08\u30B0\u30EB\u30FC\u30D7\u304C\u5B58\u5728\u3057\u306A\u3044\u305F\u3081\uFF09\n- 1 \u4EF6\u3060\u3051\u306E\u30B0\u30EB\u30FC\u30D7\u3067\u306F `VAR_SAMP` / `STDDEV_SAMP` \u306F\u7A7A\u6587\u5B57\u3001`VAR_POP` / `STDDEV_POP` \u306F `0`\u3001`MEDIAN` \u306F\u305D\u306E\u5024\u3067\u3059\n- 1 \u4EF6\u3060\u3051\u306E `MODE` \u306F\u305D\u306E\u5024\u3001\u5168\u4EF6\u304C\u7A7A\u30BB\u30EB\u306A\u3089\u7A7A\u6587\u5B57\u3067\u3059\n- \u3053\u308C\u306B\u3088\u308A ASSERT \u306E\u5065\u5168\u6027\u30C1\u30A7\u30C3\u30AF `ASSERT (SELECT COUNT(*) ... WHERE \u7570\u5E38\u6761\u4EF6) = 0` \u304C\u8A72\u5F53 0 \u4EF6\uFF08\u5065\u5168\u6642\uFF09\u306B\u6210\u7ACB\u3057\u307E\u3059\uFF08\xA726 ASSERT\uFF09\n\n---", uri: "ksql://language-reference/08-group-by-aggregates" }, "09-having": { heading: "9. HAVING", text: "## 9. HAVING\n\nGROUP BY \u5F8C\u306E\u96C6\u8A08\u7D50\u679C\u306B\u5BFE\u3057\u3066\u30D5\u30A3\u30EB\u30BF\u3092\u304B\u3051\u307E\u3059\u3002 \nHAVING \u53E5\u306B\u306F\u96C6\u8A08\u95A2\u6570\u30FBGROUP BY \u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n\u76F4\u63A5\u8A18\u8FF0\u3057\u305F\u96C6\u8A08\u95A2\u6570\u306F\u3001\u540C\u3058\u96C6\u8A08\u304C SELECT \u5217\u306B\u3082\u5B58\u5728\u3059\u308B\u5834\u5408\u306B\u9650\u308A\u8A55\u4FA1\u3067\u304D\u307E\u3059\u3002SELECT \u306B\u306A\u3044\u96C6\u8A08\u3092 HAVING \u5C02\u7528\u3067\u8FFD\u52A0\u8A08\u7B97\u306F\u3057\u307E\u305B\u3093\u3002v3.16.0 \u4EE5\u964D\u306E `CASE` \u5F0F\u5F15\u6570\u3082\u540C\u3058\u898F\u5247\u3067\u76F4\u63A5\u8A18\u8FF0\u3067\u304D\u3001SELECT \u3067\u4ED8\u3051\u305F alias \u304B\u3089\u53C2\u7167\u3059\u308B\u66F8\u304D\u65B9\u3082\u6709\u52B9\u3067\u3059\u3002\n\nB65 \u306E HAVING \u306F grouping set \u306E\u96C6\u7D04\u5F8C\u306B\u5404\u884C\u3078\u4F5C\u7528\u3057\u307E\u3059\u3002\u901A\u5E38\u306E\u96C6\u8A08\u6761\u4EF6\u306B\u52A0\u3048\u3001v3.18.0 \u4EE5\u964D\u306F `HAVING` \u5185\u3067 `GROUPING(field)` \u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002`HAVING GROUPING(\u4F1A\u793E\u540D) = 1` \u306F\u7DCF\u8A08\u30FB\u5C0F\u8A08\u884C\u3060\u3051\u3001`= 0` \u306F\u660E\u7D30\u884C\u3060\u3051\u3092\u6B8B\u3057\u3001`HAVING GROUPING(\u4F1A\u793E\u540D) = 1 AND SUM(\u58F2\u4E0A) > 0` \u306E\u3088\u3046\u306B\u96C6\u8A08\u6761\u4EF6\u3068\u7D44\u307F\u5408\u308F\u305B\u3089\u308C\u307E\u3059\u3002`GROUPING()` \u306F\u884C\u306E\u6240\u5C5E grouping set \u304B\u3089 `0` / `1` \u3092\u8FD4\u3059 membership \u5224\u5B9A\u3067\u3042\u308A\u3001grouped \u5217\u304C\u7A7A\u6587\u5B57\u306E\u660E\u7D30\u884C\u3068\u7DCF\u8A08\u884C\u3092\u53D6\u308A\u9055\u3048\u307E\u305B\u3093\u3002`WHERE`\u30FBJOIN \u6761\u4EF6\u30FB\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u30FB\u30A6\u30A3\u30F3\u30C9\u30A6\u5B9A\u7FA9\u306E\u4E2D\u3067\u306F `GROUPING()` \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\n```sql\nSELECT \u90E8\u7F72, COUNT(*) AS \u4EF6\u6570\nFROM APP100\nGROUP BY \u90E8\u7F72\nHAVING COUNT(*) >= 5\n```\n\n```sql\nSELECT \u62C5\u5F53\u8005, SUM(\u91D1\u984D) AS \u5408\u8A08\nFROM APP100\nGROUP BY \u62C5\u5F53\u8005\nHAVING SUM(\u91D1\u984D) > 1000000\n```\n\n```sql\nSELECT \u90E8\u7F72,\n SUM(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) AS \u53D7\u6CE8\u58F2\u4E0A\nFROM APP100\nGROUP BY \u90E8\u7F72\nHAVING SUM(CASE WHEN \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) > 1000000\n```\n\nWHERE \u3068\u306E\u9055\u3044:\n- `WHERE` \u2014 \u96C6\u8A08\u524D\u306E\u30EC\u30B3\u30FC\u30C9\u306B\u5BFE\u3057\u3066\u30D5\u30A3\u30EB\u30BF\n- `HAVING` \u2014 \u96C6\u8A08\u5F8C\u306E\u30B0\u30EB\u30FC\u30D7\u306B\u5BFE\u3057\u3066\u30D5\u30A3\u30EB\u30BF\n\n```sql\nSELECT \u62C5\u5F53\u8005, COUNT(*) AS \u4EF6\u6570\nFROM APP100\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86' -- \u96C6\u8A08\u524D\u30D5\u30A3\u30EB\u30BF\nGROUP BY \u62C5\u5F53\u8005\nHAVING COUNT(*) >= 3 -- \u96C6\u8A08\u5F8C\u30D5\u30A3\u30EB\u30BF\n```\n\n---", uri: "ksql://language-reference/09-having" }, "10-order-by": { heading: "10. ORDER BY", text: '## 10. ORDER BY\n\n### \u57FA\u672C\n\n```sql\nSELECT * FROM APP100\nORDER BY \u4F5C\u6210\u65E5\u6642 DESC\n\nSELECT * FROM APP100\nORDER BY \u90E8\u7F72 ASC, \u91D1\u984D DESC\n```\n\n- `ASC` \u2014 \u6607\u9806\uFF08\u7701\u7565\u53EF\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\uFF09\n- `DESC` \u2014 \u964D\u9806\n\n### SELECT alias \u306B\u3088\u308B\u30BD\u30FC\u30C8\n\n\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u901A\u5E38 `ORDER BY` \u3067\u306F\u3001SELECT \u51FA\u529B alias \u3092\u30AD\u30FC\u3068\u3057\u3066\u53C2\u7167\u3067\u304D\u307E\u3059\u3002alias \u306E\u5024\u306F SELECT \u5F0F\u3068\u540C\u3058\u898F\u5247\u30FB\u578B\u3067\u8A55\u4FA1\u3057\u3066\u304B\u3089\u30BD\u30FC\u30C8\u3057\u307E\u3059\u3002\n\n```sql\nSELECT \u91D1\u984D AS amount\nFROM APP100\nORDER BY amount DESC\n\nSELECT DAYOFWEEK(\u65E5\u4ED8) AS weekday\nFROM APP100\nORDER BY weekday ASC\n```\n\n- ORDER BY \u540D\u304C SELECT alias \u3068\u5165\u529B\u884C\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u4E21\u65B9\u306B\u5B8C\u5168\u4E00\u81F4\u3059\u308B\u5834\u5408\u306F\u3001**SELECT alias \u3092\u512A\u5148**\u3057\u307E\u3059\u3002\u30C9\u30C3\u30C8\u3092\u542B\u3080 alias \u3082\u5B8C\u5168\u4E00\u81F4\u3092\u5148\u306B\u5224\u5B9A\u3059\u308B\u305F\u3081\u3001\u540C\u540D\u306E\u4FEE\u98FE\u7269\u7406\u5217\u306B\u306F\u305D\u306E ORDER BY \u304B\u3089\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n- \u540C\u3058 alias \u3092\u8907\u6570\u306E SELECT \u5217\u3078\u6307\u5B9A\u3057\u305F\u5834\u5408\u306F\u3001\u51FA\u529B\u3068\u540C\u3058\u304F**\u5F8C\u306B\u8A18\u8FF0\u3057\u305F\u5217\u304C\u512A\u5148**\u3055\u308C\u307E\u3059\n- alias \u306B\u4E00\u81F4\u3057\u306A\u3044\u540D\u524D\u306F\u5F93\u6765\u3069\u304A\u308A\u5165\u529B\u884C\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u3057\u3066\u89E3\u6C7A\u3057\u307E\u3059\u3002\u3069\u3061\u3089\u306B\u3082\u89E3\u6C7A\u3067\u304D\u306A\u3044\u540D\u524D\u306F `ORDER_KEY_UNRESOLVED` \u3067\u5B9F\u884C\u524D\u306B\u62D2\u5426\u3057\u307E\u3059\n- \u3053\u306E alias \u89E3\u6C7A\u306F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u901A\u5E38 `ORDER BY` \u3060\u3051\u306B\u9069\u7528\u3057\u307E\u3059\u3002`OVER (ORDER BY ...)` \u304B\u3089\u540C\u4E00 SELECT \u306E alias \u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002\u5FC5\u8981\u306A\u5834\u5408\u306F CTE \u307E\u305F\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3067\u4E00\u5EA6\u5217\u3092\u5B9F\u4F53\u5316\u3057\u3066\u304F\u3060\u3055\u3044\n- `KORDER BY` \u306F SELECT alias \u3092\u76F4\u63A5\u7269\u7406\u5217\u3068\u3057\u3066\u6271\u3044\u307E\u305B\u3093\n\n### GROUPING() \u306B\u3088\u308B\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u306E\u30BD\u30FC\u30C8\n\nB65 \u306E\u901A\u5E38 `ORDER BY GROUPING(field)` \u3092\u6607\u9806\u3067\u6307\u5B9A\u3059\u308B\u3068\u3001`GROUPING(field)=1` \u3068\u306A\u308B super-aggregate\uFF08\u5C0F\u8A08\u30FB\u7DCF\u8A08\uFF09\u884C\u3092\u672B\u5C3E\u3078\u5BC4\u305B\u3089\u308C\u307E\u3059\u3002B65 \u6587\u306F FULL_SCAN \u3067\u53D6\u5F97\u5F8C\u306B\u30ED\u30FC\u30AB\u30EB\u30BD\u30FC\u30C8\u3057\u307E\u3059\u3002\n\n```sql\nSELECT \u4F1A\u793E\u540D, GROUPING(\u4F1A\u793E\u540D) AS grouping_company, SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08\nFROM APP100\nGROUP BY ROLLUP(\u4F1A\u793E\u540D)\nORDER BY GROUPING(\u4F1A\u793E\u540D), \u58F2\u4E0A\u5408\u8A08 DESC\n```\n\n### canonical\u9806\uFF08v3.0.0\uFF09\n\n\u901A\u5E38\u306E`ORDER BY`\u306F\u3001REST\u53D6\u5F97\u30FBFULL_SCAN\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FBCLI\u30FBMCP\u30FB\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u3069\u306E\u7D4C\u8DEF\u3067\u3082\u3001\u540C\u3058kSQL canonical\u6BD4\u8F03\u898F\u5247\u3092\u4F7F\u3044\u307E\u3059\u3002\n\n- typed string\uFF0F\u578B\u4E0D\u660E: Unicode\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3002NFC/NFD\u7B49\u306EUnicode\u6B63\u898F\u5316\u3084\u30ED\u30B1\u30FC\u30EB\u7167\u5408\u306F\u884C\u3044\u307E\u305B\u3093\n- typed number: `\u7A7A\u30BB\u30EB < -Infinity < \u6709\u9650\u6570 < +Infinity < "NaN" < \u305D\u306E\u4ED6\u975E\u6570\u5024`\u3002\u305D\u306E\u4ED6\u975E\u6570\u5024\u306E\u30D0\u30F3\u30C9\u5185\u306F\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3067\u3059\n- \u9078\u629E\u7CFB: \u30D5\u30A9\u30FC\u30E0\u307E\u305F\u306F\u30D7\u30ED\u30BB\u30B9\u8A2D\u5B9A\u306E\u5B9A\u7FA9\u9806\u3002\u672A\u77E5\u30FB\u524A\u9664\u6E08\u307F\u9078\u629E\u80A2\u306F\u65E2\u77E5\u5024\u306E\u5F8C\u308D\u3067\u3059\n- RECORD_NUMBER: \u30A2\u30D7\u30EA\u30B3\u30FC\u30C9\u3092\u542B\u3080\u8868\u793A\u5024\u304B\u3089\u672B\u5C3E\u306E\u6570\u5024ID\u3092\u4EFB\u610F\u7CBE\u5EA6\u3067\u6BD4\u8F03\u3057\u307E\u3059\n- DESC\u306F\u30D0\u30F3\u30C9\u3092\u542B\u3080\u9806\u5E8F\u5168\u4F53\u3092\u53CD\u8EE2\u3057\u307E\u3059\n\n\u6587\u5B57\u5217`"10"`\u3092\u6570\u502410\u3068\u3057\u3066\u6271\u3046\u5024\u30D9\u30FC\u30B9\u81EA\u52D5\u5224\u5B9A\u306F\u884C\u3044\u307E\u305B\u3093\u3002\u578B\u3092\u78BA\u5B9A\u3067\u304D\u306A\u3044\u5F0F\u30FB\u4E00\u6642\u5217\u3082\u65E2\u5B9A\u306F\u6587\u5B57\u5217\u3067\u3059\u3002\u30ED\u30FC\u30AB\u30EB\u6BD4\u8F03\u5951\u7D04\u306E\u306A\u3044\u8907\u5408\u578B\u306F\u3001\u884C\u6570\u306B\u4F9D\u5B58\u305B\u305Aplanning\u6642\u306B\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n\n`COALESCE` / `ISNULL` / `NULLIF` / `GREATEST` / `LEAST` \u306F\u3001\u5F15\u6570\u304C\u3059\u3079\u3066\u6570\u5024\u306A\u3089\u7D50\u679C\u3082\u6570\u5024\u3068\u3057\u3066\u4E26\u3079\u66FF\u3048\u30FB\u6BD4\u8F03\u3055\u308C\u3001\u6587\u5B57\u5217\u307E\u305F\u306F\u578B\u4E0D\u660E\u306E\u5F15\u6570\u304C\u6DF7\u3056\u308B\u5834\u5408\u306F\u6587\u5B57\u5217\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002\n\n\u540C\u5024\u884C\u306E\u6700\u7D42\u8868\u793A\u9806\u306Fcanonical tie\u3068\u3057\u3066\u5B89\u5B9A\u5316\u3057\u307E\u3059\u304C\u3001`RANK` / `DENSE_RANK`\u306Epeer\u5224\u5B9A\u306B\u306F\u305D\u306Etie\u3092\u6DF7\u305C\u307E\u305B\u3093\u3002JOIN\u3067\u8907\u6570\u30C6\u30FC\u30D6\u30EB\u306B\u540C\u540D\u5217\u304C\u3042\u308B\u5834\u5408\u3001\u975E\u4FEE\u98FE\u30AD\u30FC\u306F`ambiguous column`\u3068\u3057\u3066\u62D2\u5426\u3059\u308B\u305F\u3081\u3001`a.\u5217\u540D`\u306E\u3088\u3046\u306B\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### \u7B97\u8853\u5F0F\u30FB\u95A2\u6570\u306B\u3088\u308B\u30BD\u30FC\u30C8\n\nORDER BY \u306E\u30AD\u30FC\u306B\u7B97\u8853\u5F0F\u3084\u95A2\u6570\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002 \n\u3053\u306E\u5834\u5408\u3001\u81EA\u52D5\u7684\u306B FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002\n\n```sql\n-- \u7B97\u8853\u5F0F\nORDER BY \u5358\u4FA1 * \u6570\u91CF DESC\nORDER BY (\u58F2\u4E0A - \u539F\u4FA1) / \u58F2\u4E0A DESC\n\n-- \u95A2\u6570\nORDER BY UPPER(\u9867\u5BA2\u540D) ASC\nORDER BY LENGTH(\u6C0F\u540D) ASC\nORDER BY ROUND(\u91D1\u984D, -3) DESC\n```\n\n### KORDER BY\uFF08kintone\u56FA\u6709\u9806\u3001v3.0.0\uFF09\n\n`KORDER BY`\u306F\u9AD8\u901F\u5316\u30D2\u30F3\u30C8\u3067\u306F\u306A\u304F\u3001\u6BD4\u8F03\u610F\u5473\u3092kintone REST API\u306E\u578B\u5225\u9806\u5E8F\u3078\u5207\u308A\u66FF\u3048\u308B\u5225\u69CB\u6587\u3067\u3059\u3002\u6761\u4EF6\u5916\u3067\u901A\u5E38`ORDER BY`\u3078\u9ED9\u3063\u3066\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3057\u307E\u305B\u3093\u3002\n\n```sql\nSELECT \u4F1A\u793E\u540D, \u91D1\u984D\nFROM APP100\nWHERE \u9867\u5BA2\u30E9\u30F3\u30AF = \'A\'\nKORDER BY \u4F1A\u793E\u540D ASC, $id ASC\nLIMIT 20\n```\n\n\u521D\u671F\u7248\u306F\u6B21\u3092\u3059\u3079\u3066\u6E80\u305F\u3059\u5834\u5408\u3060\u3051\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n- \u5229\u7528\u8005\u3078\u7D50\u679C\u3092\u8FD4\u3059\u30C8\u30C3\u30D7\u30EC\u30D9\u30EBSELECT\u3001\u5358\u4E00\u306E\u7269\u7406\u30A2\u30D7\u30EA\u3001JOIN\uFF0FCTE\uFF0Ftemp\uFF0FUNION\uFF0F\u96C6\u7D04\uFF0FWINDOW\u306A\u3057\n- **\u975E\u4FEE\u98FE\u306E**\u76F4\u63A5\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F`$id`\u3060\u3051\u3092\u30AD\u30FC\u306B\u3059\u308B\u3002SELECT alias\u3001`t.\u91D1\u984D`\u306E\u3088\u3046\u306A\u8868\u4FEE\u98FE\u3001\u95A2\u6570\u3001\u7B97\u8853\u5F0F\u306F\u672A\u5BFE\u5FDC\n- WHERE\u5168\u4F53\u3092kintone\u3078\u540C\u5024\u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u3001SQL `LIKE`\uFF0F`KLIKE`\u3092\u542B\u307E\u306A\u3044\n- `LIMIT`\u3092\u660E\u793A\u3057\u3001`LIMIT`\u30FB`OFFSET`\u30FB`OFFSET + LIMIT`\u304C\u3059\u3079\u30660\u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u3042\u308B\n- \u578B\u306F`$id`\u3001RECORD_NUMBER\u3001SINGLE_LINE_TEXT\u3001NUMBER\u3001CALC\u3001DATE\u3001DATETIME\u3001TIME\u3001CREATED_TIME\u3001UPDATED_TIME\u3001DROP_DOWN\u3001RADIO_BUTTON\u3001STATUS\u3001LINK\u3001CREATOR\u3001MODIFIER\u306E\u660E\u793Aallowlist\u5185\n\n`LIMIT \u2264 500`\u30FB`OFFSET \u2264 10000`\u30FB`LIMIT \u2264 maxRecords`\u306A\u3089\u3001\u6307\u5B9A\u3057\u305FORDER/LIMIT/OFFSET\u3092\u5358\u767AGET\u3078\u305D\u306E\u307E\u307E\u9001\u308A\u307E\u3059\u3002`LIMIT 0`\u3082\u578B\u30FBWHERE\u30FBquery\u5F62\u72B6\u3092\u5B8C\u5168\u691C\u67FB\u3057\u305F\u5F8C\u3001records API\u3092\u547C\u3070\u305A\u7A7A\u7D50\u679C\u3092\u8FD4\u3057\u307E\u3059\u3002\u540C\u5024\u7FA4\u306E\u6C7A\u5B9A\u6027\u304C\u5FC5\u8981\u306A\u3089\u3001\u6700\u5F8C\u306E\u30AD\u30FC\u3068\u3057\u3066`$id ASC`\u7B49\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n#### \u5927\u304D\u3044\u7A93\u3068 Cursor API\uFF08v3.1.0\uFF09\n\nv3.0.0 \u3067\u306F\u5358\u767AGET\u3067\u5B8C\u7D50\u3057\u306A\u3044\u7A93\uFF08`LIMIT > 500`\u30FB`OFFSET > 10000`\uFF09\u306F planning error \u3067\u3059\u3002**v3.1.0** \u3067\u306F\u3001\u3053\u306E\u7A93\u3092 kintone \u306E **Cursor API**\uFF08\u30AB\u30FC\u30BD\u30EB\u4F5C\u6210\u30FB\u53D6\u5F97\u30FB\u524A\u9664\uFF09\u3067\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF08\u8A08\u753B\u540D `KORDER_CURSOR`\uFF09\u3002\n\n\u30AB\u30FC\u30BD\u30EB\u3092\u5229\u7528\u3059\u308B\u6761\u4EF6\uFF08\u3059\u3079\u3066\u6E80\u305F\u3059\u5834\u5408\u3060\u3051\uFF09:\n\n- \u4E0A\u8A18\u306E `KORDER BY` \u5171\u901A\u6761\u4EF6\uFF08\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT\u30FB\u5358\u4E00\u7269\u7406\u30A2\u30D7\u30EA\u30FB\u975E\u4FEE\u98FE\u30AD\u30FC\u30FB\u578B allowlist\u30FBWHERE \u5B8C\u5168\u62BC\u3057\u4E0B\u3052\u30FB`KLIKE` \u306A\u3057\u30FB`LIMIT` \u660E\u793A\uFF09\u3092\u3059\u3079\u3066\u6E80\u305F\u3059\n- \u5358\u767AGET\u306E\u7A93\uFF08`LIMIT \u2264 500` \u304B\u3064 `OFFSET \u2264 10000` \u304B\u3064 `LIMIT \u2264 maxRecords`\uFF09\u306B**\u53CE\u307E\u3089\u306A\u3044**\u3002\u53CE\u307E\u308B\u5834\u5408\u306F\u5F93\u6765\u3069\u304A\u308A\u5358\u767AGET\uFF08`KORDER_NATIVE`\uFF09\u3092\u512A\u5148\u3059\u308B\n- **\u8D70\u67FB\u4EF6\u6570 `OFFSET + LIMIT` \u304C\u5B9F\u884C\u6642 `maxRecords` \u4EE5\u4E0B**\u3002\u30AB\u30FC\u30BD\u30EB\u3067\u306F OFFSET \u5206\u3092 kSQL \u304C\u5148\u982D\u304B\u3089\u53D7\u4FE1\u3057\u3066\u8AAD\u307F\u6368\u3066\u308B\u305F\u3081\u3001\u8FD4\u5374\u884C\u6570\u3067\u306F\u306A\u304F\u8D70\u67FB\u4EF6\u6570\u306B `maxRecords` \u304C\u639B\u304B\u308A\u307E\u3059\uFF08\u5358\u767AGET\u306E OFFSET \u306F\u30B5\u30FC\u30D0\u30FC\u304C\u8AAD\u307F\u98DB\u3070\u3059\u305F\u3081\u5BFE\u8C61\u5916 \u2014 \u3053\u306E\u975E\u5BFE\u79F0\u306F\u300CkSQL \u304C\u53D7\u4FE1\u3059\u308B\u884C\u6570\u306E\u4E0A\u9650\u300D\u3068\u3044\u3046 `maxRecords` \u306E\u610F\u5473\u305D\u306E\u3082\u306E\u3067\u3059\uFF09\n- \u6761\u4EF6\u3092\u6E80\u305F\u3055\u306A\u3044\u5834\u5408\u306F planning error\u3002\u901A\u5E38 `ORDER BY` \u3078\u9ED9\u3063\u3066\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3057\u307E\u305B\u3093\n\n```sql\n-- v3.1.0: 10,001 \u4EF6\u3092 kintone \u56FA\u6709\u9806\u306E\u307E\u307E\u53D6\u5F97\nSELECT \u4F1A\u793E\u540D, \u91D1\u984D\nFROM APP100\nKORDER BY \u91D1\u984D DESC, $id ASC\nLIMIT 10001\n-- CLI/MCP \u306E\u65E2\u5B9A maxRecords=500 \u3067\u306F\u8D70\u67FB\u4EF6\u6570\u304C\u8D85\u904E\u3059\u308B\u305F\u3081\u3001\n-- --max-records 10001 \u7B49\u3078\u660E\u793A\u7684\u306B\u5F15\u304D\u4E0A\u3052\u308B\n```\n\n> **\u30AB\u30FC\u30BD\u30EB\u306E\u7279\u9577\u30FB\u5236\u9650\uFF08\u6CE8\u91C8\uFF09:**\n>\n> - **\u5BFE\u8C61\u96C6\u5408\u306F\u30AB\u30FC\u30BD\u30EB\u4F5C\u6210\u6642\u70B9\u3067\u56FA\u5B9A\u3001\u5024\u306F\u5404\u53D6\u5F97\u6642\u70B9** \u2014 \u5B8C\u5168\u306A\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u8D70\u67FB\u4E2D\u306B\u30EC\u30B3\u30FC\u30C9\u304C\u66F4\u65B0\u3055\u308C\u308B\u3068\u3001\u8FD4\u308B\u5024\u306F\u53D6\u5F97\u6642\u70B9\u306E\u3082\u306E\u306B\u306A\u308A\u3001\u30BD\u30FC\u30C8\u30AD\u30FC\u81EA\u4F53\u304C\u66F4\u65B0\u3055\u308C\u305F\u5834\u5408\u306F\u7D50\u679C\u304C\u8868\u793A\u5024\u4E0A KORDER \u9806\u306B\u898B\u3048\u306A\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\u66F4\u65B0\u306E\u306A\u3044\u6642\u9593\u5E2F\u306E\u5B9F\u884C\u3092\u63A8\u5968\u3057\u307E\u3059\n> - **\u30AB\u30FC\u30BD\u30EB\u306F 1 \u30C9\u30E1\u30A4\u30F3\u6700\u5927 10 \u500B**\u3092\u3001kSQL \u4EE5\u5916\u306E\u88FD\u54C1\u30FB\u4ED6\u30D7\u30ED\u30BB\u30B9\u3082\u542B\u3081\u3066\u5171\u6709\u3057\u307E\u3059\u3002kSQL \u306F\u81EA\u5236\u306E\u305F\u3081\u540C\u6642\u30AB\u30FC\u30BD\u30EB\u3092\u65E2\u5B9A 2\u30FB\u6700\u5927 5 \u306B\u5236\u9650\u3057\u307E\u3059\u3002\u30C9\u30E1\u30A4\u30F3\u5168\u4F53\u306E\u7A7A\u304D\u67A0\u306F\u4FDD\u8A3C\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u5185\u90E8\u4E0A\u9650\u4EE5\u4E0B\u3067\u3082\u4F5C\u6210\u304C\u5931\u6557\u3059\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\n> - **\u6709\u52B9\u671F\u9650\u306F\u4F5C\u6210\u304B\u3089 10 \u5206**\uFF08\u6B8B\u4EF6\u53D6\u5F97\u3067\u5EF6\u9577\uFF09\u3002\u5168\u4EF6\u53D6\u5F97\u307E\u305F\u306F\u660E\u793A\u524A\u9664\u3067\u89E3\u653E\u3055\u308C\u307E\u3059\u3002kSQL \u306F\u5FC5\u8981\u306A\u7A93\u3078\u5230\u9054\u3057\u305F\u6642\u70B9\u3067\u30AB\u30FC\u30BD\u30EB\u3092\u5373\u6642\u524A\u9664\u3057\u307E\u3059\u304C\u3001\u7570\u5E38\u7D42\u4E86\u6642\u306F\u6700\u5927 10 \u5206\u7A0B\u5EA6\u3001\u30C9\u30E1\u30A4\u30F3\u306E\u67A0\u3092 1 \u3064\u5360\u6709\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\n> - **\u53D6\u5F97\u306F 500 \u4EF6\u305A\u3064**\u306E\u9010\u6B21\u30DA\u30FC\u30B8\u3067\u3001kintone \u304C\u8FD4\u3057\u305F\u9806\u5E8F\u3092\u305D\u306E\u307E\u307E\u7D50\u679C\u306B\u3057\u307E\u3059\uFF08\u30ED\u30FC\u30AB\u30EB\u518D\u30BD\u30FC\u30C8\u30FB`$id` \u306E\u81EA\u52D5\u8FFD\u88DC\u306A\u3057\uFF09\u3002\u540C\u5024\u7FA4\u306E\u6C7A\u5B9A\u6027\u304C\u5FC5\u8981\u306A\u3089\u5358\u767AGET\u3068\u540C\u69D8\u306B `$id` \u3092\u6700\u5F8C\u306E\u30AD\u30FC\u3078\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\n> - **\u30AB\u30FC\u30BD\u30EB\u306E\u4F5C\u6210\u30FB\u53D6\u5F97\u306F\u81EA\u52D5\u518D\u8A66\u884C\u3057\u307E\u305B\u3093**\u3002\u5FDC\u7B54\u55AA\u5931\u6642\u306B\u518D\u8A66\u884C\u3059\u308B\u3068\u3001\u5B64\u5150\u30AB\u30FC\u30BD\u30EB\uFF08\u4F5C\u6210\uFF09\u3084\u30DA\u30FC\u30B8\u6B20\u843D\uFF08\u53D6\u5F97\uFF09\u304C\u8D77\u304D\u5F97\u308B\u305F\u3081\u3067\u3059\u3002\u4F5C\u6210\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u6642\u306F\u30AF\u30A8\u30EA\u306E\u7D5E\u308A\u8FBC\u307F\u30FB\u5358\u7D14\u5316\u3092\u6848\u5185\u3059\u308B\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\n\n\u540C\u6642\u30AB\u30FC\u30BD\u30EB\u4E0A\u9650\u306FCLI\u306E`--cursor-max-active`\u3001\u74B0\u5883\u5909\u6570`KSQL_CURSOR_MAX_ACTIVE`\u3001profile\u306E`query.cursorMaxActive`\u3001MCP\u5165\u529B`cursorMaxActive`\u3001plugin\u306E\u53D6\u5F97\u30AA\u30D7\u30B7\u30E7\u30F3\u30671..5\u3078\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002\u65E2\u5B9A\u306F2\u3067\u3059\u3002\u540C\u4E00process\u30FB\u540C\u4E00host\u3067\u5F8C\u304B\u3089\u5909\u66F4\u3057\u305F\u5834\u5408\u3082\u6B21\u306E\u53D6\u5F97\u304B\u3089\u53CD\u6620\u3055\u308C\u307E\u3059\u3002\u4E0A\u9650\u3092\u4E0B\u3052\u3066\u3082\u65E2\u5B58Cursor\u306F\u5F37\u5236\u7D42\u4E86\u305B\u305A\u3001active\u6570\u304C\u65B0\u4E0A\u9650\u3092\u4E0B\u56DE\u308B\u307E\u3067\u65B0\u898F\u4F5C\u6210\u3092\u5F85\u6A5F\u3055\u305B\u307E\u3059\u3002\n\n`KORDER`\u306F\u4E88\u7D04\u8A9E\u3067\u3059\u3002\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F`` `KORDER` ``\u3068\u8A18\u8FF0\u3057\u307E\u3059\u3002\n\n\n\n---', uri: "ksql://language-reference/10-order-by" }, "10-1-window-functions": { heading: "10.1 \u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570", text: "## 10.1 \u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\n\n\u9806\u4F4D\u4ED8\u3051\u30FB\u30B0\u30EB\u30FC\u30D7\u5185\u9023\u756A\u3001`SUM` / `COUNT` / `AVG` / `MIN` / `MAX` \u306E\u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u306B\u52A0\u3048\u3001\u524D\u5F8C\u306E\u884C\u3092\u53C2\u7167\u3059\u308B `LAG` / `LEAD` \u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u3092\u542B\u3080SELECT\u306F\u5168\u4EF6\u3092\u53D6\u5F97\u3057\u3066JS\u3067\u8A55\u4FA1\u3059\u308B\u305F\u3081\u3001\u5E38\u306BFULL_SCAN\u30E2\u30FC\u30C9\u3067\u3059\u3002\u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u3068 `LAG` / `LEAD` \u306F\u5B8C\u5168\u5165\u529B\u3092\u8981\u6C42\u3057\u3001\u53D6\u5F97\u4E0A\u9650\u3067\u306E truncate \u306F\u90E8\u5206\u7D50\u679C\u3092\u8FD4\u3055\u305A\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n\n```sql\nROW_NUMBER() OVER ([PARTITION BY \u30D5\u30A3\u30FC\u30EB\u30C9 [, ...]] [ORDER BY \u30AD\u30FC [ASC|DESC] [, ...]]) AS alias\nRANK() OVER ([PARTITION BY \u30D5\u30A3\u30FC\u30EB\u30C9 [, ...]] [ORDER BY \u30AD\u30FC [ASC|DESC] [, ...]]) AS alias\nDENSE_RANK() OVER ([PARTITION BY \u30D5\u30A3\u30FC\u30EB\u30C9 [, ...]] [ORDER BY \u30AD\u30FC [ASC|DESC] [, ...]]) AS alias\n\n{SUM|COUNT|AVG|MIN|MAX}(\u5F15\u6570) OVER (\n [PARTITION BY \u30D5\u30A3\u30FC\u30EB\u30C9 [, ...]]\n [ORDER BY \u30AD\u30FC [ASC|DESC] [, ...]\n [{ROWS|RANGE} BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]]\n) AS alias\n\n{LAG|LEAD}(\u5024\u5F0F [, offset]) OVER (\n [PARTITION BY \u30D5\u30A3\u30FC\u30EB\u30C9 [, ...]]\n ORDER BY \u30AD\u30FC [ASC|DESC] [, ...]\n) AS alias\n```\n\n- `ROW_NUMBER` \u2014 \u540C\u9806\u4F4D\u3092\u4F5C\u3089\u305A\u30011\u304B\u3089\u9023\u756A\u3092\u4ED8\u3051\u308B\n- `RANK` \u2014 \u540C\u5024\u306F\u540C\u9806\u4F4D\u3002\u6B21\u306E\u9806\u4F4D\u3092\u98DB\u3070\u3059\uFF08`1, 1, 3`\uFF09\n- `DENSE_RANK` \u2014 \u540C\u5024\u306F\u540C\u9806\u4F4D\u3002\u6B21\u306E\u9806\u4F4D\u3092\u98DB\u3070\u3055\u306A\u3044\uFF08`1, 1, 2`\uFF09\n- `PARTITION BY` \u7701\u7565\u6642\u306F\u5168\u884C\u30921\u30B0\u30EB\u30FC\u30D7\u3068\u3057\u3066\u6271\u3046\n- `ORDER BY` \u7701\u7565\u6642\u3001`RANK` / `DENSE_RANK` \u306F\u5168\u884C1\u3002`ROW_NUMBER` \u306F\u53D6\u5F97\u9806\u3067\u63A1\u756A\u3059\u308B\n- `AS alias` \u306F\u5FC5\u9808\n- \u96C6\u8A08\u5F15\u6570\u306F\u901A\u5E38\u96C6\u8A08\u3068\u540C\u3058\u304F\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u7B97\u8853\u5F0F\u30FB\u95A2\u6570\u30FB`CASE`\u30FB`||`\u30FB`@var` \u3092\u6307\u5B9A\u3067\u304D\u308B\u3002`COUNT(*)` \u3082\u4F7F\u7528\u3067\u304D\u308B\n- `SUM(DISTINCT x) OVER (...)` \u306E\u3088\u3046\u306A\u5F15\u6570\u306E `DISTINCT`\u3001`GROUP_CONCAT`\u30FB\u7D71\u8A08\u96C6\u8A08\u306E `OVER`\u3001\u30A6\u30A3\u30F3\u30C9\u30A6\u7D50\u679C\u3092\u540C\u3058 SELECT \u5185\u306E\u5F0F\u3078\u5165\u308C\u308B\u5F62\u306F\u672A\u5BFE\u5FDC\u3002CTE\u3067\u4E00\u5EA6\u5B9F\u4F53\u5316\u3059\u308B\n- `SELECT DISTINCT` \u3068\u30A6\u30A3\u30F3\u30C9\u30A6\u5217\u306E\u4F75\u7528\u306F\u53EF\u80FD\u3002\u30A6\u30A3\u30F3\u30C9\u30A6\u8A55\u4FA1\u5F8C\u306B DISTINCT \u3092\u9069\u7528\u3059\u308B\n- `LAG(expr, n)` \u306F\u30BD\u30FC\u30C8\u5F8C\u306E\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067 `n` \u884C\u524D\u3001`LEAD(expr, n)` \u306F `n` \u884C\u5F8C\u306E\u5024\u3092\u8FD4\u3059\u3002\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5916\u306F\u7A7A\u6587\u5B57\n- `offset` \u306F\u7701\u7565\u6642 `1`\u3002\u975E\u8CA0\u306E safe integer \u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3092\u6307\u5B9A\u3067\u304D\u3001`0` \u306F\u73FE\u5728\u884C\u3092\u8FD4\u3059\u3002\u5909\u6570\u30FB\u5F0F\u30FB\u5C0F\u6570\u30FB\u8CA0\u6570\u306F\u4F7F\u7528\u3067\u304D\u306A\u3044\n- `LAG` / `LEAD` \u306E\u7B2C3\u5F15\u6570\uFF08\u65E2\u5B9A\u5024\uFF09\u306F\u672A\u5BFE\u5FDC\u3002\u5FC5\u8981\u306A\u3089\u6B21\u306E\u6BB5\u306E `CASE` \u3067\u7A7A\u6587\u5B57\u3092\u7F6E\u304D\u63DB\u3048\u308B\n- `LAG` / `LEAD` \u306F `ORDER BY` \u5FC5\u9808\u3002\u5168\u9806\u5E8F\u3067\u306A\u3044\u5834\u5408\u306F\u540C\u9806\u5185\u306E\u524D\u5F8C\u95A2\u4FC2\u304C\u672A\u898F\u5B9A\u306B\u306A\u308B\u305F\u3081\u3001\u7269\u7406 APP \u3067\u306F\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u306A\u3069\u306E\u30BF\u30A4\u30D6\u30EC\u30FC\u30AF\u30AD\u30FC\u3092\u52A0\u3048\u308B\n- **CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306A\u3069\u306E\u6D3E\u751F relation \u3067\u306F\u3001\u5404\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067 `ORDER BY` \u306E\u5024\u306E\u7D44\u304C\u5165\u529B\u884C\u3092\u4E00\u610F\u306B\u8B58\u5225\u3059\u308B\u3068\u3001\u30AF\u30A8\u30EA\u69CB\u9020\u307E\u305F\u306F\u4FDD\u8A3C\u6E08\u307F\u306E\u30C7\u30FC\u30BF\u5236\u7D04\u304B\u3089\u78BA\u8A8D\u3067\u304D\u308B\u5834\u5408\u306B\u9650\u308A\u8B66\u544A\u3092\u7121\u8996\u3067\u304D\u308B\u3002** \u5143\u306E\u96C6\u7D04\u30AD\u30FC\u3092\u3059\u3079\u3066\u542B\u3080\u5F62\u3084\u3001JOIN \u5F8C\u3082\u540C\u3058\u7CFB\u5217\u5024\u304C\u5404\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067\u9AD8\u30051\u884C\u3068\u4FDD\u8A3C\u3067\u304D\u308B\u5F62\u304C\u8A72\u5F53\u3059\u308B\n- \u751F\u6210\u5217\u3001\u518D\u5E30\u306E\u6DF1\u3055\u5217\u3001\u307E\u305F\u306F `$id` \u306B\u7531\u6765\u3059\u308B\u5217\u3067\u3042\u308B\u3068\u3044\u3046\u7406\u7531\u3060\u3051\u3067\u306F\u8B66\u544A\u3092\u7121\u8996\u3067\u304D\u306A\u3044\u3002\u30A8\u30F3\u30B8\u30F3\u304C\u6D3E\u751F relation \u306E\u4E00\u610F\u6027\u3092\u9759\u7684\u306B\u8A3C\u660E\u3067\u304D\u306A\u3044\u5834\u5408\u306F\u3001\u5B9F\u969B\u306B\u306F\u4E00\u610F\u3067\u3082\u8B66\u544A\u304C\u6B8B\u308B\uFF08`ksql_docs` \u306E `recipes/r16` \u306B\u4F8B\u304C\u3042\u308B\uFF09\n- `LAG` / `LEAD` \u306F soft keyword\u3002\u540C\u540D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u5F93\u6765\u3069\u304A\u308A\u53C2\u7167\u3067\u304D\u308B\n\n```sql\n-- \u9867\u5BA2\u3054\u3068\u306E\u53D7\u6CE8\u3092\u65B0\u3057\u3044\u9806\u306B\u63A1\u756A\nSELECT \u9867\u5BA2ID, \u53D7\u6CE8\u65E5, \u91D1\u984D,\n ROW_NUMBER() OVER (PARTITION BY \u9867\u5BA2ID ORDER BY \u53D7\u6CE8\u65E5 DESC) AS rn\nFROM APP300\n```\n\n### \u524D\u5F8C\u306E\u884C\u3092\u53C2\u7167\u3059\u308B `LAG` / `LEAD`\n\n\u524D\u6708\u6BD4\u306E\u3088\u3046\u306B\u30A6\u30A3\u30F3\u30C9\u30A6\u7D50\u679C\u3092\u8A08\u7B97\u3078\u4F7F\u3046\u5834\u5408\u306F\u3001\u96C6\u7D04\u3001`LAG`\u3001\u6BD4\u7387\u8A08\u7B97\u306E3\u6BB5\u306B\u5206\u3051\u307E\u3059\u3002\u30A6\u30A3\u30F3\u30C9\u30A6\u7D50\u679C\u3092\u540C\u3058SELECT\u306E\u5F0F\u3078\u76F4\u63A5\u5165\u308C\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\n\n```sql\nWITH \u6708\u6B21 AS (\n SELECT DATE_FORMAT(\u65E5\u4ED8, '%Y-%m') AS \u5E74\u6708, SUM(\u500B\u6570) AS \u51FA\u5EAB\u6570\n FROM APP4228 WHERE \u5165\u51FA\u5EAB\u533A\u5206 = '\u51FA\u5EAB' GROUP BY \u5E74\u6708\n), \u524D\u6708\u4ED8\u304D AS (\n SELECT \u5E74\u6708, \u51FA\u5EAB\u6570,\n LAG(\u51FA\u5EAB\u6570) OVER (ORDER BY \u5E74\u6708) AS \u524D\u6708\n FROM \u6708\u6B21\n)\nSELECT \u5E74\u6708, \u51FA\u5EAB\u6570, \u524D\u6708,\n CASE WHEN \u524D\u6708 = '' THEN ''\n ELSE ROUND((\u51FA\u5EAB\u6570 - \u524D\u6708) * 100.0 / \u524D\u6708, 1) END AS \u524D\u6708\u6BD4\nFROM \u524D\u6708\u4ED8\u304D\nORDER BY \u5E74\u6708\n```\n\n\u53C2\u7167\u5148\u306E\u30BB\u30EB\u304C\u7A7A\u306A\u3089\u7A7A\u6587\u5B57\u3092\u305D\u306E\u307E\u307E\u8FD4\u3057\u307E\u3059\u3002\u5F15\u6570\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3067\u306A\u304F\u3001\u7B97\u8853\u30FB\u6587\u5B57\u5217\u95A2\u6570\u30FB`CASE`\u30FB\u9023\u7D50\u3092\u542B\u3080\u5024\u5F0F\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u51FA\u529B\u5217\u306F\u5F15\u6570\u306E\u578B\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u5F15\u304D\u7D99\u3050\u305F\u3081\u3001\u6B21\u306E\u6BB5\u306E `ORDER BY` \u3084 `MIN` / `MAX` \u3082\u6570\u5024\u9806\u30FB\u65E5\u4ED8\u9806\u30FB\u9078\u629E\u80A2\u306E\u5B9A\u7FA9\u9806\u306A\u3069\u5143\u306E\u5217\u306E\u6BD4\u8F03\u898F\u5247\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\n\n### \u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u30D5\u30EC\u30FC\u30E0\n\n`ORDER BY` \u304C\u7121\u3044\u5834\u5408\u306F\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5168\u4F53\u3092\u96C6\u8A08\u3057\u3001\u5168\u884C\u3078\u540C\u3058\u5024\u3092\u8F09\u305B\u307E\u3059\u3002`ORDER BY` \u304C\u3042\u308B\u5834\u5408\u306E\u65E2\u5B9A\u306F\u6A19\u6E96\u3069\u304A\u308A `RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW` \u3067\u3059\u3002\u660E\u793A\u3067\u304D\u308B\u30D5\u30EC\u30FC\u30E0\u306F `ROWS` \u307E\u305F\u306F `RANGE` \u306E\u540C\u3058\u56FA\u5B9A\u5883\u754C\u3060\u3051\u3067\u3059\u3002\n\n\u524D\u65E5\u307E\u3067\u306E\u6B8B\u9AD8\u304C60\u3067\u3001\u540C\u3058\u65E5\u306B3\u4EF6\u306E\u5897\u6E1B\u304C\u3042\u308B\u5834\u5408\u3001`RANGE` \u306F\u540C\u9806\u30B0\u30EB\u30FC\u30D7\u672B\u5C3E\u306E\u5024\u3092\u5168peer\u884C\u3078\u66F8\u304D\u623B\u3057\u3001`ROWS` \u306F\u884C\u3054\u3068\u306E\u9014\u4E2D\u5024\u3092\u8FD4\u3057\u307E\u3059\u3002\n\n| \u65E5\u4ED8 | \u5897\u6E1B | `ROWS`\uFF08\u660E\u793A\uFF09 | `RANGE`\uFF08\u65E2\u5B9A\uFF09 |\n|---|---:|---:|---:|\n| 2026-03-18 | +100 | 160 | 110 |\n| 2026-03-18 | -30 | 130 | 110 |\n| 2026-03-18 | -20 | 110 | 110 |\n\n\u65E5\u6B21\u6B8B\u9AD8\u3067\u306F\u65E2\u5B9A `RANGE`\u3001\u53D6\u5F15\u3054\u3068\u306E\u6B8B\u9AD8\u3067\u306F `ROWS` \u3092\u660E\u793A\u3057\u307E\u3059\u3002\u5168\u9806\u5E8F\u306B\u3057\u305F\u3044\u5834\u5408\u306F\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u306A\u3069\u306E\u30BF\u30A4\u30D6\u30EC\u30FC\u30AF\u30AD\u30FC\u3082 `ORDER BY` \u306B\u52A0\u3048\u307E\u3059\u3002**CTE \u3084\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u8AAD\u3080\u5834\u5408\u306F\u305D\u306E\u8868\u306B `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7` \u304C\u7121\u3044**\u306E\u3067\u3001\u5143\u306B\u306A\u3063\u305F\u96C6\u7D04\u306E\u30AD\u30FC\u306A\u3069\u3001\u305D\u306E\u8868\u306E\u4E2D\u3067\u4E00\u610F\u306B\u306A\u308B\u5217\u3092\u4F7F\u3044\u307E\u3059\u3002`EXPLAIN` \u306F\u5B9F\u52B9\u30D5\u30EC\u30FC\u30E0\u3092\u8868\u793A\u3057\u3001\u65E2\u5B9A `RANGE` \u3060\u3051 `(\u65E2\u5B9A)` \u3092\u4ED8\u3051\u307E\u3059\u3002\n\n```sql\nSELECT \u88FD\u54C1\u540D, \u65E5\u4ED8, \u500B\u6570_\u5728\u5EAB\u8A08\u7B97\u7528,\n SUM(\u500B\u6570_\u5728\u5EAB\u8A08\u7B97\u7528) OVER (\n PARTITION BY \u88FD\u54C1\u540D ORDER BY \u65E5\u4ED8, \u30EC\u30B3\u30FC\u30C9\u756A\u53F7\n ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW\n ) AS \u7D2F\u7A4D\u5728\u5EAB\nFROM APP4228\n```\n\n\u7A7A\u5024\u30FBNaN \u306E\u30B9\u30AD\u30C3\u30D7\u3068\u6BD4\u8F03\u898F\u5247\u306F\u901A\u5E38\u96C6\u8A08\u3068\u5171\u901A\u3067\u3059\u3002\u5C0F\u6570\u3092\u542B\u3080 `SUM` / `AVG` \u306F\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u4E26\u3073\u9806\u3067\u52A0\u7B97\u3059\u308B\u305F\u3081\u3001\u901A\u5E38\u96C6\u8A08\u3068\u306E\u6BD4\u8F03\u306F\u76F8\u5BFE\u8AA4\u5DEE `1e-12` \u3092\u76EE\u5B89\u306B\u3057\u307E\u3059\u3002`MIN` / `MAX` \u306F canonical \u540C\u5024\u306E\u5024\uFF08\u4F8B: \u6570\u5024\u578B\u306E `\"1\"` \u3068 `\"01\"`\uFF09\u3067\u306F\u5148\u306B\u8D70\u67FB\u3057\u305F raw \u8868\u8A18\u3092\u4FDD\u6301\u3059\u308B\u305F\u3081\u3001raw \u8868\u8A18\u306F\u4E0D\u5B9A\u3067\u3059\u3002\n\n`WHERE` \u306F\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u3088\u308A\u5148\u306B\u8A55\u4FA1\u3055\u308C\u308B\u305F\u3081\u3001\u540C\u3058SELECT\u306E `WHERE rn = 1` \u3067\u306F\u7D5E\u308A\u8FBC\u3081\u307E\u305B\u3093\u3002CTE\u3067\u30B9\u30B3\u30FC\u30D7\u3092\u5206\u3051\u308B\u3068\u3001\u5404\u9867\u5BA2\u306E\u6700\u65B0\u884C\u3092\u5168\u5217\u4ED8\u304D\u30671\u6587\u53D6\u5F97\u3067\u304D\u307E\u3059\u3002\n\n```sql\nWITH ranked AS (\n SELECT \u9867\u5BA2ID, \u53D7\u6CE8\u65E5, \u91D1\u984D,\n ROW_NUMBER() OVER (PARTITION BY \u9867\u5BA2ID ORDER BY \u53D7\u6CE8\u65E5 DESC) AS rn\n FROM APP300\n)\nSELECT \u9867\u5BA2ID, \u53D7\u6CE8\u65E5, \u91D1\u984D\nFROM ranked\nWHERE rn = 1\n```\n\n\u30A6\u30A3\u30F3\u30C9\u30A6\u5185\u306E `ORDER BY` \u306F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u901A\u5E38`ORDER BY`\u3068\u540C\u3058canonical\u6BD4\u8F03\u898F\u5247\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002CTE\uFF0F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7531\u6765\u3067\u3082\u4F1D\u64AD\u3057\u305F\u578B\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u4F7F\u3044\u3001\u578B\u3092\u78BA\u5B9A\u3067\u304D\u306A\u3044\u5217\u306F\u6587\u5B57\u5217\u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002\u5024\u306E\u898B\u305F\u76EE\u306B\u3088\u308B\u6570\u5024\uFF0F\u6587\u5B57\u5217\u306E\u30DA\u30A2\u5358\u4F4D\u5207\u66FF\u306F\u884C\u3044\u307E\u305B\u3093\u3002`KORDER BY`\u306F\u30A6\u30A3\u30F3\u30C9\u30A6\u5185\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\n\u540C\u3058SELECT\u5185\u3067\u306E `GROUP BY`\uFF0F\u96C6\u8A08\u95A2\u6570\u3068\u306E\u4F75\u7528\u306F\u672A\u5BFE\u5FDC\u3067\u3059\u3002\u96C6\u7D04\u7D50\u679C\u3078\u9806\u4F4D\u3092\u4ED8\u3051\u308B\u5834\u5408\u306FCTE\u3067\u30B9\u30B3\u30FC\u30D7\u3092\u5206\u3051\u307E\u3059\u3002\n\n```sql\nWITH agg AS (\n SELECT \u90E8\u7F72, SUM(\u58F2\u4E0A) AS \u5408\u8A08 FROM APP300 GROUP BY \u90E8\u7F72\n)\nSELECT \u90E8\u7F72, \u5408\u8A08, RANK() OVER (ORDER BY \u5408\u8A08 DESC) AS \u9806\u4F4D\nFROM agg\n```\n\n---", uri: "ksql://language-reference/10-1-window-functions" }, "11-limit-offset": { heading: "11. LIMIT / OFFSET", text: "## 11. LIMIT / OFFSET\n\n\u53D6\u5F97\u4EF6\u6570\u306E\u4E0A\u9650\u3068\u30B9\u30AD\u30C3\u30D7\u4EF6\u6570\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n\n```sql\nSELECT * FROM APP100 LIMIT 10\nSELECT * FROM APP100 ORDER BY \u4F5C\u6210\u65E5\u6642 DESC LIMIT 50\nSELECT * FROM APP100 ORDER BY \u4F5C\u6210\u65E5\u6642 DESC LIMIT 20 OFFSET 40\n```\n\n- `LIMIT n` \u2014 \u6700\u5927 n \u4EF6\u3092\u8FD4\u3059\n- `OFFSET m` \u2014 \u5148\u982D m \u4EF6\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u304B\u3089\u8FD4\u3059\uFF08\u30DA\u30FC\u30B8\u30F3\u30B0\u7528\uFF09\n\n### v3.0.0 \u5236\u9650\u5024\u4E00\u89A7\n\n| \u5BFE\u8C61 | \u5236\u9650\u5024 | \u8D85\u904E\u30FB\u6761\u4EF6\u4E0D\u6210\u7ACB\u6642\u306E\u52D5\u4F5C |\n|---|---:|---|\n| \u901A\u5E38`ORDER BY`\u306E`LIMIT` | SQL\u69CB\u6587\u4E0A\u306E\u56FA\u5B9A\u4E0A\u9650\u306A\u3057 | REST top-N\u306E\u6761\u4EF6\u3092\u6E80\u305F\u3055\u306A\u3044\u5024\uFF08\u521D\u671F\u7248\u3067\u306F`LIMIT > 500`\u7B49\uFF09\u306F\u7981\u6B62\u305B\u305A\u3001\u5B8C\u5168\u5019\u88DC\u53D6\u5F97\u5F8C\u306Elocal sort\u3078\u5207\u308A\u66FF\u3048\u308B |\n| \u901A\u5E38`ORDER BY`\u306E`OFFSET` | SQL\u69CB\u6587\u4E0A\u306E\u56FA\u5B9A\u4E0A\u9650\u306A\u3057 | REST top-N\u306E\u6761\u4EF6\u3092\u6E80\u305F\u3055\u306A\u3044\u5024\uFF08\u521D\u671F\u7248\u3067\u306F`OFFSET > 10000`\u7B49\uFF09\u306F\u7981\u6B62\u305B\u305A\u3001local\u8A55\u4FA1\u3078\u5207\u308A\u66FF\u3048\u308B |\n| local `ORDER BY`\u306E\u5019\u88DC\u53D6\u5F97 | \u5B9F\u884C\u6642`maxRecords`\u672A\u6E80\u3067\u5B8C\u4E86\u3059\u308B\u3053\u3068 | \u4E0A\u9650\u3078\u5230\u9054\u3059\u308B\u3068\u3001`LIMIT 1`\u3084`onLimit=truncate`\u3067\u3082`FetchAllLimitError`\u3002\u90E8\u5206\u5019\u88DC\u306Etop-N\u306F\u8FD4\u3055\u306A\u3044 |\n| `CANONICAL_REST_TOP_N`\u306E\u7A93 | `LIMIT 0..500`\u304B\u3064`LIMIT <= maxRecords`\u3001`OFFSET 0..10000` | \u5229\u7528\u8005\u30A8\u30E9\u30FC\u306B\u306F\u305B\u305A`CANONICAL_LOCAL`\u3078\u5207\u308A\u66FF\u3048\u308B\u3002\u521D\u671F\u30AD\u30FCallowlist\u306F`$id`\u306E\u307F |\n| `KORDER BY`\u306E`LIMIT` | **\u5FC5\u9808**\u3002`0..500`\u304B\u3064`LIMIT <= maxRecords` | planning error\u3002\u901A\u5E38`ORDER BY`\u3078\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3057\u306A\u3044 |\n| `KORDER BY`\u306E`OFFSET` | \u7701\u7565\u307E\u305F\u306F`0..10000` | `10001`\u4EE5\u4E0A\u306Fplanning error\u3002API\u304C\u53D7\u7406\u3059\u308B\u5834\u5408\u3067\u3082\u8A31\u53EF\u3057\u306A\u3044 |\n\n`KORDER BY` \u306E\u7A93\u5236\u9650\u306F **v3.1.0** \u3067\u7DE9\u548C\u3055\u308C\u3001\u5358\u767AGET\u306B\u53CE\u307E\u3089\u306A\u3044\u7A93\u3092 Cursor API \u3067\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF08\u6761\u4EF6: \u8D70\u67FB\u4EF6\u6570 `OFFSET + LIMIT` \u2264 `maxRecords`\uFF09\u3002\u8A73\u7D30\u3068\u6CE8\u610F\u70B9\u306F \xA710\u300C\u5927\u304D\u3044\u7A93\u3068 Cursor API\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n`maxRecords`\u306FSQL\u306E\u8FD4\u5374\u884C\u6570\u3067\u306F\u306A\u304F\u3001REST\u304B\u3089\u53D6\u5F97\u3057\u3066\u4FDD\u6301\u3059\u308B\u5019\u88DC\u884C\u6570\u306E\u4E0A\u9650\u3067\u3059\u3002\u5165\u53E3\u3054\u3068\u306E\u65E2\u5B9A\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059\u3002\n\n| \u5B9F\u884C\u9762 | `maxRecords`\u65E2\u5B9A\u5024 | \u5909\u66F4\u65B9\u6CD5 |\n|---|---:|---|\n| \u30A8\u30F3\u30B8\u30F3API\u3092\u76F4\u63A5\u5229\u7528 | 10,000\u4EF6 | `ExecuteOptions.maxRecords` |\n| CLI | 500\u4EF6 | `--max-records`\uFF0F`KSQL_MAX_RECORDS`\uFF0Fprofile `query.maxRecords` |\n| MCP | 500\u4EF6 | `ksql_query`\u30FB`ksql_explain`\u7B49\u306Etool\u5165\u529B`maxRecords`\uFF0F`KSQL_MAX_RECORDS`\uFF0Fprofile `query.maxRecords` |\n| \u30D7\u30E9\u30B0\u30A4\u30F3 | 3,000\u4EF6 | \u5B9F\u884C\u753B\u9762\u306E\u300C\u6700\u5927\u53D6\u5F97\u4EF6\u6570\u300D |\n| \u516C\u5F0F API `/flow` | 10,000\u4EF6 | `createExecutionContext`\uFF0F`explainScript` \u306E options `maxRecords`\uFF08`executeStatement`\u30FB`previewStatement` \u306F\u5B9F\u884C\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306E\u5024\u3092\u5171\u6709\u30FBv3.69.0\u301C\u3002\u2192 \xA727.9\uFF09 |\n\n\u5024\u3092\u5F15\u304D\u4E0A\u3052\u308B\u3068API\u547C\u51FA\u3057\u56DE\u6570\u3001\u30E1\u30E2\u30EA\u4F7F\u7528\u91CF\u3001\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u30EA\u30B9\u30AF\u3082\u5897\u3048\u307E\u3059\u3002`CREATE TEMP TABLE`\u306E\u5B9F\u4F53\u5316\u306B\u306F\u5225\u306E`tempTableMaxRows`\uFF08\u65E2\u5B9A10,000\u4EF6\uFF09\u304C\u9069\u7528\u3055\u308C\u3001`maxRecords`\u3068\u306F\u72EC\u7ACB\u3067\u3059\u3002**`maxRecords`\u3060\u3051\u5F15\u304D\u4E0A\u3052\u3066\u3082\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u307810,000\u884C\u8D85\u3092\u5B9F\u4F53\u5316\u3059\u308B\u6587\u306F`tempTableMaxRows`\u3067\u505C\u6B62\u3057\u307E\u3059**\u3002\u5B9F\u4F53\u5316\u3092\u4F34\u3046\u30D0\u30C3\u30C1\u3067\u306F\u4E21\u65B9\u3092\u4F75\u305B\u3066\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5B9F\u6E2C\u30FBv3.72.0\uFF09\u3002\n\n> **`LIMIT`\u3068`maxRecords`\u306F\u5225\u306E\u5024\u3067\u3059:** `LIMIT`\u306F\u8FD4\u5374\u884C\u6570\u3001`maxRecords`\u306F\u5019\u88DC\u53D6\u5F97\u6570\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002`LIMIT`\u3092\u7701\u7565\u3057\u3066\u3082\u7121\u5236\u9650\u306B\u306F\u306A\u3089\u305A\u3001\u4E0A\u8868\u306E\u5165\u53E3\u5225`maxRecords`\u304C\u9069\u7528\u3055\u308C\u307E\u3059\u3002\n\n> **`LIMIT > 500` \u306E\u65E9\u671F\u505C\u6B62:** `ORDER BY`\u304C\u306A\u304FKLIKE\u3092\u542B\u307E\u306A\u3044\u5B89\u5168\u306A\u7D4C\u8DEF\u3067\u306F\u3001`OFFSET + LIMIT`\u4EF6\u3092\u53D6\u5F97\u3057\u305F\u6642\u70B9\u3067\u6B63\u5E38\u7D42\u4E86\u3057\u307E\u3059\u3002`maxRecords`\u306F\u5B9F\u969B\u306B\u53D6\u5F97\u3059\u308B\u884C\u6570\u306E\u4E0A\u9650\u3067\u3059\u3002\n\n> **ORDER BY\u3068\u53D6\u5F97\u4E0A\u9650\uFF08v3.0.0\uFF09:** \u30ED\u30FC\u30AB\u30EB`ORDER BY`\u306F\u6B63\u3057\u3044top-N\u306E\u305F\u3081\u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u3092\u5FC5\u8981\u3068\u3057\u307E\u3059\u3002\u4E0A\u9650\u5230\u9054\u6642\u306B`onLimit=truncate`\u3067\u90E8\u5206\u5019\u88DC\u3092\u4E26\u3079\u66FF\u3048\u3066\u8FD4\u3055\u305A\u3001\u30A8\u30E9\u30FC\u306B\u3057\u307E\u3059\u3002`CANONICAL_REST_TOP_N`\uFF08\u521D\u671Fallowlist\u306F`$id`\u306E\u307F\uFF09\u3068`KORDER_NATIVE`\u306F\u5358\u767AREST\u7A93\u306A\u306E\u3067\u3001\u3053\u306E\u5B8C\u5168\u5165\u529B\u30A8\u30E9\u30FC\u306E\u5BFE\u8C61\u5916\u3067\u3059\u3002\n\n> **\u96C6\u8A08\u30FB\u91CD\u8907\u6392\u9664\u3068\u53D6\u5F97\u4E0A\u9650:** \u901A\u5E38\u96C6\u8A08\uFF08`COUNT` / `SUM` / `AVG` / `MIN` / `MAX` \u306A\u3069\uFF09\u3001plain `GROUP BY`\u3001`SELECT DISTINCT`\u3001`UNION`\uFF08`ALL` \u306A\u3057\uFF09\u306F\u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u3092\u5FC5\u8981\u3068\u3057\u307E\u3059\u3002\u4E0A\u9650\u5230\u9054\u6642\u306F`onLimit=truncate`\u3067\u3082\u90E8\u5206\u96C6\u5408\u3092\u7573\u3093\u3060\u5024\u3092\u8FD4\u3055\u305A\u3001\u30A8\u30E9\u30FC\u306B\u3057\u307E\u3059\u3002\u5F93\u6765\u6210\u529F\u3057\u3066\u898B\u3048\u305F\u5834\u5408\u3082\u7D50\u679C\u306F\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\uFF08\u5B9F\u6E2C\u3067\u306F\u3001\u771F\u306E\u4EF6\u6570\u304C3\u306Elocal `LIKE` + `COUNT(*)`\u304C`maxRecords=3`\u3067`0`\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF09\u3002\u7D20\u306E\u660E\u7D30\u3068`UNION ALL`\u306F\u5F93\u6765\u3069\u304A\u308A\u53D6\u5F97\u884C\u3068\u8B66\u544A\u3092\u8FD4\u3057\u307E\u3059\u3002\u5B8C\u5168\u62BC\u3057\u4E0B\u3052\u53EF\u80FD\u306A`COUNT(*)`\u306E\u5358\u767A`totalCount`\u53D6\u5F97\u306F\u30EC\u30B3\u30FC\u30C9\u672C\u4F53\u3092\u6253\u3061\u5207\u3089\u306A\u3044\u305F\u3081\u3001\u3053\u306E\u5236\u9650\u306E\u5BFE\u8C61\u5916\u3067\u3059\u3002\n\n> **SIMPLE \u30E2\u30FC\u30C9\uFF08JOIN \u306A\u3057\uFF09:** `ORDER BY`\u306EREST\u62BC\u3057\u4E0B\u3052\u306FLIMIT\u5024\u3060\u3051\u3067\u6C7A\u3081\u305A\u3001schema-aware planner\u304CWHERE\u30FB\u578B\u30FBquery\u5F62\u72B6\u30FB\u7A93\u5168\u4F53\u3092\u691C\u67FB\u3057\u307E\u3059\u3002\u305D\u308C\u4EE5\u5916\u306F\u5168\u5019\u88DC\u53D6\u5F97\u5F8C\u306Bcanonical\u9806\u3092\u9069\u7528\u3057\u307E\u3059\u3002\n> **FULL_SCAN \u30E2\u30FC\u30C9\uFF08JOIN \u3042\u308A\u7B49\uFF09:** JS \u5074\u3067\u30B9\u30E9\u30A4\u30B9\u51E6\u7406\u3057\u307E\u3059\u3002\n\n---", uri: "ksql://language-reference/11-limit-offset" }, "12-union": { heading: "12. UNION / UNION ALL", text: "## 12. UNION / UNION ALL\n\n\u8907\u6570\u306E SELECT \u7D50\u679C\u3092\u7E26\u306B\u7D50\u5408\u3057\u307E\u3059\u3002\n\n```sql\nSELECT \u30AB\u30E9\u30E0\u30EA\u30B9\u30C8 FROM \u30C6\u30FC\u30D6\u30EB1\nUNION [ALL]\nSELECT \u30AB\u30E9\u30E0\u30EA\u30B9\u30C8 FROM \u30C6\u30FC\u30D6\u30EB2\n```\n\n- `UNION` \u2014 \u91CD\u8907\u884C\u3092\u9664\u53BB\uFF08DISTINCT\uFF09\n- `UNION ALL` \u2014 \u91CD\u8907\u884C\u3092\u305D\u306E\u307E\u307E\u4FDD\u6301\uFF08\u9AD8\u901F\uFF09\n- \u4E21\u8FBA\u306F\u540C\u3058\u5217\u6570\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u5B9F\u4F53\u5316\u5F8C\u306E\u5217\u6570\u304C\u4E00\u81F4\u3057\u306A\u3044\u5834\u5408\u306F\u3001\u5DE6\u53F3\u306E\u5217\u6570\u3092\u793A\u3059\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\u8DB3\u308A\u306A\u3044\u5074\u306B\u306F `''` \u306A\u3069\u306E\u30EA\u30C6\u30E9\u30EB\u3092\u8FFD\u52A0\u3057\u3066\u5217\u6570\u3092\u63C3\u3048\u3066\u304F\u3060\u3055\u3044\n- \u53F3\u8FBA\u306E\u5217\u540D\u306F\u5DE6\u8FBA\u306E\u5217\u540D\u306B\u4F4D\u7F6E\u5BFE\u5FDC\u3067\u30EA\u30DE\u30C3\u30D7\u3055\u308C\u307E\u3059\n\n```sql\n-- 2\u30A2\u30D7\u30EA\u306E\u30C7\u30FC\u30BF\u3092\u91CD\u8907\u9664\u53BB\u3057\u3066\u7D50\u5408\nSELECT \u9867\u5BA2\u540D, \u91D1\u984D FROM APP100\nUNION\nSELECT \u9867\u5BA2\u540D, \u91D1\u984D FROM APP200\n\n-- \u91CD\u8907\u3092\u4FDD\u6301\u3057\u3066\u5168\u4EF6\u7D50\u5408\nSELECT \u9867\u5BA2\u540D FROM APP100\nUNION ALL\nSELECT \u9867\u5BA2\u540D FROM APP200\n\n-- 3\u3064\u4EE5\u4E0A\u306E\u9023\u9396\uFF08\u5DE6\u7D50\u5408\uFF09\nSELECT \u540D\u524D FROM APP100\nUNION\nSELECT \u540D\u524D FROM APP200\nUNION\nSELECT \u540D\u524D FROM APP300\n```\n\n> UNION \u306F\u5E38\u306B FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002\n\n---", uri: "ksql://language-reference/12-union" }, "13-with-cte": { heading: "13. WITH \u53E5\uFF08CTE\uFF09", text: "## 13. WITH \u53E5\uFF08CTE\uFF09\n\n\u30AF\u30A8\u30EA\u306E\u5192\u982D\u3067\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\uFF08CTE: Common Table Expression\uFF09\u3092\u5B9A\u7FA9\u3057\u3001\u5F8C\u7D9A\u306E SELECT / JOIN \u3067\u53C2\u7167\u3067\u304D\u307E\u3059\u3002\n\n```sql\nWITH CTE\u540D AS (\n \u30B5\u30D6\u30AF\u30A8\u30EA\n)\nSELECT ...\nFROM CTE\u540D\n```\n\n### \u57FA\u672C\u4F8B\n\n```sql\n-- GROUP BY \u96C6\u8A08\u7D50\u679C\u3092 CTE \u306B\u5165\u308C\u3066\u4E0A\u4F4D N \u4EF6\u3092\u53D6\u5F97\nWITH \u6708\u5225\u96C6\u8A08 AS (\n SELECT \u6708, SUM(\u91D1\u984D) AS \u5408\u8A08\n FROM APP100\n GROUP BY \u6708\n)\nSELECT \u6708, \u5408\u8A08\nFROM \u6708\u5225\u96C6\u8A08\nORDER BY \u5408\u8A08 DESC\nLIMIT 5\n```\n\n### CTE \u3092 JOIN \u3067\u4F7F\u3046\n\n```sql\nWITH \u53D7\u6CE8\u96C6\u8A08 AS (\n SELECT \u9867\u5BA2ID, SUM(\u91D1\u984D) AS \u5408\u8A08\n FROM APP100\n GROUP BY \u9867\u5BA2ID\n)\nSELECT c.\u9867\u5BA2\u540D, r.\u5408\u8A08\nFROM APP200 AS c\nINNER JOIN \u53D7\u6CE8\u96C6\u8A08 AS r ON c.\u9867\u5BA2ID = r.\u9867\u5BA2ID\nWHERE r.\u5408\u8A08 > 100000\n```\n\n### \u8907\u6570 CTE\n\n```sql\nWITH\n A\u985E AS (SELECT \u7A2E\u5225, SUM(\u91D1\u984D) AS \u5408\u8A08 FROM APP100 WHERE \u7A2E\u5225 = 'A' GROUP BY \u7A2E\u5225),\n B\u985E AS (SELECT \u7A2E\u5225, SUM(\u91D1\u984D) AS \u5408\u8A08 FROM APP100 WHERE \u7A2E\u5225 = 'B' GROUP BY \u7A2E\u5225)\nSELECT \u7A2E\u5225, \u5408\u8A08 FROM A\u985E\nUNION ALL\nSELECT \u7A2E\u5225, \u5408\u8A08 FROM B\u985E\n```\n\n### CTE \u5185\u3067 UNION\n\n```sql\nWITH \u7D71\u5408 AS (\n SELECT \u9867\u5BA2\u540D FROM APP100\n UNION ALL\n SELECT \u9867\u5BA2\u540D FROM APP200\n)\nSELECT \u9867\u5BA2\u540D FROM \u7D71\u5408\nWHERE \u9867\u5BA2\u540D LIKE '\u7530%'\n```\n\n### CTE \u30A4\u30F3\u30E9\u30A4\u30F3\u5316\uFF08\u81EA\u52D5\u6700\u9069\u5316\uFF09\n\n\u5358\u7D14\u306A CTE\uFF08GROUP BY\u30FB\u96C6\u8A08\u30FBJOIN \u306A\u3057\uFF09\u306F\u81EA\u52D5\u7684\u306B\u30A4\u30F3\u30E9\u30A4\u30F3\u5316\u3055\u308C\u3001CTE \u306E WHERE \u3068\u6700\u7D42\u30AF\u30A8\u30EA\u306E WHERE \u304C\u5408\u6210\u3055\u308C\u3066 kintone REST API \u306B\u9001\u3089\u308C\u307E\u3059\u3002\n\n```sql\n-- \u66F8\u3044\u305F\u30AF\u30A8\u30EA\nWITH \u5BFE\u8C61 AS (SELECT * FROM APP100 WHERE \u533A\u5206 = 'A')\nSELECT * FROM \u5BFE\u8C61 WHERE \u91D1\u984D > 1000\n\n-- \u5B9F\u884C\u3055\u308C\u308B\u30AF\u30A8\u30EA\uFF08\u30A4\u30F3\u30E9\u30A4\u30F3\u5316\uFF09\n-- kintone \u30AF\u30A8\u30EA: \u533A\u5206 = \"A\" and \u91D1\u984D > 1000\n```\n\n\u30A4\u30F3\u30E9\u30A4\u30F3\u5316\u3055\u308C\u306A\u3044\u5834\u5408\uFF08FULL_SCAN \u306E\u307E\u307E\uFF09:\n- CTE \u304C\u8907\u6570\u3042\u308B\n- CTE \u672C\u4F53\u306B GROUP BY / \u96C6\u8A08\u95A2\u6570\u304C\u3042\u308B\n- \u6700\u7D42\u30AF\u30A8\u30EA\u3067 CTE \u3092 JOIN \u3057\u3066\u3044\u308B\n\n### CTE \u3068\u76F8\u5BFE\u65E5\u4ED8\n\n\u5B9F\u4F53\u5316 CTE \u306E\u672C\u4F53\u3001`WITH` \u306E\u6700\u7D42 SELECT\u3001\u5358\u4E00 CTE \u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u5C55\u958B\u3067\u306F\u3001\u305D\u306E SELECT \u306E `WHERE` \u5168\u4F53\u3092 kintone \u30AF\u30A8\u30EA\u3078 exact \u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u5834\u5408\u306B\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u3053\u308C\u3089\u3092 JOIN \u5165\u529B\u306B\u3059\u308B\u5F62\u3001`KORDER BY`\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u3001\u5165\u308C\u5B50 SELECT\u3001\u672C\u4F53\u305D\u306E\u3082\u306E\u304C `UNION` \u306E\u5834\u5408\u3001\u307E\u305F\u306F `WHERE` \u5168\u4F53\u304C exact \u306B\u306A\u3089\u306A\u3044\u5F62\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002JOIN \u3067\u4F7F\u3048\u308B\u7B2C5-W / \u7B2C5-L \u306F\u3001JOIN \u306E\u5168\u5165\u529B\u304C alias \u4ED8\u304D\u7269\u7406 APP \u306E\u5834\u5408\u306B\u9650\u308A\u307E\u3059\u3002\n\n```sql\nWITH \u6708\u5225 AS (\n SELECT \u533A\u5206, COUNT(*) AS \u4EF6\u6570\n FROM APP100\n WHERE \u65E5\u4ED8 = THIS_MONTH()\n GROUP BY \u533A\u5206\n)\nSELECT * FROM \u6708\u5225\n```\n\n`WHERE \u65E5\u4ED8 = THIS_MONTH() AND LENGTH(\u4EF6\u540D) > 1` \u306E\u3088\u3046\u306A prefilter\uFF0Bclient \u6B8B\u4F59\u306E\u5F62\u306F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u3067\u306F\u4F7F\u3048\u307E\u3059\u304C\u3001CTE \u672C\u4F53\u3084 `WITH` \u306E\u6700\u7D42 SELECT\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002\u305D\u306E\u5834\u5408\u306F CTE \u306B\u5207\u308A\u51FA\u3055\u305A\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u3067\u66F8\u304D\u307E\u3059\u3002\n\n### CTE \u5185\u3067\u306E SHOW APPS / DESCRIBE\n\n`SHOW APPS` \u3068 `DESCRIBE` / `DESC` \u306E\u7D50\u679C\u3082 CTE \u3068\u3057\u3066\u5B9A\u7FA9\u3057\u3001\u5F8C\u7D9A\u30AF\u30A8\u30EA\u3067\u30D5\u30A3\u30EB\u30BF\u30FB\u52A0\u5DE5\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- \u540D\u524D\u3067\u30A2\u30D7\u30EA\u4E00\u89A7\u3092\u7D5E\u308A\u8FBC\u3080\nWITH \u30A2\u30D7\u30EA\u4E00\u89A7 AS (SHOW APPS)\nSELECT * FROM \u30A2\u30D7\u30EA\u4E00\u89A7\nWHERE \u30A2\u30D7\u30EA\u540D LIKE '\u53D7\u6CE8%'\n\n-- \u30C6\u30AD\u30B9\u30C8\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u62BD\u51FA\nWITH \u30D5\u30A3\u30FC\u30EB\u30C9 AS (DESCRIBE APP100)\nSELECT * FROM \u30D5\u30A3\u30FC\u30EB\u30C9\nWHERE \u30BF\u30A4\u30D7 IN ('SINGLE_LINE_TEXT', 'MULTI_LINE_TEXT')\n\n-- DESC \u3082\u4F7F\u7528\u53EF\u80FD\nWITH \u30D5\u30A3\u30FC\u30EB\u30C9 AS (DESC APP100)\nSELECT \u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9, \u30E9\u30D9\u30EB FROM \u30D5\u30A3\u30FC\u30EB\u30C9\nORDER BY \u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9 ASC\n```\n\n### GENERATE_SERIES \u2014 \u6574\u6570\u30FB\u65E5\u4ED8\u7CFB\u5217\n\n\u5165\u529B\u30EC\u30B3\u30FC\u30C9\u3092\u4F7F\u308F\u305A\u3001\u6574\u6570\u307E\u305F\u306F `DATE` \u306E\u7CFB\u5217\u3092\u4F5C\u308C\u307E\u3059\u3002`GENERATE_SERIES` \u3092\u76F4\u63A5\u66F8\u3051\u308B\u306E\u306F `WITH` \u306E CTE \u672C\u4F53\u3060\u3051\u3067\u3059\u3002`FROM GENERATE_SERIES(...)`\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u76F4\u66F8\u304D\u3001SELECT \u5217\u306E\u30B9\u30AB\u30E9\u30FC\u95A2\u6570\u3068\u3057\u3066\u306E\u4F7F\u7528\u306B\u306F\u5BFE\u5FDC\u3057\u307E\u305B\u3093\u3002\n\n```text\nWITH CTE\u540D AS (\n GENERATE_SERIES(start, stop [, step]) [AS \u5217\u540D]\n)\nSELECT ... FROM CTE\u540D\n```\n\n\u5217\u540D\u3092\u7701\u7565\u3057\u305F\u5834\u5408\u306F `generate_series` \u3067\u3059\u3002\u6574\u6570\u306E\u65E2\u5B9A step \u306F `1`\u3001\u65E5\u4ED8\u306E\u65E2\u5B9A step \u306F `'1 day'` \u3067\u3059\u3002DATE step \u306F `day(s)`\u3001`month(s)`\u3001`year(s)` \u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002\u6B63\u8CA0\u306E\u5B89\u5168\u306A\u6574\u6570\u4FC2\u6570\u3068\u660E\u793A\u7684\u306A `+`\uFF08`+2` / `'+2 months'`\uFF09\u3092\u4F7F\u7528\u3067\u304D\u3001`stop` \u306B\u3061\u3087\u3046\u3069\u5230\u9054\u3059\u308B\u5024\u306F\u542B\u307F\u307E\u3059\u3002\u7BC4\u56F2\u3068 step \u306E\u5411\u304D\u304C\u9006\u306A\u30890\u884C\uFF08\u5217\u5B9A\u7FA9\u306F\u7DAD\u6301\uFF09\u3001step 0\u306F `ArgumentError` \u3067\u3059\u3002\n\n```sql\nWITH n AS (GENERATE_SERIES(2, 100, 49) AS number)\nSELECT number FROM n ORDER BY number;\n-- 2, 51, 100\uFF08\u6587\u5B57\u5217\u9806\u3067\u306F\u306A\u304F\u6570\u5024\u9806\uFF09\n\nWITH d AS (GENERATE_SERIES('2026-08-05', '2026-08-01', '-2 days') AS \u65E5\u4ED8)\nSELECT \u65E5\u4ED8 FROM d;\n-- 2026-08-05, 2026-08-03, 2026-08-01\n\nWITH m AS (GENERATE_SERIES('2025-08-01', '2026-08-01', '1 month') AS \u6708)\nSELECT \u6708 FROM m ORDER BY \u6708;\n-- 2025-08-01 ... 2026-08-01\uFF0813\u884C\uFF09\n\nWITH y AS (GENERATE_SERIES('2026-01-01', '2022-06-30', '-1 year') AS \u5E74)\nSELECT \u5E74 FROM y;\n-- 2026-01-01, 2025-01-01, 2024-01-01, 2023-01-01\n```\n\n\u65E5\u4ED8\u306F\u5B9F\u5728\u3059\u308B `YYYY-MM-DD` \u3060\u3051\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002month step \u306E start \u306F\u6708\u521D\uFF08`YYYY-MM-01`\uFF09\u3001year step \u306E start \u306F\u5E74\u521D\uFF08`YYYY-01-01`\uFF09\u306B\u9650\u308A\u307E\u3059\u3002stop \u306F\u6708\u521D\u30FB\u5E74\u521D\u3067\u306A\u304F\u3066\u3082\u5305\u542B\u5883\u754C\u3068\u3057\u3066\u4F7F\u3048\u3001\u6B63\u65B9\u5411\u3067\u306F stop \u304C\u5C5E\u3059\u308B\u671F\u9593\u306E\u30A2\u30F3\u30AB\u30FC\u307E\u3067\u3001\u8CA0\u65B9\u5411\u3067\u306F stop \u4EE5\u4E0A\u306E\u671F\u9593\u30A2\u30F3\u30AB\u30FC\u307E\u3067\u3092\u8FD4\u3057\u307E\u3059\u3002\u5404\u6708\u30FB\u5E74\u306F start \u30A2\u30F3\u30AB\u30FC\u30680\u59CB\u307E\u308A\u306E\u884C\u756A\u53F7\u304B\u3089\u76F4\u63A5\u7B97\u51FA\u3057\u3001\u6708\u672B\u4E38\u3081\u3092\u7D2F\u7A4D\u3057\u307E\u305B\u3093\u3002\u5C0F\u6570\u3001`DATETIME`\u3001`TIME`\u3001`week` \u306B\u306F\u5BFE\u5FDC\u3057\u307E\u305B\u3093\u3002\u516C\u958B\u884C\u306E\u5024\u306F\u6587\u5B57\u5217\u3067\u3059\u304C\u3001\u751F\u6210\u6642\u306B\u78BA\u5B9A\u3057\u305F NUMBER / DATE \u306E\u5217\u30E1\u30BF\u304C CTE\u3001JOIN\u3001\u5F8C\u7D9A CTE\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u4F1D\u64AD\u3057\u3001\u6BD4\u8F03\u30FB\u30BD\u30FC\u30C8\u306B\u4F7F\u308F\u308C\u307E\u3059\u3002\n\n\u6708\u672B\u306F\u6708\u521D\u7CFB\u5217\u3092 `LAST_DAY` \u3067\u5909\u63DB\u3057\u3001\u6587\u5B57\u5217\u306E\u6708\u30AD\u30FC\u306F `DATE_FORMAT(\u6708, '%Y-%m')` \u3067\u4F5C\u308A\u307E\u3059\u3002\u3046\u308B\u3046\u5E74\u3082 DATE \u610F\u5473\u8AD6\u306B\u5F93\u3046\u305F\u3081\u3001`LAST_DAY('2024-02-01')` \u306F `2024-02-29` \u3067\u3059\u3002\n\n```sql\nWITH m AS (\n GENERATE_SERIES('2024-01-01', '2024-03-01', '1 month') AS \u6708\u521D\n)\nSELECT \u6708\u521D, LAST_DAY(\u6708\u521D) AS \u6708\u672B, DATE_FORMAT(\u6708\u521D, '%Y-%m') AS \u6708\u30AD\u30FC\nFROM m ORDER BY \u6708\u521D;\n```\n\n\u540C\u3058 `WITH` \u6587\u306B\u3042\u308B\u5168\u751F\u6210 CTE\u306E\u751F\u6210\u4EF6\u6570\u5408\u8A08\u306F10,000\u884C\u307E\u3067\u3067\u3059\u3002\u4E0A\u9650\u306F\u5168\u884C\u3092\u4F5C\u308B\u524D\u306B\u691C\u67FB\u3055\u308C\u3001`LIMIT`\u3001`WHERE`\u3001\u5F8C\u6BB5\u96C6\u8A08\u3067\u306F\u56DE\u907F\u3067\u304D\u307E\u305B\u3093\u3002\u540C\u3058\u751F\u6210 CTE\u3092\u8907\u6570\u56DE\u53C2\u7167\u3057\u3066\u3082\u518D\u751F\u6210\u3057\u307E\u305B\u3093\u3002\n\n```sql\nDECLARE @from = '2026-08-01';\nDECLARE @today = TODAY();\nWITH d AS (GENERATE_SERIES(@from, @today) AS \u65E5\u4ED8)\nSELECT \u65E5\u4ED8 FROM d ORDER BY \u65E5\u4ED8;\n```\n\n\u901A\u5E38\u306E\u30B9\u30AB\u30E9\u30FC\u5909\u6570\u304C\u5177\u4F53\u7684\u306A\u65E5\u4ED8\u306B\u306A\u308C\u3070 DATE \u5F15\u6570\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002`ksql_validate` \u306F\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u78BA\u5B9A\u3059\u308B\u578B\u3001step 0\u3001\u4E0D\u6B63\u65E5\u4ED8\u3001\u672A\u5BFE\u5FDC\u5358\u4F4D\u3001\u5B89\u5168\u6574\u6570\u3001\u5358\u4E00\u30FB\u5408\u8A08\u4E0A\u9650\u3092 API 0\u56DE\u3067\u691C\u67FB\u3057\u307E\u3059\u3002\u5909\u6570\u5024\u306B\u4F9D\u5B58\u3059\u308B\u578B\u30FBstep\u30FB\u4EF6\u6570\u306F\u4FDD\u7559\u3057\u3001\u5B9F\u884C\u6642\u306B\u5909\u6570\u89E3\u6C7A\u5F8C\u306E\u5024\u3067\u6700\u7D42\u5224\u5B9A\u3057\u307E\u3059\u3002\u751F\u6210 `WITH` \u306F read-only \u3067\u3001read-only \u4FDD\u5B58\u30AF\u30A8\u30EA\u3068 `ksql_run_saved_query` \u304B\u3089\u5229\u7528\u3067\u304D\u307E\u3059\u3002\n\n\u751F\u6210 CTE\u3092 JOIN \u306A\u3057\u3067\u76F4\u63A5\u8AAD\u3080\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u3001`OVER (ORDER BY \u751F\u6210\u5217)` \u304C\u751F\u6210\u5217\u305D\u306E\u3082\u306E\u3092\u53C2\u7167\u3059\u308B\u5834\u5408\u3001\u305D\u306E\u5217\u306F\u4E00\u610F\u306A\u306E\u3067\u65E2\u5B9A `RANGE` \u3068 `LAG` / `LEAD` \u306E\u5168\u9806\u5E8F\u8B66\u544A\u3092\u6291\u6B62\u3057\u307E\u3059\u3002JOIN\u3001\u81EA\u5DF1 JOIN\u3001`UNION`\u3001\u901A\u5E38 CTE\u306B\u3088\u308B\u518D\u5B9F\u4F53\u5316\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5C55\u958B\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3001`ORDER BY n + 0` \u7B49\u3067\u306F\u65E2\u5B58\u8B66\u544A\u3092\u7DAD\u6301\u3057\u307E\u3059\u3002\n\n\u5B58\u5728\u3057\u306A\u3044\u65E5\u30920\u3067\u88DC\u3046\u5B8C\u5168\u4F8B:\n\n```sql\nWITH \u65E5\u4ED8\u7CFB\u5217 AS (\n GENERATE_SERIES('2026-08-01', '2026-08-04', '1 day') AS \u65E5\u4ED8\n),\n\u65E5\u5225 AS (\n SELECT \u65E5\u4ED8, SUM(\u91D1\u984D) AS \u5408\u8A08\n FROM APP100\n GROUP BY \u65E5\u4ED8\n)\nSELECT s.\u65E5\u4ED8,\n CASE WHEN d.\u5408\u8A08 = '' THEN 0 ELSE d.\u5408\u8A08 END AS \u5408\u8A08\nFROM \u65E5\u4ED8\u7CFB\u5217 AS s\nLEFT JOIN \u65E5\u5225 AS d ON s.\u65E5\u4ED8 = d.\u65E5\u4ED8\nORDER BY s.\u65E5\u4ED8\n```\n\n\u540C\u3058\u5F62\u3092\u6708\u521D\u7CFB\u5217\u306B\u4F7F\u3046\u3068\u3001\u53D6\u5F15\u306E\u306A\u3044\u6708\u30820\u884C\u3067\u306F\u306A\u304F\u5B9F\u7E3E0\u306E\u884C\u306B\u306A\u308A\u307E\u3059\u30020\u57CB\u3081\u5F8C\u306E CTE \u306B `LAG(\u5B9F\u7E3E) OVER (ORDER BY \u6708)` \u3092\u9069\u7528\u3059\u308C\u3070\u3001\u7A7A\u6708\u76F4\u5F8C\u306F2\u304B\u6708\u524D\u306E\u5B9F\u7E3E\u3067\u306F\u306A\u304F\u3001\u76F4\u524D\u306E\u7A7A\u6708\u306E0\u3092\u8FD4\u3057\u307E\u3059\u3002\n\n`EXPLAIN WITH ... GENERATE_SERIES ...` \u306F source\u3001\u5217\u540D\u3001INTEGER / DATE\u3001start\u3001stop\u3001\u6B63\u898F\u5316\u3057\u305F step\u3001\u751F\u6210\u4EF6\u6570\u300110,000\u884C\u30AC\u30FC\u30C9\u3001records API \u304C `none` \u3067\u3042\u308B\u3053\u3068\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u7D14\u7C8B\u306A\u751F\u6210\u7CFB\u5217\u306E\u5B9F\u884C\u3068 EXPLAIN \u306F\u30EC\u30B3\u30FC\u30C9\u3001Cursor\u3001\u66F8\u8FBC\u3001\u30D5\u30A9\u30FC\u30E0\u30FB\u30A2\u30D7\u30EA\u60C5\u5831 API \u3092\u547C\u3073\u307E\u305B\u3093\u3002\n\n### WITH RECURSIVE / CYCLE\uFF08\u518D\u5E30 CTE\uFF09\n\n\u6DF1\u3055\u304C\u30C7\u30FC\u30BF\u6B21\u7B2C\u3067\u5909\u308F\u308B\u968E\u5C64\u306F\u3001read-only \u306E `WITH RECURSIVE` \u3067\u5C55\u958B\u3067\u304D\u307E\u3059\u3002\u518D\u5E30 CTE \u672C\u4F53\u306F `seed SELECT UNION ALL recursive SELECT` \u306E2\u679D\u3068\u3057\u3001\u518D\u5E30\u9805\u306F\u81EA\u5DF1\u53C2\u7167\u30921\u56DE\u3060\u3051 `INNER JOIN` \u306E\u7247\u5074\u306B\u7F6E\u304D\u307E\u3059\u3002\u518D\u5E30 CTE \u306F1\u3064\u306E `WITH` \u306B1\u500B\u307E\u3067\u3067\u3059\u3002CTE \u5217\u540D\u30EA\u30B9\u30C8\u306F\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u3001seed \u3068\u518D\u5E30\u9805\u306E\u5217\u6570\u30FB\u4F4D\u7F6E\u3054\u3068\u306E\u578B\u304C\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u5F8C\u65B9\u53C2\u7167\u3001\u76F8\u4E92\u30FB\u591A\u91CD\u518D\u5E30\u3001\u518D\u5E30\u9805\u306E OUTER JOIN\u30012\u3064\u76EE\u306E JOIN\u3001\u96C6\u8A08\u3001window\u3001`DISTINCT`\u3001subquery\u3001`GROUP BY`\u3001`ORDER BY`\u3001`LIMIT` / `OFFSET`\u3001DML source\u3001\u5165\u308C\u5B50\u306E\u518D\u5E30 CTE \u306F\u975E\u5BFE\u5FDC\u3067\u3059\uFF08\u5C06\u6765\u62E1\u5F35\u306E\u5019\u88DC\uFF09\u3002\n\n```sql\nWITH RECURSIVE \u90E8\u54C1\u5C55\u958B\n (\u89AA\u54C1\u76EE, \u5B50\u54C1\u76EE, \u6DF1\u3055, \u7D2F\u8A08\u54E1\u6570) AS (\n SELECT \u89AA\u54C1\u76EE, \u5B50\u54C1\u76EE, 1, \u54E1\u6570\n FROM APP100\n WHERE \u89AA\u54C1\u76EE = 'P001'\n UNION ALL\n SELECT c.\u89AA\u54C1\u76EE, c.\u5B50\u54C1\u76EE, r.\u6DF1\u3055 + 1, r.\u7D2F\u8A08\u54E1\u6570 * c.\u54E1\u6570\n FROM APP100 AS c\n INNER JOIN \u90E8\u54C1\u5C55\u958B AS r ON c.\u89AA\u54C1\u76EE = r.\u5B50\u54C1\u76EE\n)\nCYCLE \u5B50\u54C1\u76EE SET is_cycle TO 'Y' DEFAULT 'N'\nSELECT \u5B50\u54C1\u76EE, \u6DF1\u3055, \u7D2F\u8A08\u54E1\u6570, is_cycle\nFROM \u90E8\u54C1\u5C55\u958B\nORDER BY \u6DF1\u3055, \u5B50\u54C1\u76EE;\n```\n\n`CYCLE` \u306F\u5358\u4E00\u5217\u3060\u3051\u3092\u53D7\u3051\u4ED8\u3051\u3001`TO` / `DEFAULT` \u306F\u7570\u306A\u308B\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u306B\u3057\u307E\u3059\u3002\u5FAA\u74B0\u5224\u5B9A\u306F\u5404\u884C\u306E\u73FE\u5728 path \u5185\u3060\u3051\u3067\u884C\u3044\u3001global visited \u96C6\u5408\u306F\u4F7F\u3044\u307E\u305B\u3093\u3002\u540C\u3058\u30CE\u30FC\u30C9\u3078\u5225 path \u3067\u5230\u9054\u3057\u305F\u884C\u306F\u5225\u306E\u51FA\u73FE\u3068\u3057\u3066\u6B8B\u308A\u3001\u305D\u308C\u305E\u308C\u518D\u5C55\u958B\u3055\u308C\u307E\u3059\u3002path \u306F\u5185\u90E8\u72B6\u614B\u3067\u3042\u308A\u3001\u51FA\u529B\u5217\u306B\u306F\u3067\u304D\u307E\u305B\u3093\uFF08\u5C06\u6765\u62E1\u5F35\u306E\u5019\u88DC\uFF09\u3002\u5FAA\u74B0\u884C\u306F `TO` \u5024\u3092\u4ED8\u3051\u3066\u7D50\u679C\u30781\u56DE\u542B\u3081\u307E\u3059\u304C\u3001\u6B21\u306E frontier \u306B\u306F\u5165\u308C\u307E\u305B\u3093\u3002\n\n`CYCLE` \u306F\u73FE\u5728 path \u4E0A\u306E\u5FAA\u74B0\u3092\u6B62\u3081\u308B\u3060\u3051\u3067\u3001\u5FAA\u74B0\u306E\u306A\u3044 DAG \u3084\u591A\u7D4C\u8DEF\u5408\u6D41\u306B\u3088\u308B\u7D44\u307F\u5408\u308F\u305B\u7206\u767A\u306E\u5883\u754C\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u305D\u306E\u305F\u3081\u6B21\u306E\u4E09\u5883\u754C\u306F `CYCLE` \u306E\u6709\u7121\u306B\u304B\u304B\u308F\u3089\u305A\u5E38\u306B\u6709\u52B9\u3067\u3001\u5916\u5074 `LIMIT` \u3068 `onLimit=truncate` \u3067\u306F\u7DE9\u548C\u3067\u304D\u307E\u305B\u3093\u3002\u4E0A\u9650\u8D85\u904E\u6642\u306F\u90E8\u5206\u7D50\u679C\u3092\u8FD4\u3055\u305A fail-closed \u3057\u307E\u3059\u3002engine library \u306E\u516C\u958B\u30A8\u30E9\u30FC `code` \u306F\u5F53\u9762 `EXECUTION_ERROR` \u3067\u3059\u3002\n\n#### \u518D\u5E30 CTE \u306E\u5883\u754C\u65E2\u5B9A\u5024\n\n| \u8A2D\u5B9A | \u65E2\u5B9A\u5024 | \u8A08\u6E2C\u5BFE\u8C61 |\n|---|---:|---|\n| `recursiveCteMaxDepth` | 100 | \u751F\u6210\u3055\u308C\u305F\u5019\u88DC\u306E\u518D\u5E30\u6DF1\u3055 |\n| `recursiveCteMaxRows` | 10,000 | seed\u3001\u975E\u5FAA\u74B0\u884C\u3001\u5FAA\u74B0 mark \u884C\u3092\u542B\u3080\u7D2F\u7A4D\u7D50\u679C\u884C\u6570 |\n| `recursiveCteMaxExpansions` | 100,000 | JOIN \u6210\u7ACB\u5F8C\u3001\u518D\u5E30\u9805\u306E WHERE / CYCLE \u9664\u5916\u524D\u306E\u7D2F\u7A4D\u5019\u88DC\u30DA\u30A2\u6570 |\n\n\u4E09\u5024\u306F positive safe integer \u3067\u3059\u3002Node \u7CFB\u3067\u306F\u660E\u793A input / CLI\u3001env\u3001profile\u3001engine default \u306E\u9806\u3001plugin \u3067\u306F UI / \u4FDD\u5B58\u5024\u3001engine default \u306E\u9806\u306B\u89E3\u6C7A\u3057\u307E\u3059\u3002\u518D\u5E30 query \u306F\u53C2\u7167\u30A2\u30D7\u30EA\u306E\u5B8C\u5168\u6027\u306B\u3082\u65E2\u5B58 `maxRecords` \u3092\u4F7F\u3044\u3001\u5E38\u306B `onLimit=error` \u3067\u3059\u3002\n\n### \u5B9F\u4F53\u5316\u5F8C\u306E\u5217\u5B9F\u5728\u30C1\u30A7\u30C3\u30AF\n\nCTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FB`SHOW APPS` / `DESCRIBE` \u306E\u7D50\u679C\u306F\u3001\u5B9F\u4F53\u5316\u3057\u305F SELECT \u306E**\u51FA\u529B\u5217\u3060\u3051**\u3092\u5F8C\u6BB5\u304B\u3089\u53C2\u7167\u3067\u304D\u307E\u3059\u3002\u5B58\u5728\u3057\u306A\u3044\u5217\u306F\u7A7A\u6587\u5B57\u3068\u3057\u3066\u8A55\u4FA1\u305B\u305A\u3001\u4E0B\u6D41\u306E records GET\u3001DML \u78BA\u8A8D\u3001POST / PUT \u3088\u308A\u524D\u306B `ArgumentError: unknown field code(s)` \u3067\u62D2\u5426\u3057\u307E\u3059\u3002SELECT\u3001WHERE\uFF08`=` / `LIKE` \u3092\u542B\u3080\u5168\u6F14\u7B97\u5B50\uFF09\u3001\u5F0F\u3001CASE\u3001\u96C6\u8A08\u3001GROUP BY / HAVING / ORDER BY\u3001window\u3001JOIN\u3001subquery\u3001UNION\u3001`INSERT` / `UPSERT ... SELECT` \u306E source \u3067\u5171\u901A\u3067\u3059\u3002\u7269\u7406 APP \u3068\u5B9F\u4F53\u5316 source \u3092\u6DF7\u5728 JOIN \u3057\u305F\u5834\u5408\u3082\u4E21\u65B9\u3092\u691C\u8A3C\u3057\u307E\u3059\u3002\n\n\u3053\u308C\u306F\u3001\u5F93\u6765\u306E\u8AA4\u7D50\u679C\u30FB\u8AA4\u66F8\u304D\u8FBC\u307F\u3092\u30A8\u30E9\u30FC\u3078\u5909\u3048\u308B\u7834\u58CA\u7684\u306A\u6B63\u3057\u3055\u4FEE\u6B63\u3067\u3059\uFF08v3.30.0\u30FBB86\uFF09\u3002\u7279\u306B\u3001\u5024\u306E\u3064\u3082\u308A\u3067\u88F8\u306E\u8B58\u5225\u5B50\u3092\u66F8\u304F\u3068\u5217\u53C2\u7167\u306B\u306A\u308A\u307E\u3059\u3002\u6587\u5B57\u5217\u5024\u306F\u5F15\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n```sql\n-- NG: \u9867\u5BA2 \u306F\u5217\u53C2\u7167\u3002\u5B9F\u4F53\u5316\u7D50\u679C\u306B\u305D\u306E\u5217\u304C\u306A\u3051\u308C\u3070 ArgumentError\nWITH \u30A2\u30D7\u30EA\u4E00\u89A7 AS (SHOW APPS)\nSELECT * FROM \u30A2\u30D7\u30EA\u4E00\u89A7 WHERE \u30A2\u30D7\u30EA\u540D LIKE \u9867\u5BA2;\n\n-- OK: \u5024\u3092\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u3068\u3057\u3066\u5F15\u7528\nWITH \u30A2\u30D7\u30EA\u4E00\u89A7 AS (SHOW APPS)\nSELECT * FROM \u30A2\u30D7\u30EA\u4E00\u89A7 WHERE \u30A2\u30D7\u30EA\u540D LIKE '\u9867\u5BA2';\n```\n\n`SELECT x AS y` \u3092\u5B9F\u4F53\u5316\u3057\u305F\u5F8C\u6BB5\u3067\u306F `x` \u3067\u306F\u306A\u304F\u51FA\u529B\u540D `y` \u3092\u4F7F\u3044\u307E\u3059\u3002UNION \u306E\u5B9F\u4F53\u5316\u7D50\u679C\u3067\u306F\u5DE6\u679D\u306E\u5217\u540D\uFF0Falias \u304C\u51FA\u529B schema \u3067\u3059\u3002`rows=[] && columns=[]` \u3067 schema \u81EA\u4F53\u3092\u5FA9\u5143\u3067\u304D\u306A\u30440\u884C wildcard source \u306F\u3001JOIN \u306A\u3057\u306E\u8AAD\u51FA\u3057\u306B\u9650\u308A\u65E2\u5B58\u306E0\u884C\u6319\u52D5\u3092\u7DAD\u6301\u3057\u307E\u3059\u3002JOIN \u5165\u529B\u3067\u306F\u6709\u52B9\u306A JOIN key \u3092\u8A3C\u660E\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u7269\u7406\u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u524D\u306B schema-unavailable error \u306B\u306A\u308A\u307E\u3059\u3002\n\n\u5B9F\u4F53\u5316 CTE\uFF0F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5217\u3092\u672A\u4FEE\u98FE\u3067 `WHERE` \u306B\u4F7F\u3063\u305F\u5834\u5408\u3082\u3001`EXPLAIN` \u306F\u5B9F\u884C\u3068\u540C\u3058\u89E3\u6C7A\u898F\u5247\u3067\u8A08\u753B\u3092\u51FA\u3057\u307E\u3059\uFF08v3.79.0\u301C\u3002\u4EE5\u524D\u306F `WHERE_FIELD_UNRESOLVED` \u306B\u306A\u308A\u307E\u3057\u305F\uFF09\u3002\n\n**\u6CE8\u610F\u4E8B\u9805:**\n- \u975E\u518D\u5E30 CTE \u672C\u4F53\u306E\u30B5\u30D6\u30AF\u30A8\u30EA\u306F SIMPLE / FULL_SCAN \u3092\u81EA\u52D5\u5224\u5B9A\n- \u518D\u5E30 CTE \u306F read-only \u3067\u3001\u5B8C\u5168\u5B9F\u4F53\u5316\u3057\u3066\u304B\u3089\u5916\u5074 SELECT \u3092\u8A55\u4FA1\n\n---", uri: "ksql://language-reference/13-with-cte" }, "14-show-apps-describe": { heading: "14. SHOW APPS / DESCRIBE", text: "## 14. SHOW APPS / DESCRIBE\n\n### SHOW APPS \u2014 \u30A2\u30D7\u30EA\u4E00\u89A7\u53D6\u5F97\n\nkintone \u4E0A\u306E\u3059\u3079\u3066\u306E\u30A2\u30D7\u30EA\uFF08\u6700\u5927 1,000 \u4EF6\uFF09\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002\n\n```sql\nSHOW APPS\n```\n\n| \u30AB\u30E9\u30E0 | \u5185\u5BB9 |\n|--------|------|\n| `\u30A2\u30D7\u30EAID` | \u30A2\u30D7\u30EA ID |\n| `\u30A2\u30D7\u30EA\u540D` | \u30A2\u30D7\u30EA\u540D |\n| `\u8AAC\u660E` | \u8AAC\u660E |\n\n> 100 \u4EF6\u5358\u4F4D\u3067\u81EA\u52D5\u30DA\u30FC\u30B8\u30F3\u30B0\u3057\u3001\u6700\u5927 1,000 \u4EF6\u307E\u3067\u53D6\u5F97\u3057\u307E\u3059\u3002\n\n### DESCRIBE / DESC \u2014 \u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u53D6\u5F97\n\n\u6307\u5B9A\u3057\u305F\u30A2\u30D7\u30EA\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u5B9A\u7FA9\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002\n\n```sql\nDESCRIBE APP100\nDESC APP100 -- \u7701\u7565\u5F62\uFF08DESCRIBE \u3068\u540C\u7B49\uFF09\n```\n\n| \u30AB\u30E9\u30E0 | \u5185\u5BB9 |\n|--------|------|\n| `\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9` | \u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9 |\n| `\u30E9\u30D9\u30EB` | \u30D5\u30A3\u30FC\u30EB\u30C9\u30E9\u30D9\u30EB |\n| `\u30BF\u30A4\u30D7` | \u30D5\u30A3\u30FC\u30EB\u30C9\u30BF\u30A4\u30D7\uFF08`SINGLE_LINE_TEXT`\u3001`NUMBER` \u7B49\uFF09 |\n| `\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB` | \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u4E2D\u306E\u9805\u76EE\u306A\u3089\u3001\u305D\u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u3002\u89AA\u9805\u76EE\u306A\u3089\u7A7A\u6587\u5B57 |\n| `\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7` | \u30EB\u30C3\u30AF\u30A2\u30C3\u30D7\u30D5\u30A3\u30FC\u30EB\u30C9\u306A\u3089 `YES`\u3001\u305D\u308C\u4EE5\u5916\u306F\u7A7A\u6587\u5B57 |\n| `\u30B3\u30D4\u30FC\u5143` | \u30EB\u30C3\u30AF\u30A2\u30C3\u30D7\u304B\u3089\u30B3\u30D4\u30FC\u3055\u308C\u305F\u5024\u306A\u3089 `YES`\u3001\u305D\u308C\u4EE5\u5916\u306F\u7A7A\u6587\u5B57 |\n| `\u91CD\u8907\u7981\u6B62` | \u5024\u306E\u91CD\u8907\u304C\u7981\u6B62\u3055\u308C\u3066\u3044\u308C\u3070 `YES`\u3001\u305D\u308C\u4EE5\u5916\u306F\u7A7A\u6587\u5B57 |\n| `\u8A08\u7B97\u5F0F` | \u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F\u975E\u7A7A\u306E\u8A08\u7B97\u5F0F\u3092\u6301\u3064\u30D5\u30A3\u30FC\u30EB\u30C9\u306A\u3089 `YES`\u3001\u305D\u308C\u4EE5\u5916\u306F\u7A7A\u6587\u5B57 |\n\n\u5024\u306E\u7531\u6765\u3092\u793A\u30594\u5217\uFF08`\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7` / `\u30B3\u30D4\u30FC\u5143` / `\u91CD\u8907\u7981\u6B62` / `\u8A08\u7B97\u5F0F`\uFF09\u306F\u3001\u8A72\u5F53\u3059\u308B\u3068\u304D\u3060\u3051\u6587\u5B57\u5217 `YES` \u3092\u8FD4\u3057\u307E\u3059\u30024\u5217\u304C\u3059\u3079\u3066\u7A7A\u3067\u3082\u3001\u5B8C\u5168\u306A\u5236\u7D04\u3084\u8A2D\u5B9A\u306E\u78BA\u8A8D\u304C\u4E0D\u8981\u3068\u306F\u9650\u308A\u307E\u305B\u3093\u3002\u5FC5\u8981\u306B\u5FDC\u3058\u3066 `ksql_app_metadata` \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n> **`DESCRIBE` \u306F\u89AA\u9805\u76EE\u3068\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u4E2D\u306E\u9805\u76EE\u3092\u4E21\u65B9\u8FD4\u3057\u307E\u3059**\uFF08v3.56.0 \u3067 `\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB` \u5217\u3092\u8FFD\u52A0\uFF09\u3002\n> **\u3069\u3061\u3089\u304B\u3089\u9078\u3076\u304B\u3092\u9593\u9055\u3048\u308B\u3068\u3001\u30A8\u30E9\u30FC\u306B\u306A\u3089\u305A\u5168\u884C\u304C\u7A7A\u306B\u306A\u308A\u307E\u3059\u3002**\n>\n> ```sql\n> -- \u2717 \u660E\u7D30\u9805\u76EE\u3092\u89AA\u304B\u3089\u9078\u3076\u3068\u3001\u8B66\u544A\u306F\u51FA\u308B\u304C\u5024\u306F\u5168\u884C\u7A7A\n> SELECT $id, \u6570\u91CF FROM APP100\n>\n> -- \u25CB \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u304B\u3089\u9078\u3076\n> SELECT _pid, \u6570\u91CF FROM APP100$\u660E\u7D30\n> ```\n>\n> **`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB` \u5217\u304C\u7A7A\u3067\u306A\u3044\u9805\u76EE\u306F\u3001`APP100$<\u305D\u306E\u5024>` \u304B\u3089\u9078\u3093\u3067\u304F\u3060\u3055\u3044\u3002**\n> \u89AA\u304B\u3089\u9078\u3093\u3060\u5834\u5408\u306F\u5B9F\u884C\u6642\u306B\u8B66\u544A\u3092\u51FA\u3057\u307E\u3059\u304C\u3001**\u5024\u306F\u5909\u3048\u307E\u305B\u3093**\uFF08\u65E2\u5B58\u306E SQL \u3092\u58CA\u3055\u306A\u3044\u305F\u3081\uFF09\u3002\n\n```sql\n-- WITH \u53E5\u3068\u7D44\u307F\u5408\u308F\u305B\u3066\u30D5\u30A3\u30EB\u30BF\nWITH \u30A2\u30D7\u30EA AS (SHOW APPS)\nSELECT * FROM \u30A2\u30D7\u30EA WHERE \u30A2\u30D7\u30EA\u540D LIKE '\u53D7\u6CE8%'\n\nWITH \u30D5\u30A3\u30FC\u30EB\u30C9 AS (DESC APP100)\nSELECT * FROM \u30D5\u30A3\u30FC\u30EB\u30C9 WHERE \u30BF\u30A4\u30D7 = 'NUMBER'\n```\n\n---", uri: "ksql://language-reference/14-show-apps-describe" }, "15-insert": { heading: "15. INSERT", text: "## 15. INSERT\n\n### \u89AA\u30EC\u30B3\u30FC\u30C9 DML \u306E\u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u691C\u67FB\n\n\u89AA\u30EC\u30B3\u30FC\u30C9\u3092\u5BFE\u8C61\u3068\u3059\u308B `INSERT` / `UPDATE` / `UPSERT` \u306F\u3001\u66F8\u304D\u8FBC\u307F\u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u5BFE\u8C61\u30A2\u30D7\u30EA\u306B\u5B58\u5728\u3057\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306B\u3042\u308A\u3001\u66F8\u304D\u8FBC\u307F\u53EF\u80FD\u3067\u3042\u308B\u3053\u3068\u3092\u5B9F\u884C\u524D\u306B\u691C\u67FB\u3057\u307E\u3059\u3002\u4E0D\u5B58\u5728\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u306E\u8AA4\u8A18\u3092\u542B\u3080\uFF09\u3068\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3001\u884C\u5358\u4F4D\u3067\u7121\u8996\u30FB\u9694\u96E2\u305B\u305A\u6587\u5358\u4F4D\u306E `ArgumentError` \u306B\u306A\u308A\u307E\u3059\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u3092\u66F4\u65B0\u3059\u308B\u5834\u5408\u306F `APP100$\u660E\u7D30` \u306E\u3088\u3046\u306A[\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DML](#\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB-dml)\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n\u3053\u306E\u691C\u67FB\u306F `VALIDATE ONLY` / `ON ERROR SKIP` \u3092\u542B\u3080\u5168\u7D4C\u8DEF\u3067\u3001\u30BD\u30FC\u30B9 SELECT\u3001\u66F4\u65B0\u30FBUPSERT\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u306E\u53D6\u5F97\u3001\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\u3001POST / PUT \u3088\u308A\u524D\u306B\u5B8C\u4E86\u3057\u307E\u3059\u3002\u4E0D\u6B63\u306A\u66F8\u304D\u8FBC\u307F\u5148\u3067\u306F\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u306E\u53D6\u5F97\u4EE5\u5916\u306E\u30EC\u30B3\u30FC\u30C9 API \u3084\u78BA\u8A8D\u51E6\u7406\u3092\u547C\u3073\u307E\u305B\u3093\u3002\n\n### VALUES \u306B\u3088\u308B\u767B\u9332\n\n```sql\nINSERT INTO APP100 (\u30D5\u30A3\u30FC\u30EB\u30C91, \u30D5\u30A3\u30FC\u30EB\u30C92, ...)\nVALUES (\u50241, \u50242, ...)\n```\n\nVALUES \u306E\u6570\u5024\u306B\u306F\u5358\u9805\u7B26\u53F7\u4ED8\u304D\u30EA\u30C6\u30E9\u30EB\uFF08`-5` / `+5` / `-0.5` / `+0.5`\uFF09\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u7B26\u53F7\u306E\u76F4\u5F8C\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u306B\u9650\u3089\u308C\u3001`--5` / `+-5` / `-+5` / `++5`\u3001\u7B97\u8853\u5F0F\u3001\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3001\u95A2\u6570\u547C\u3073\u51FA\u3057\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u5F15\u7528\u7B26\u4ED8\u304D\u306E `'-5'` \u306F\u6570\u5024\u3067\u306F\u306A\u304F\u6587\u5B57\u5217\u3067\u3059\u3002\u3053\u306E\u898F\u5247\u306F\u89AA\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E INSERT VALUES \u3068 UPSERT VALUES \u3067\u5171\u901A\u3067\u3059\u3002\n\n#### \u5358\u4E00\u30EC\u30B3\u30FC\u30C9\n\n```sql\nINSERT INTO APP100 (\u6C0F\u540D, \u91D1\u984D, \u30B9\u30C6\u30FC\u30BF\u30B9)\nVALUES ('\u7530\u4E2D \u592A\u90CE', 50000, '\u9032\u884C\u4E2D')\n```\n\n#### \u8907\u6570\u30EC\u30B3\u30FC\u30C9\uFF08\u4E00\u62EC\u767B\u9332\uFF09\n\n```sql\nINSERT INTO APP100 (\u6C0F\u540D, \u91D1\u984D)\nVALUES ('\u7530\u4E2D \u592A\u90CE', 50000),\n ('\u9234\u6728 \u82B1\u5B50', 30000),\n ('\u4F50\u85E4 \u4E00\u90CE', 80000)\n```\n\n> **\u30D0\u30C3\u30C1\u51E6\u7406:** 100\u4EF6\u3054\u3068\u306B API \u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u5206\u5272\u3057\u3066\u9001\u4FE1\u3057\u307E\u3059\u3002\n\n> **\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\uFF08\u30D7\u30E9\u30B0\u30A4\u30F3\uFF09:** `INSERT INTO ... VALUES` \u3082\u5B9F\u884C\u524D\u306B\u767B\u9332\u4EF6\u6570\u3092\u8868\u793A\u3057\u3066\u78BA\u8A8D\u3092\u6C42\u3081\u307E\u3059\u3002 \n> \u30AD\u30E3\u30F3\u30BB\u30EB\u3059\u308B\u3068\u767B\u9332\u306F\u884C\u308F\u308C\u307E\u305B\u3093\u3002\n\n### INSERT INTO ... SELECT\n\n\u5225\u30A2\u30D7\u30EA\u306E\u30C7\u30FC\u30BF\u3092\u30B3\u30D4\u30FC\u767B\u9332\u3057\u307E\u3059\u3002\n\n```sql\nINSERT INTO APP100 (\u30D5\u30A3\u30FC\u30EB\u30C91, \u30D5\u30A3\u30FC\u30EB\u30C92, ...)\nSELECT \u52171, \u52172, ...\nFROM APP200\n[WHERE \u6761\u4EF6]\n```\n\n```sql\n-- \u5225\u30A2\u30D7\u30EA\u304B\u3089\u6761\u4EF6\u4ED8\u304D\u3067\u30B3\u30D4\u30FC\nINSERT INTO APP100 (\u9867\u5BA2\u540D, \u91D1\u984D)\nSELECT \u9867\u5BA2\u540D, \u5408\u8A08\u91D1\u984D\nFROM APP200\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u78BA\u5B9A'\n\n-- \u95A2\u6570\u30FB\u7B97\u8853\u5F0F\u3092\u4F7F\u3063\u3066\u52A0\u5DE5\u3057\u306A\u304C\u3089\u30B3\u30D4\u30FC\nINSERT INTO APP100 (\u9867\u5BA2\u540D, \u7A0E\u8FBC\u91D1\u984D)\nSELECT UPPER(\u9867\u5BA2\u540D), ROUND(\u91D1\u984D * 1.1)\nFROM APP200\nWHERE \u91D1\u984D > 0\n```\n\n- SELECT \u306E\u5217\u6570\u3068 INSERT \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\u304C\u4E00\u81F4\u3057\u306A\u3044\u5834\u5408\u306F\u30A8\u30E9\u30FC\n- SELECT \u5074\u306F SIMPLE / FULL_SCAN \u81EA\u52D5\u5224\u5B9A\uFF08JOIN\u30FBGROUP BY\u30FB\u95A2\u6570\u3082\u4F7F\u7528\u53EF\uFF09\n- \u7D50\u679C\u3092 100 \u4EF6\u30D0\u30C3\u30C1\u3067 POST\n\n### INSERT \u3067\u306E\u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\n\n\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u30FB\u7D44\u7E54\u9078\u629E\u30FB\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u30FB\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30FB\u8907\u6570\u9078\u629E\u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u66F8\u304D\u8FBC\u307F\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002 \n\u5B9F\u884C\u524D\u306B\u5BFE\u8C61\u30A2\u30D7\u30EA\u306E `getFields()` \u3067\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3092\u81EA\u52D5\u53D6\u5F97\u3057\u3001\u578B\u306B\u5FDC\u3058\u305F API \u5F62\u5F0F\u306B\u5909\u63DB\u3057\u307E\u3059\u3002\n\n#### \u30AB\u30F3\u30DE\u533A\u5207\u308A\u6587\u5B57\u5217\uFF08\u901A\u5E38\u30B1\u30FC\u30B9\uFF09\n\n```sql\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E\uFF08\u5358\u4E00\uFF09\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005) VALUES ('A\u793E', 'user1')\n\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E\uFF08\u8907\u6570\uFF09\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005) VALUES ('A\u793E', 'user1,user2')\n\n-- \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9 / \u8907\u6570\u9078\u629E\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u30BF\u30B0) VALUES ('A\u793E', '\u91CD\u8981,VIP')\n\n-- \u7A7A\u306B\u3059\u308B\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005) VALUES ('A\u793E', '')\n```\n\n| SQL \u5024 | \u30D5\u30A3\u30FC\u30EB\u30C9\u578B | kintone API \u9001\u4FE1\u5024 |\n|---|---|---|\n| `'user1'` | USER_SELECT \u7B49 | `[{\"code\":\"user1\"}]` |\n| `'user1,user2'` | USER_SELECT \u7B49 | `[{\"code\":\"user1\"},{\"code\":\"user2\"}]` |\n| `'\u9078\u629E\u80A2A,\u9078\u629E\u80A2B'` | CHECK_BOX \u7B49 | `[\"\u9078\u629E\u80A2A\",\"\u9078\u629E\u80A2B\"]` |\n| `''` | \u30E6\u30FC\u30B6\u30FC\u7CFB / \u914D\u5217\u7CFB | `[]` |\n\n#### \u914D\u5217\u30EA\u30C6\u30E9\u30EB `[...]`\uFF08\u30AB\u30F3\u30DE\u3092\u542B\u3080\u9078\u629E\u80A2\u306A\u3069\u660E\u793A\u6307\u5B9A\uFF09\n\n```sql\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E\uFF08\u8907\u6570\uFF09\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005) VALUES ('A\u793E', ['user1', 'user2'])\n\n-- \u30AB\u30F3\u30DE\u3092\u542B\u3080\u9078\u629E\u80A2\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u30BF\u30B0) VALUES ('A\u793E', ['\u9078\u629E\u80A2A', '\u9078\u629E\u80A2B,C'])\n-- \u2191 '\u9078\u629E\u80A2B,C' \u306F 1 \u3064\u306E\u5024\n```\n\n#### CASE WHEN / IF \u3067\u914D\u5217\u3092\u6307\u5B9A\n\n```sql\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E: IF() \u3067\u62C5\u5F53\u8005\u3092\u5206\u5C90\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005)\nVALUES ('A\u793E', IF(1 = 1, ['user1', 'user2'], 'user3'))\n\n-- CASE WHEN \u3067\u8907\u6570\u306E\u5206\u5C90\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u30BF\u30B0)\nVALUES ('B\u793E', CASE WHEN 1 = 0 THEN ['\u91CD\u8981', 'VIP'] ELSE '\u901A\u5E38' END)\n```\n\n> INSERT VALUES \u306E CASE WHEN / IF \u306F\u5B9A\u6570\u6761\u4EF6\u306E\u307F\u6709\u52B9\u3067\u3059\u3002 \n> \u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u73FE\u5728\u5024\u3092\u53C2\u7167\u3059\u308B\u6761\u4EF6\uFF08`\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5BFE\u8C61'` \u7B49\uFF09\u306F\u7A7A\u6587\u5B57\u3068\u3057\u3066\u8A55\u4FA1\u3055\u308C\u307E\u3059\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F UPDATE SET \u3067\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\n\n#### INSERT SELECT \u3067\u306E\u540C\u578B\u30D5\u30A3\u30FC\u30EB\u30C9\u81EA\u52D5\u8EE2\u9001\n\n\u8EE2\u9001\u5143\u30FB\u8EE2\u9001\u5148\u304C\u540C\u3058\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u306E\u5834\u5408\u3001JSON \u3092\u81EA\u52D5\u89E3\u6790\u3057\u3066 API \u5F62\u5F0F\u306B\u5909\u63DB\u3057\u307E\u3059\u3002\n\n```sql\n-- USER_SELECT \u2192 USER_SELECT: \u81EA\u52D5\u8EE2\u9001\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005) SELECT \u9867\u5BA2\u540D, \u62C5\u5F53\u8005 FROM APP88\n\n-- CHECK_BOX \u2192 CHECK_BOX: \u81EA\u52D5\u8EE2\u9001\nINSERT INTO APP89 (\u9867\u5BA2\u540D, \u30BF\u30B0) SELECT \u9867\u5BA2\u540D, \u30BF\u30B0 FROM APP88\n```\n\n### \u65E5\u6642\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u81EA\u52D5\u5909\u63DB\n\n\u65E5\u6642\uFF08DATETIME\uFF09\u30FB\u65E5\u4ED8\uFF08DATE\uFF09\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3001\u3088\u304F\u4F7F\u308F\u308C\u308B\u8868\u8A18\u3092 kintone \u306E\u8981\u6C42\u5F62\u5F0F\u306B\u81EA\u52D5\u5909\u63DB\u3057\u307E\u3059\u3002 \n\u5909\u63DB\u306F\u30D6\u30E9\u30A6\u30B6\u306E\u30ED\u30FC\u30AB\u30EB\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3092\u57FA\u6E96\u3068\u3057\u307E\u3059\u3002\n\n#### DATETIME \u30D5\u30A3\u30FC\u30EB\u30C9\n\nkintone \u306F `YYYY-MM-DDTHH:MM:SSZ`\uFF08UTC\uFF09\u5F62\u5F0F\u3092\u8981\u6C42\u3057\u307E\u3059\u3002 \n\u4EE5\u4E0B\u306E\u5F62\u5F0F\u3067\u6307\u5B9A\u3059\u308B\u3068\u81EA\u52D5\u5909\u63DB\u3055\u308C\u307E\u3059\u3002\n\n| SQL \u5024\uFF08\u5165\u529B\uFF09 | kintone API \u9001\u4FE1\u5024\uFF08JST \u74B0\u5883\u306E\u5834\u5408\uFF09 |\n|---|---|\n| `'2026-04-05 12:00'` | `'2026-04-05T03:00:00Z'` |\n| `'2026-04-05 12:00:00'` | `'2026-04-05T03:00:00Z'` |\n| `'2026/04/05 12:00'` | `'2026-04-05T03:00:00Z'` |\n| `'2026-04-05T12:00'` | `'2026-04-05T03:00:00Z'` |\n| `'2026-04-05T03:00:00Z'` | `'2026-04-05T03:00:00Z'`\uFF08\u5909\u63DB\u306A\u3057\uFF09 |\n\n```sql\nINSERT INTO APP15 (\u4EF6\u540D, \u65E5\u6642) VALUES ('\u4F1A\u8B70', '2026-04-05 12:00')\n```\n\n#### DATE \u30D5\u30A3\u30FC\u30EB\u30C9\n\nkintone \u306F `YYYY-MM-DD` \u5F62\u5F0F\u3092\u8981\u6C42\u3057\u307E\u3059\u3002 \n\u30B9\u30E9\u30C3\u30B7\u30E5\u533A\u5207\u308A\u3092\u81EA\u52D5\u5909\u63DB\u3057\u307E\u3059\u3002\n\n| SQL \u5024\uFF08\u5165\u529B\uFF09 | kintone API \u9001\u4FE1\u5024 |\n|---|---|\n| `'2026/04/05'` | `'2026-04-05'` |\n| `'2026-04-05'` | `'2026-04-05'`\uFF08\u5909\u63DB\u306A\u3057\uFF09 |\n\n```sql\nINSERT INTO APP15 (\u4EF6\u540D, \u65E5\u4ED8) VALUES ('\u4F1A\u8B70', '2026/04/05')\n```\n\n> **\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3:** DATETIME \u306E\u5909\u63DB\u306F\u30D6\u30E9\u30A6\u30B6\u306E\u30ED\u30FC\u30AB\u30EB\u6642\u523B\u3092 UTC \u306B\u5909\u63DB\u3057\u307E\u3059\u3002 \n> \u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u52D5\u4F5C\u3059\u308B kintone \u74B0\u5883\u306E\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u8A2D\u5B9A\u3068\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044\u3002\n\n---", uri: "ksql://language-reference/15-insert" }, "16-update": { heading: "16. UPDATE", text: "## 16. UPDATE\n\n```sql\nUPDATE APP100\nSET \u30D5\u30A3\u30FC\u30EB\u30C91 = \u50241, \u30D5\u30A3\u30FC\u30EB\u30C92 = \u50242 -- \u5024: \u30EA\u30C6\u30E9\u30EB / \u7B97\u8853\u5F0F / CASE WHEN / (SELECT ...) / \u30D0\u30C3\u30C1\u5909\u6570 @\u540D\u524D\nWHERE \u6761\u4EF6\n```\n\n\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u306B\u306F\u5358\u9805 `-` / `+` \u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u4F8B: `SET \u91D1\u984D = -5`\u3001`SET \u91D1\u984D = +0.5`\uFF09\u3002\u5358\u9805 `+` \u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u76F4\u524D\u3060\u3051\u306B\u9650\u3089\u308C\u3001`+\u30D5\u30A3\u30FC\u30EB\u30C9` \u3084 `+(\u5F0F)`\u3001\u7B26\u53F7\u306E\u30CD\u30B9\u30C8\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u65E2\u5B58\u306E\u5358\u9805 `-` \u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3084\u62EC\u5F27\u4ED8\u304D\u7B97\u8853\u5F0F\u306B\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nUPDATE APP100\nSET \u512A\u5148\u5EA6 = '\u9AD8', \u671F\u9650\u65E5 = '2025-03-31'\nWHERE \u62C5\u5F53\u8005 = '\u7530\u4E2D' AND \u5B8C\u4E86\u30D5\u30E9\u30B0 = '0'\n```\n\n### \u5225\u30C6\u30FC\u30D6\u30EB\u306E\u5024\u3067\u66F4\u65B0\uFF08UPDATE ... FROM\uFF09\n\n`#temp` \u307E\u305F\u306F\u5225\u30A2\u30D7\u30EA\u306E\u884C\u3092\u3001\u66F4\u65B0\u5148\u306E `$id` \u307E\u305F\u306F\u696D\u52D9\u30AD\u30FC\u3068\u5BFE\u5FDC\u4ED8\u3051\u3066\u8EE2\u8A18\u3067\u304D\u307E\u3059\u3002\n\n```sql\nUPDATE APP100\nSET \u8EE2\u8A18\u5024 = s.\u5143\u5024,\n \u51E6\u7406\u72B6\u614B = '\u5B8C\u4E86',\n \u91D1\u984D = \u91D1\u984D * 1.1\nFROM APP200 AS s\nWHERE APP100.$id = s.\u8EE2\u8A18\u5148ID\n AND APP100.\u6709\u52B9 = '1';\n```\n\n\u6587\u5B57\u5217\uFF081\u884C\uFF09\u307E\u305F\u306F\u6570\u5024\u306E\u696D\u52D9\u30AD\u30FC\u3067\u3082\u7D50\u5408\u3067\u304D\u307E\u3059\u3002\u30BD\u30FC\u30B91\u884C\u306B\u5BFE\u3057\u3066\u540C\u3058\u30AD\u30FC\u306E\u66F4\u65B0\u5148\u304C\u8907\u6570\u3042\u308B\u5834\u5408\u306F\u5168\u884C\u3092\u66F4\u65B0\u3057\u307E\u3059\u3002\n\n```sql\nUPDATE APP4220\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u30A8\u30E9\u30FC',\n \u30A8\u30E9\u30FC\u5185\u5BB9 = e.\u30A8\u30E9\u30FC\u5185\u5BB9\nFROM APP200 AS e\nWHERE APP4220.\u9867\u5BA2\u30B3\u30FC\u30C9 = e.\u9867\u5BA2\u30B3\u30FC\u30C9;\n```\n\n\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u4F7F\u3046\u5834\u5408\u306F\u540C\u3058\u30D0\u30C3\u30C1\u5185\u3067\u5148\u306B\u5B9F\u4F53\u5316\u3057\u307E\u3059\u3002\n\n```sql\nCREATE TEMP TABLE #src AS\nSELECT \u8EE2\u8A18\u5148ID, \u30A8\u30E9\u30FC\u5185\u5BB9 FROM APP200 WHERE \u51E6\u7406\u72B6\u614B = '\u30A8\u30E9\u30FC';\n\nUPDATE APP100\nSET \u30A8\u30E9\u30FC\u5185\u5BB9 = e.\u30A8\u30E9\u30FC\u5185\u5BB9\nFROM #src AS e\nWHERE APP100.$id = e.\u8EE2\u8A18\u5148ID;\n```\n\n> `REGEXP_REPLACE` / `REGEXP_SUBSTR` \u306A\u3069\u306E\u6B63\u898F\u8868\u73FE\u7D50\u679C\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\u306E `UPDATE ... FROM` \u3067\u66F8\u304D\u623B\u3059\u5834\u5408\u3001\u30D6\u30E9\u30A6\u30B6\uFF0FNode \u3068\u305D\u306E\u7248\u306B\u3088\u308B\u7D50\u679C\u5DEE\u304C\u4FDD\u5B58\u30C7\u30FC\u30BF\u306E\u5DEE\u306B\u306A\u308A\u307E\u3059\u3002\u66F8\u304D\u623B\u3057\u306B\u4F7F\u3046\u5B9F\u884C\u9762\u3068\u7248\u3092\u56FA\u5B9A\u3057\u3001\u4E8B\u524D\u306B SELECT \u3067\u7D50\u679C\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n- \u30BD\u30FC\u30B9\u306F `#temp` \u307E\u305F\u306F `APP<n>[@profile]`\u3002CTE\u30FB\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u975E\u5BFE\u5FDC\u3067\u3059\u3002\n- \u7D50\u5408\u6761\u4EF6\u306F\u66F4\u65B0\u5148\u3068\u30BD\u30FC\u30B9\u5217\u306E\u5358\u4E00\u7B49\u5024\u30921\u3064\u3060\u3051\u6307\u5B9A\u3057\u307E\u3059\u3002\u66F4\u65B0\u5148\u30AD\u30FC\u306F `$id`\u3001\u6587\u5B57\u5217\uFF081\u884C\uFF09\u3001\u6570\u5024\u306B\u5BFE\u5FDC\u3057\u307E\u3059\u3002\n- `$id` \u306E\u30BD\u30FC\u30B9\u30AD\u30FC\u306F\u6B63\u306E\u5B89\u5168\u6574\u6570\u3067\u3059\u3002\u696D\u52D9\u30AD\u30FC\u306E\u30BD\u30FC\u30B9\u5024\u306F\u7A7A\u306B\u3067\u304D\u305A\u3001\u6B63\u898F\u5316\u5F8C\u306B\u91CD\u8907\u3059\u308B\u5834\u5408\u306F\u66F8\u304D\u8FBC\u307F\u524D\u306B\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n- \u6587\u5B57\u5217\u30AD\u30FC\u306F\u524D\u5F8C\u7A7A\u767D\u30FB\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u5909\u63DB\u305B\u305A\u5B8C\u5168\u4E00\u81F4\u3057\u307E\u3059\u3002\u6570\u5024\u30AD\u30FC\u306F\u6D6E\u52D5\u5C0F\u6570\u70B9\u3078\u5909\u63DB\u305B\u305A\u3001\u7B26\u53F7\u30FB\u5148\u982D\u30BC\u30ED\u30FB\u5C0F\u6570\u672B\u5C3E\u30BC\u30ED\u309210\u9032\u6587\u5B57\u5217\u3068\u3057\u3066\u6B63\u898F\u5316\u3057\u307E\u3059\u3002\n- kintone\u306E\u6587\u5B57\u5217\uFF081\u884C\uFF09`in` \u306F\u5148\u982D64\u6587\u5B57\u304C\u540C\u3058\u884C\u3092\u904E\u5270\u53D6\u5F97\u3059\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u53D6\u5F97\u5F8C\u306B\u5168\u6587\u5B57\u3067\u518D\u7167\u5408\u3059\u308B\u305F\u3081\u8AA4\u66F4\u65B0\u3057\u307E\u305B\u3093\u3002\u904E\u5270\u53D6\u5F97\u884C\u3082 `maxRecords` \u306E\u8AAD\u307F\u53D6\u308A\u4EF6\u6570\u3078\u542B\u307E\u308C\u307E\u3059\u3002\n- \u30BD\u30FC\u30B9\u5074\u306E\u540C\u3058\u6B63\u898F\u5316\u30AD\u30FC\u306F\u975E\u6C7A\u5B9A\u306B\u306A\u308B\u305F\u3081\u30A8\u30E9\u30FC\u3067\u3059\u3002\u66F4\u65B0\u5148\u5074\u306E\u540C\u3058\u30AD\u30FC\u306F\u6C7A\u5B9A\u7684\u306B\u5168\u884C\u66F4\u65B0\u3057\u307E\u3059\u3002\n- \u30BD\u30FC\u30B9 alias \u306F\u7D50\u5408\u6761\u4EF6\u3068 `SET alias.field` \u4EE5\u5916\u3067\u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002\n- `SOURCE_FIELD` \u306F\u30B9\u30AB\u30E9\u30FC\u578B\u306E\u307F\u5BFE\u5FDC\u3057\u307E\u3059\u3002\u914D\u5217\u30FB\u30E6\u30FC\u30B6\u30FC/\u7D44\u7E54/\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u30FB\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u306F\u975E\u5BFE\u5FDC\u3067\u3059\u3002\n- \u5B9F\u30A2\u30D7\u30EA\u30BD\u30FC\u30B9\u306F `maxRecords` \u8D85\u904E\u6642\u306B\u5E38\u306B\u30A8\u30E9\u30FC\u3068\u306A\u308A\u3001\u6697\u9ED9\u306E\u4E00\u90E8\u66F4\u65B0\u3092\u884C\u3044\u307E\u305B\u3093\u3002\n- `SET` \u3084\u30D5\u30A3\u30EB\u30BF\u304C\u53C2\u7167\u3059\u308B\u30BD\u30FC\u30B9\u5217\u304C\u30BD\u30FC\u30B9\u306B\u5B58\u5728\u3057\u306A\u3044\u5834\u5408\u3001\u66F8\u304D\u8FBC\u307F\u524D\u306B\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n- \u7D50\u5408\u7B49\u5024\u306F\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E `AND` \u9023\u9396\u306B\u7F6E\u304D\u307E\u3059\u3002`OR` / `NOT` \u306E\u914D\u4E0B\u306B\u7D50\u5408\u7B49\u5024\u3092\u66F8\u304F\u3068\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\uFF08\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u307F\u3092\u6761\u4EF6\u306B\u3057\u305F\u62EC\u5F27\u5185 `OR` \u306F\u4F7F\u3048\u307E\u3059\uFF09\u3002\n- **\u89AA\u30EC\u30B3\u30FC\u30C9\u306E `UPDATE` \u9650\u5B9A**\u3067\u3059\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u3059\u308B `UPDATE ... FROM` \u306F\u975E\u5BFE\u5FDC\u3067\u3059\u3002\n\n### SET \u3067\u306E\u6587\u5B57\u5217\u95A2\u6570\n\n\u89AA\u30EC\u30B3\u30FC\u30C9\u306E\u901A\u5E38\u306E `UPDATE` \u3067\u306F\u3001SET \u306E\u53F3\u8FBA\u306B\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u95A2\u6570\u306F\u66F4\u65B0\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u3054\u3068\u306B\u8A55\u4FA1\u3055\u308C\u3001SET \u5BFE\u8C61\u3068\u306F\u5225\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3082\u53C2\u7167\u3067\u304D\u307E\u3059\u3002\u623B\u308A\u5024\u306F\u95A2\u6570\u306E\u610F\u5473\u578B\u3092\u5F15\u304D\u7D99\u304E\u3001\u5024\u306E\u898B\u305F\u76EE\u304B\u3089\u6570\u5024\uFF0F\u6587\u5B57\u5217\u3092\u518D\u5224\u5B9A\u3057\u307E\u305B\u3093\u3002\n\n```sql\nUPDATE APP100\nSET \u6B63\u898F\u5316\u540D = UPPER(\u540D\u79F0),\n \u30B3\u30FC\u30C9 = LPAD(\u30B3\u30FC\u30C9, 5, '0')\nWHERE $id IN (1, 2, 3)\n```\n\n`UPPER` / `CONCAT` / `REPLACE` / `SUBSTRING` / `LEFT` / `RIGHT` / `TRANSLATE` / `REGEXP_LIKE` / `REGEXP_REPLACE` / `REGEXP_SUBSTR` \u306A\u3069\u306E\u6587\u5B57\u5217\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002`LPAD('7', 5, '0')` \u3068 `REGEXP_LIKE(...)` \u306E\u7D50\u679C\u306F\u3001\u898B\u305F\u76EE\u304C\u6570\u5024\u3067\u3082\u6587\u5B57\u5217\u306E\u307E\u307E\u66F8\u304D\u8FBC\u307E\u308C\u307E\u3059\u3002`VALIDATE ONLY` \u3068 `ON ERROR SKIP` \u306F\u3001\u95A2\u6570\u3092\u8A55\u4FA1\u3057\u305F\u5F8C\u306E\u5024\u3092\u691C\u8A3C\u3057\u307E\u3059\u3002\n\n\u3053\u308C\u306F\u66F8\u304D\u8FBC\u307F\u5019\u88DC\u306B\u5BFE\u3059\u308B\u7D44\u307F\u8FBC\u307F\u5236\u7D04\u691C\u8A3C\u3067\u3059\u3002CHECK \u306E\u8A55\u4FA1\u884C\u306F\u5225\u3067\u3001\u901A\u5E38 UPDATE \u306F\u66F4\u65B0\u524D\u306E\u65E2\u5B58\u5024\u3092\u53C2\u7167\u3057\u307E\u3059\u3002\u65B0\u5024\u3092\u691C\u67FB\u3059\u308B\u5834\u5408\u306F SET \u5F0F\u3092 CHECK \u306B\u518D\u63B2\u3057\u3066\u304F\u3060\u3055\u3044\u3002INSERT/UPSERT/UPDATE FROM \u3092\u542B\u3080\u6587\u7A2E\u5225\u306E\u8A55\u4FA1\u884C\u306F \xA717.3 \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n\u6B63\u898F\u8868\u73FE\u306E\u30DB\u30B9\u30C8\u5DEE\u306F\u4FDD\u5B58\u30C7\u30FC\u30BF\u306E\u5DEE\u306B\u306A\u308A\u5F97\u308B\u305F\u3081\u3001\u66F8\u304D\u8FBC\u307F\u306B\u4F7F\u3046\u5B9F\u884C\u9762\u3068\u7248\u3092\u56FA\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n\u6B21\u306E\u7BC4\u56F2\u306F\u975E\u5BFE\u5FDC\u3067\u3059\u3002\n\n- `SET n = LENGTH(s) * 1` \u306E\u3088\u3046\u306B\u7B97\u8853\u5F0F\u306E\u4E2D\u3078\u6587\u5B57\u5217\u95A2\u6570\u3092\u5165\u308C\u308B\u3053\u3068\n- `SET a = b` \u306E\u3088\u3046\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3060\u3051\u3092\u53F3\u8FBA\u3078\u6307\u5B9A\u3059\u308B\u3053\u3068\n- `UPDATE ... FROM` \u307E\u305F\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306E SET \u53F3\u8FBA\u3078\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u6307\u5B9A\u3059\u308B\u3053\u3068\uFF08`UPDATE ... FROM` \u306E `SET a = src.b` \u306F\u5F93\u6765\u3069\u304A\u308A\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF09\n\n\u307E\u305F\u3001\u89AA\u30EC\u30B3\u30FC\u30C9 DML \u306E WHERE \u53E5\u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002SET \u3067\u95A2\u6570\u3092\u4F7F\u3048\u308B\u3088\u3046\u306B\u306A\u3063\u3066\u3082\u3001`WHERE LEFT(\u90F5\u4FBF\u756A\u53F7, 3) = '100'` \u306E\u3088\u3046\u306A\u7D5E\u308A\u8FBC\u307F\u306F\u62D2\u5426\u3055\u308C\u307E\u3059\u3002\u4E0D\u6B63\u306A\u884C\u3060\u3051\u3092\u6B63\u898F\u5316\u3059\u308B\u5834\u5408\u306F\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3067\u5BFE\u8C61\u3068\u5909\u63DB\u5024\u3092\u4F5C\u308A\u3001`UPDATE ... FROM` \u3067\u66F8\u304D\u623B\u3057\u307E\u3059\u3002\n\n```sql\nCREATE TEMP TABLE #norm AS\nSELECT $id AS \u5BFE\u8C61id,\n REPLACE(REPLACE(\u96FB\u8A71\u756A\u53F7, '-', ''), ' ', '') AS \u6B63\u898F\u5316\nFROM APP100\nWHERE \u6761\u4EF6;\n\nUPDATE APP100\nSET \u96FB\u8A71\u756A\u53F7 = n.\u6B63\u898F\u5316\nFROM #norm AS n\nWHERE APP100.$id = n.\u5BFE\u8C61id;\n```\n\n### SET \u3067\u306E\u7B97\u8853\u5F0F\n\n```sql\nUPDATE APP100\nSET \u91D1\u984D = \u91D1\u984D * 1.1\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5BFE\u8C61'\n```\n\n### SET \u3067\u306E\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\n\nSET \u306E\u53F3\u8FBA\u306B `(SELECT ...)` \u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002 \n\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u5B9F\u884C\u524D\u306B 1 \u56DE\u3060\u3051\u8A55\u4FA1\u3055\u308C\u3001\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u5168\u4EF6\u306B\u540C\u3058\u5024\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002\n\n```sql\n-- \u540C\u30A2\u30D7\u30EA\u306E\u6700\u5927\u5024\u3067\u30BB\u30C3\u30C8\nUPDATE APP88 SET \u4E0A\u9650\u8CBB\u7528 = (SELECT MAX(\u5408\u8A08\u8CBB\u7528) FROM APP88)\nWHERE \u78BA\u5EA6 in ('80%', '100%')\n\n-- \u5225\u30A2\u30D7\u30EA\u306E\u5024\u3067\u30BB\u30C3\u30C8\nUPDATE APP89 SET \u57FA\u6E96\u91D1\u984D = (SELECT AVG(\u5408\u8A08\u8CBB\u7528) FROM APP88 WHERE \u78BA\u5EA6 in ('100%'))\nWHERE \u9867\u5BA2\u30E9\u30F3\u30AF in ('A')\n```\n\n\u8907\u6570\u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u6DF7\u5728\u6307\u5B9A\u3082\u53EF\u80FD\u3067\u3059\u3002\n\n```sql\nUPDATE APP88\nSET \u5408\u8A08\u8CBB\u7528 = \u5408\u8A08\u8CBB\u7528 * 1.1,\n \u4E0A\u9650\u8CBB\u7528 = (SELECT MAX(\u5408\u8A08\u8CBB\u7528) FROM APP88),\n \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u66F4\u65B0\u6E08\u307F'\nWHERE \u78BA\u5EA6 in ('80%', '100%')\n```\n\n**\u5236\u7D04:**\n\n| \u9805\u76EE | \u5185\u5BB9 |\n|---|---|\n| \u8FD4\u5374\u884C\u6570 | 1 \u884C 1 \u5217\u306E\u307F\uFF080 \u884C\u30FB2 \u884C\u4EE5\u4E0A\u306F\u30A8\u30E9\u30FC\u3002GROUP BY \u306A\u3057\u306E\u96C6\u8A08\u30B5\u30D6\u30AF\u30A8\u30EA\u306F 0 \u4EF6\u3067\u3082 1 \u884C\u3092\u8FD4\u3059\u305F\u3081\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u305B\u3093\u3002**\u623B\u308A\u5024\u306F\u95A2\u6570\u3054\u3068\u306B\u9055\u3044\u307E\u3059** \u2014 \xA78\uFF09 |\n| \u76F8\u95A2\u30B5\u30D6\u30AF\u30A8\u30EA | \u975E\u5BFE\u5FDC\uFF08\u5916\u5074\u30C6\u30FC\u30D6\u30EB\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u53C2\u7167\u4E0D\u53EF\uFF09 |\n| \u30B5\u30D6\u30AF\u30A8\u30EA\u5F8C\u306E\u7B97\u8853 | \u975E\u5BFE\u5FDC \u2014 \u7B97\u8853\u306F\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u884C\u3046 |\n\n```sql\n-- NG: \u30B5\u30D6\u30AF\u30A8\u30EA\u5F8C\u306E\u7B97\u8853\nUPDATE APP88 SET \u4E0A\u9650\u8CBB\u7528 = (SELECT AVG(\u5408\u8A08\u8CBB\u7528) FROM APP88) * 1.1 WHERE ...\n\n-- OK: \u7B97\u8853\u3092\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u5B9F\u884C\nUPDATE APP88 SET \u4E0A\u9650\u8CBB\u7528 = (SELECT AVG(\u5408\u8A08\u8CBB\u7528) * 1.1 FROM APP88) WHERE ...\n```\n\n---\n\n### SET \u3067\u306E CASE WHEN\n\nSET \u306E\u53F3\u8FBA\u306B CASE WHEN \u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nUPDATE APP100\nSET \u9867\u5BA2\u30E9\u30F3\u30AF = CASE\n WHEN \u91D1\u984D >= 100000 THEN 'S'\n WHEN \u91D1\u984D >= 10000 THEN 'A'\n ELSE 'B'\n END\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5BFE\u8C61'\n```\n\n\u7B97\u8853\u5F0F\u3068 CASE WHEN \u3092\u540C\u6642\u306B\u6307\u5B9A\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002\n\n```sql\nUPDATE APP100\nSET \u5408\u8A08 = \u5358\u4FA1 * \u6570\u91CF,\n \u30E9\u30F3\u30AF = CASE\n WHEN \u5358\u4FA1 >= 10000 THEN 'S'\n ELSE 'A'\n END\nWHERE \u62C5\u5F53\u8005 = '\u7530\u4E2D'\n```\n\n#### THEN / ELSE \u306B\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u3092\u6307\u5B9A\n\n\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u30FB\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u7B49\u306E\u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u5BFE\u3057\u3066\u3001\u6761\u4EF6\u306B\u5FDC\u3058\u305F\u5024\u3092\u66F8\u304D\u8FBC\u3081\u307E\u3059\u3002 \n\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u306F `getFields()` \u3067\u81EA\u52D5\u53D6\u5F97\u3055\u308C\u307E\u3059\u3002\n\n```sql\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E: \u512A\u5148\u5EA6\u306B\u5FDC\u3058\u3066\u62C5\u5F53\u8005\u3092\u5207\u308A\u66FF\u3048\nUPDATE APP89\nSET \u62C5\u5F53\u8005 = CASE\n WHEN \u512A\u5148\u5EA6 = '\u9AD8' THEN ['user1', 'user2']\n WHEN \u512A\u5148\u5EA6 = '\u4E2D' THEN 'user3'\n ELSE ''\n END\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u672A\u7740\u624B'\n\n-- IF() \u77ED\u7E2E\u8A18\u6CD5: \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u5206\u5C90\nUPDATE APP89\nSET \u30BF\u30B0 = IF(\u9867\u5BA2\u30E9\u30F3\u30AF = 'A', ['\u91CD\u8981', 'VIP'], '\u901A\u5E38')\nWHERE \u62C5\u5F53\u8005 = 'user1'\n\n-- \u6587\u5B57\u5217\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u6DF7\u5728\nUPDATE APP89\nSET \u9867\u5BA2\u30E9\u30F3\u30AF = CASE WHEN \u91D1\u984D >= 100000 THEN 'S' ELSE 'A' END,\n \u62C5\u5F53\u8005 = CASE WHEN \u91D1\u984D >= 100000 THEN ['user1', 'user2'] ELSE 'user3' END\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5BFE\u8C61'\n```\n\n> **WHERE \u53E5\u306F\u5FC5\u9808\u3067\u3059\u3002** \u5168\u4EF6\u66F4\u65B0\u3092\u9632\u3050\u305F\u3081\u3001WHERE \u306A\u3057\u306E UPDATE \u306F\u69CB\u6587\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002 \n> \u6CE8: CLI \u306B\u306F `--allow-without-where` \u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u73FE\u884C\u5B9F\u88C5\u3067\u306F UPDATE/DELETE \u306E\u6587\u6CD5\u4E0A WHERE \u304C\u5FC5\u9808\u3067\u3059\u3002\n\n> **\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0:** \u5B9F\u884C\u524D\u306B\u5BFE\u8C61\u4EF6\u6570\u3092\u8868\u793A\u3057\u3066\u78BA\u8A8D\u3092\u6C42\u3081\u307E\u3059\u3002 \n> \u30AD\u30E3\u30F3\u30BB\u30EB\u3059\u308B\u3068\u66F4\u65B0\u306F\u884C\u308F\u308C\u307E\u305B\u3093\u3002\n\n> **\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u30FB\u4F5C\u696D\u8005\u306F\u66F4\u65B0\u4E0D\u53EF\u3067\u3059\u3002** \n> \u3053\u308C\u3089\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306F kintone \u306E `/k/v1/records.json` \u3067\u306F\u5909\u66F4\u3067\u304D\u305A\u3001\u5C02\u7528\u306E `/k/v1/records/status.json` API \u304C\u5FC5\u8981\u3067\u3059\u3002 \n> kSQL \u306E UPDATE \u5BFE\u8C61\u5916\u3068\u306A\u308A\u307E\u3059\u3002\n\n### SET \u3067\u306E\u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\n\n\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u30FB\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u7B49\u306E\u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E SET \u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002 \n\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u306F\u5B9F\u884C\u524D\u306B `getFields()` \u3067\u81EA\u52D5\u53D6\u5F97\u3057\u307E\u3059\u3002\n\n#### \u30AB\u30F3\u30DE\u533A\u5207\u308A\u6587\u5B57\u5217\n\n```sql\n-- \u30E6\u30FC\u30B6\u30FC\u9078\u629E\u3092\u66F4\u65B0\nUPDATE APP89 SET \u62C5\u5F53\u8005 = 'user1,user2' WHERE \u9867\u5BA2\u540D = 'A\u793E'\n\n-- \u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u66F4\u65B0\nUPDATE APP89 SET \u30BF\u30B0 = '\u91CD\u8981,VIP' WHERE \u9867\u5BA2\u30E9\u30F3\u30AF = 'A'\n\n-- \u7A7A\u306B\u3059\u308B\nUPDATE APP89 SET \u62C5\u5F53\u8005 = '' WHERE \u9867\u5BA2\u540D = 'A\u793E'\n```\n\n#### \u914D\u5217\u30EA\u30C6\u30E9\u30EB `[...]`\n\n```sql\n-- \u30AB\u30F3\u30DE\u3092\u542B\u3080\u9078\u629E\u80A2\nUPDATE APP89 SET \u30BF\u30B0 = ['\u9078\u629E\u80A2A', '\u9078\u629E\u80A2B,C'] WHERE \u9867\u5BA2\u30E9\u30F3\u30AF = 'A'\n```\n\n#### \u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3068\u5909\u63DB\u30EB\u30FC\u30EB\n\n| \u30D5\u30A3\u30FC\u30EB\u30C9\u578B | SQL \u8A18\u8FF0\u4F8B | kintone API \u9001\u4FE1\u5024 |\n|---|---|---|\n| USER_SELECT / ORGANIZATION_SELECT / GROUP_SELECT | `'user1,user2'` | `[{\"code\":\"user1\"},{\"code\":\"user2\"}]` |\n| CHECK_BOX / MULTI_SELECT | `'\u9078\u629E\u80A2A,\u9078\u629E\u80A2B'` | `[\"\u9078\u629E\u80A2A\",\"\u9078\u629E\u80A2B\"]` |\n| \u7A7A\u306B\u3059\u308B\uFF08\u30E6\u30FC\u30B6\u30FC\u7CFB\u30FB\u914D\u5217\u7CFB\uFF09 | `''` | `[]` |\n| DATETIME | `'2026-04-05 12:00'` | `'2026-04-05T03:00:00Z'`\uFF08\u30ED\u30FC\u30AB\u30EB\u2192UTC\uFF09 |\n| DATE | `'2026/04/05'` | `'2026-04-05'` |\n| CREATOR / MODIFIER | \u2014 | **\u66F4\u65B0\u4E0D\u53EF**\uFF08kintone \u5236\u7D04\uFF09 |\n\n```sql\n-- \u65E5\u6642\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u66F4\u65B0\nUPDATE APP15 SET \u65E5\u6642 = '2026-04-05 12:00' WHERE $id = 9\nUPDATE APP15 SET \u65E5\u4ED8 = '2026/04/05' WHERE $id = 9\n```\n\n---", uri: "ksql://language-reference/16-update" }, "17-upsert": { heading: "17. UPSERT", text: "## 17. UPSERT\n\n\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u5024\u3067\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3092\u691C\u7D22\u3057\u3001\u4E00\u81F4\u3059\u308C\u3070\u66F4\u65B0\u30FB\u306A\u3051\u308C\u3070\u65B0\u898F\u767B\u9332\u3057\u307E\u3059\u3002\n\n```sql\nUPSERT INTO \u30C6\u30FC\u30D6\u30EB\u540D (\u30D5\u30A3\u30FC\u30EB\u30C91, \u30D5\u30A3\u30FC\u30EB\u30C92, ...)\nVALUES (\u50241, \u50242, ...)\nON DUPLICATE (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9)\n```\n\n### VALUES \u306B\u3088\u308B UPSERT\n\n```sql\nUPSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, \u91D1\u984D)\nVALUES ('C001', '\u7530\u4E2D\u5546\u5E97', 50000)\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\n```\n\n\u8907\u6570\u30EC\u30B3\u30FC\u30C9\u306E\u4E00\u62EC UPSERT:\n\n```sql\nUPSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, \u91D1\u984D)\nVALUES ('C001', '\u7530\u4E2D\u5546\u5E97', 50000),\n ('C002', '\u9234\u6728\u5546\u4E8B', 80000)\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\n```\n\n\u8907\u5408\u30AD\u30FC:\n\n```sql\nUPSERT INTO APP100 (\u5E74\u5EA6, \u6708, \u62C5\u5F53\u8005, \u58F2\u4E0A)\nVALUES ('2025', '4', '\u7530\u4E2D', 150000)\nON DUPLICATE (\u5E74\u5EA6, \u6708, \u62C5\u5F53\u8005)\n```\n\n### SELECT \u306B\u3088\u308B UPSERT\n\n\u5225\u30A2\u30D7\u30EA\u306E\u30C7\u30FC\u30BF\u3092\u30BD\u30FC\u30B9\u306B\u3057\u3066 UPSERT \u3057\u307E\u3059\u3002\n\n```sql\nUPSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, \u5408\u8A08\u91D1\u984D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, SUM(\u91D1\u984D)\nFROM APP200\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u78BA\u5B9A'\nGROUP BY \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\n```\n\n- SELECT \u306E\u5217\u6570\u3068 UPSERT \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\u304C\u4E00\u81F4\u3057\u306A\u3044\u5834\u5408\u306F\u30A8\u30E9\u30FC\n- SELECT \u5074\u306F SIMPLE / FULL_SCAN \u3092\u81EA\u52D5\u5224\u5B9A\uFF08JOIN\u30FBGROUP BY\u30FB\u95A2\u6570\u3082\u4F7F\u7528\u53EF\uFF09\n- USER_SELECT / CHECK_BOX \u7B49\u306E\u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3001\u8EE2\u9001\u5143\u30FB\u8EE2\u9001\u5148\u304C\u540C\u578B\u306E\u5834\u5408\u306B\u81EA\u52D5\u5909\u63DB\n\n### \u8907\u5408\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u542B\u3080 UPSERT\n\nINSERT \u3068\u540C\u69D8\u306B\u3001\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u30FB\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u7B49\u3078\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u6587\u5B57\u5217\u30FB\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u6307\u5B9A\u304C\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- VALUES: \u30AB\u30F3\u30DE\u533A\u5207\u308A\u3067\u30E6\u30FC\u30B6\u30FC\u9078\u629E\nUPSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005, \u30BF\u30B0)\nVALUES ('A\u793E', 'user1,user2', '\u91CD\u8981,VIP')\nON DUPLICATE (\u9867\u5BA2\u540D)\n\n-- SELECT: \u540C\u578B\u30D5\u30A3\u30FC\u30EB\u30C9\u9593\u306F\u81EA\u52D5\u8EE2\u9001\nUPSERT INTO APP89 (\u9867\u5BA2\u540D, \u62C5\u5F53\u8005)\nSELECT \u9867\u5BA2\u540D, \u62C5\u5F53\u8005 FROM APP88\nON DUPLICATE (\u9867\u5BA2\u540D)\n```\n\n### \u7D50\u679C\u8868\u793A\n\n| \u9805\u76EE | \u5185\u5BB9 |\n|------|------|\n| \u767B\u9332\u4EF6\u6570 | \u65B0\u898F\u767B\u9332\u3055\u308C\u305F\u30EC\u30B3\u30FC\u30C9\u6570 |\n| \u66F4\u65B0\u4EF6\u6570 | \u66F4\u65B0\u3055\u308C\u305F\u30EC\u30B3\u30FC\u30C9\u6570 |\n\n> \u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u4E00\u81F4\u3059\u308B\u30EC\u30B3\u30FC\u30C9\u304C\u8907\u6570\u3042\u308B\u5834\u5408\u306F\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n\n---\n\n## 17.1 VALIDATE ONLY\uFF08\u66F8\u304D\u8FBC\u307F\u524D\u691C\u8A3C\uFF09\n\n`INSERT` / `UPSERT` / `UPDATE` \u306E\u672B\u5C3E\u306B `VALIDATE ONLY` \u3092\u4ED8\u3051\u308B\u3068\u3001\u5019\u88DC\u884C\u3092\u5168\u4EF6\u691C\u8A3C\u3057\u3001kintone \u306E POST / PUT / DELETE API\u3092\u547C\u3070\u305A\u306B\u30A8\u30E9\u30FC\u4E00\u89A7\u3092\u8FD4\u3057\u307E\u3059\u3002\u89AA\u30EC\u30B3\u30FC\u30C9DML\u306E\u307F\u5BFE\u5FDC\u3057\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EBDML\u3001`DELETE`\u3001`REORDER`\u306B\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\n\n```sql\nINSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nVALUES ('C001', 100), ('', -1)\nVALIDATE ONLY;\n\nUPSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP200\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\nVALIDATE ONLY;\n\nUPDATE APP100 SET \u91D1\u984D = \u91D1\u984D * 1.1\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u6709\u52B9'\nVALIDATE ONLY;\n```\n\n\u691C\u8A3C\u5BFE\u8C61\u306F\u5FC5\u9808\u3001\u6570\u5024\u30FB\u65E5\u4ED8\u30FB\u6642\u523B\u30FB\u65E5\u6642\u3001\u6570\u5024\u7BC4\u56F2\u3001\u6587\u5B57\u5217\u9577\u3001\u9078\u629E\u80A2\u3001UPSERT\u30AD\u30FC\u306E\u7A7A\u5024\u30FB\u30BD\u30FC\u30B9\u5185\u91CD\u8907\u3067\u3059\uFF08`UPDATE`/`UPSERT` update \u5206\u5C90\u306F\u5F8C\u8FF0\u306E post-image \u306B\u3088\u308A\u30EC\u30B3\u30FC\u30C9\u5168\u4F53\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u884C\u3082\u5BFE\u8C61\uFF09\u30021\u884C\u306B\u8907\u6570\u306E\u554F\u984C\u304C\u3042\u308C\u3070\u30A8\u30E9\u30FC\u3082\u8907\u6570\u884C\u306B\u306A\u308A\u307E\u3059\u3002\u7D50\u679C\u306B\u306F `validatedRows` / `validRows` / `invalidRows` / `errorCount` \u3068\u3001\u5165\u529B\u30DA\u30A4\u30ED\u30FC\u30C9\u5217\u304A\u3088\u3073 `$err_*` \u8A3A\u65AD\u5217\uFF08`$err_statement` / `$err_operation` / `$err_row` / `$err_field` / `$err_code` / `$err_message` / `$err_value` / `$err_subtable` / `$err_subrow` / `$err_subrow_id` \u306E10\u5217\u3002v3.9.0 \u4EE5\u964D\uFF09\u304C\u542B\u307E\u308C\u307E\u3059\u3002\u5B50\u30BB\u30EB\u4EE5\u5916\u306E\u9055\u53CD\u3067\u306F\u672B\u5C3E4\u5217\uFF08`$err_value` / `$err_subtable` / `$err_subrow` / `$err_subrow_id`\uFF09\u306F\u7A7A\u6587\u5B57\u3067\u3059\u3002\n\n\u8907\u6587\u30D0\u30C3\u30C1\u3067\u306F `VALIDATE ONLY INTO #err` \u3068\u3059\u308B\u3068\u3001\u540C\u3058\u30A8\u30E9\u30FC\u884C\u3092\u5F8C\u7D9A\u6587\u304B\u3089\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3068\u3057\u3066\u53C2\u7167\u3067\u304D\u307E\u3059\u3002\u540C\u540D `#err` \u306F\u5165\u529B\u5217\u69CB\u6210\u304C\u540C\u3058\u5834\u5408\u3060\u3051\u8FFD\u8A18\u3067\u304D\u3001\u7570\u306A\u308Bschema\u307E\u305F\u306F `tempTableMaxRows` \u8D85\u904E\u306F\u65E2\u5B58\u884C\u3092\u5909\u66F4\u305B\u305A\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\n\n```sql\nINSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D FROM #source\nVALIDATE ONLY INTO #err;\nSELECT * FROM #err;\n```\n\n- `VALIDATE ONLY` \u306Fread-only\u6271\u3044\u3067\u3001MCP\u3067\u306F `ksql_query`\u3001CLI\u3067\u306F `--allow-dml`\u306A\u3057\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u306F\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\u306A\u3057\u3067\u5B9F\u884C\u3067\u304D\u307E\u3059\n- \u66F8\u304D\u8FBC\u307F\u5148\u306B NUMBER \u5217\u304C\u3042\u308B\u5834\u5408\u3001\u901A\u5E38 DML \u3068\u540C\u3058\u304F\u904B\u7528\u74B0\u5883\u306E `app/settings.json` \u304B\u3089 `numberPrecision` \u3092\u53D6\u5F97\u3057\u3001**\u6574\u6570\u90E8**\u304C `digits - decimalPlaces` \u6841\u3092\u8D85\u3048\u308B\u5024\u3092\u66F8\u304D\u8FBC\u307F\u524D\u306B\u691C\u51FA\u3057\u307E\u3059\uFF08`ERR_NUMBER_INTEGER_DIGITS`\uFF09\u3002kintone \u3082\u6574\u6570\u8D85\u904E\u306F\u5168\u9762\u3067 `CB_VA01` \u62D2\u5426\u3059\u308B\u305F\u3081\u3001\u3053\u308C\u306F\u305D\u306E\u5224\u65AD\u306E\u524D\u5012\u3057\u3067\u3059\n- **\u5C0F\u6570\u90E8\u306F kSQL \u3067\u306F\u691C\u8A3C\u3057\u307E\u305B\u3093**\u3002`decimalPlaces` \u3092\u8D85\u3048\u308B\u5C0F\u6570\u306F\u305D\u306E\u307E\u307E kintone \u3078\u6E21\u3057\u3001kintone \u304C `roundingMode` \u3067\u81EA\u52D5\u4E38\u3081\u3057\u307E\u3059\uFF08REST API\u30FBCSV \u8AAD\u307F\u8FBC\u307F\u30FB\u7DE8\u96C6\u753B\u9762\u30FB\u8A08\u7B97\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u540C\u3058\u6319\u52D5\uFF09\u3002`1/3` \u306A\u3069\u306E\u7B97\u8853\u7D50\u679C\u306B `ROUND` \u3092\u5F37\u5236\u3057\u307E\u305B\u3093\n- \u4E00\u822C\u8A2D\u5B9A\u306F\u540C\u3058\u5B9F\u884C\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30A2\u30D7\u30EA\u3054\u3068\u306B\u6700\u59271\u56DE\u53D6\u5F97\u3057\u307E\u3059\u3002\u53D6\u5F97\u5931\u6557\u3001\u4E0D\u6B63\u30EC\u30B9\u30DD\u30F3\u30B9\u3001\u672A\u77E5\u306E\u4E38\u3081\u30E2\u30FC\u30C9\u3067\u306F\u65E2\u5B9A\u5024\u3092\u4EEE\u5B9A\u305B\u305A\u6587\u5168\u4F53\u3092fail-closed\u3057\u3001`ON ERROR SKIP` \u306E\u884C\u30A8\u30E9\u30FC\u306B\u306F\u5909\u63DB\u3057\u307E\u305B\u3093\n- \u65E2\u5B58 `ROUND` \u306E\u610F\u5473\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\u7B97\u8853\u3001\u96C6\u8A08\u3001\u6570\u5024\u95A2\u6570\u3001CASE\u3001CALC\u7531\u6765\u5024\u306E\u8A08\u7B97\u306F\u5F15\u304D\u7D9A\u304Dbinary64\u3067\u3059\n- \u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u304C\u5FC5\u8981\u306A\u305F\u3081\u3001`onLimit=truncate` / CLI `--on-limit truncate` / \u30D7\u30E9\u30B0\u30A4\u30F3\u306Etruncate\u8A2D\u5B9A\u306F\u7121\u8996\u3055\u308C\u3001\u5E38\u306Berror\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\n- \u30ED\u30FC\u30AB\u30EB\u691C\u8A3C\u306F\u901A\u5E38\u306E\u66F8\u304D\u8FBC\u307F\u7D4C\u8DEF\u3088\u308A\u53B3\u5BC6\u306A\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u691C\u8A3C\u30A8\u30E9\u30FC\u306FkSQL\u304C\u691C\u51FA\u3057\u305FTier 0\u554F\u984C\u3067\u3042\u308A\u3001\u540C\u3058\u5024\u3092kintone API\u304C\u5FC5\u305A\u62D2\u5426\u3059\u308B\u3068\u3044\u3046\u4E88\u6E2C\u3067\u306F\u3042\u308A\u307E\u305B\u3093\n- \u691C\u8A3C\u901A\u904E\u306F\u66F8\u304D\u8FBC\u307F\u6210\u529F\u3092\u4FDD\u8A3C\u3057\u307E\u305B\u3093\u3002\u6A29\u9650\u3001\u7AF6\u5408\u3001\u30E6\u30FC\u30B6\u30FC\u5B9F\u5728\u6027\u3001\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3068\u306E\u4E00\u610F\u5236\u7D04\u885D\u7A81\u306A\u3069API\u5B9F\u884C\u6642\u306E\u554F\u984C\u306F\u5BFE\u8C61\u5916\u3067\u3059\n- **`UPDATE` / `UPSERT`\uFF08update \u5206\u5C90\uFF09\u306E `VALIDATE ONLY` \u306F\u3001SET \u5BFE\u8C61\u5217\u3060\u3051\u3067\u306A\u304F\u3001\u66F4\u65B0\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u306E\u53D6\u5F97\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u306B SET \u3092\u9069\u7528\u3057\u305F\u300Cpost-image\uFF08\u30EC\u30B3\u30FC\u30C9\u5168\u4F53\uFF09\u300D\u3092\u691C\u8A3C\u3057\u307E\u3059\uFF08v3.9.0\u30FBB43\uFF09\u3002** \u3053\u308C\u306B\u3088\u308A\u3001SET \u5BFE\u8C61\u5916\u306E\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u9805\u76EE\u3084**\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u884C\u306B\u6B8B\u308B\u65E2\u5B58\u9055\u53CD**\uFF08\u5FC5\u9808\u30FB\u6587\u5B57\u5217\u9577\u30FB\u6570\u5024\u7BC4\u56F2\u30FB\u9078\u629E\u80A2\u30FB\u6570\u5024\u7CBE\u5EA6\uFF09\u3082\u66F8\u304D\u8FBC\u307F\u524D\u306B\u691C\u51FA\u3057\u307E\u3059\u3002kintone \u306F PUT \u6642\u306B\u30EC\u30B3\u30FC\u30C9\u5168\u4F53\u3092\u518D\u691C\u8A3C\u3059\u308B\u305F\u3081\u3001\u3053\u306E\u691C\u8A3C\u306F\u672C\u5B9F\u884C\u6642\u306E `CB_VA01` \u3092\u524D\u5012\u3057\u3067\u6355\u6349\u3057\u307E\u3059\u3002\u5B50\u9055\u53CD\u306F `$err_subtable`\uFF08\u30C6\u30FC\u30D6\u30EB\u30B3\u30FC\u30C9\uFF09\u30FB`$err_subrow`\uFF081-based \u884C\u5E8F\u6570\uFF09\u30FB`$err_subrow_id`\uFF08\u6C38\u7D9A\u884C ID\uFF1D\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E `_rid`\uFF09\u3067\u4F4D\u7F6E\u3092\u793A\u3057\u307E\u3059\u3002\u30D7\u30EC\u30FC\u30F3\u306A `UPDATE`/`UPSERT` \u5B9F\u884C\uFF08`VALIDATE ONLY`/`ON ERROR SKIP` \u306A\u3057\uFF09\u306E\u53D6\u5F97\u6319\u52D5\u306F\u5909\u308F\u308A\u307E\u305B\u3093\n- \u3053\u306E\u691C\u8A3C\u306E\u305F\u3081\u3001`UPDATE`/`UPSERT` \u306E `VALIDATE ONLY` \u306F\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u306E\u5B8C\u5168\u306A\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\uFF08`$id`\uFF0B\u691C\u8A3C\u5BFE\u8C61\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\uFF0B\u5168\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\uFF09\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002`UPDATE` \u306F\u65E2\u5B58 GET \u306E\u53D6\u5F97\u5217\u3092\u62E1\u5F35\u3057\u3001`UPSERT` \u306F\u7167\u5408\u5F8C\u306B\u66F4\u65B0\u5BFE\u8C61 ID \u3092100\u4EF6\u305A\u3064\u307E\u3068\u3081\u3066\u8FFD\u52A0\u53D6\u5F97\u3057\u307E\u3059\uFF08\u5BFE\u8C611\u4EF6\u3054\u3068\u306E\u8FFD\u52A0 GET \u306F\u884C\u3044\u307E\u305B\u3093\uFF09\n\n## 17.2 ON ERROR SKIP\uFF08\u4E8B\u524D\u691C\u8A3C\u30A8\u30E9\u30FC\u884C\u306E\u9694\u96E2\uFF09\n\n\u8907\u6587\u30D0\u30C3\u30C1\u5185\u306E\u89AA\u30EC\u30B3\u30FC\u30C9 `INSERT` / `UPSERT` / `UPDATE` \u306B `ON ERROR SKIP INTO #err` \u3092\u4ED8\u3051\u308B\u3068\u3001`VALIDATE ONLY` \u3068\u540C\u3058Tier 0\u691C\u8A3C\u3067\u4E0D\u6B63\u306B\u306A\u3063\u305F\u884C\u3092 `#err` \u3078\u9694\u96E2\u3057\u3001\u5408\u683C\u884C\u3060\u3051\u3092\u66F8\u304D\u8FBC\u307F\u307E\u3059\u3002\u66F8\u304D\u8FBC\u307F\u3092\u884C\u3046\u305F\u3081\u3001MCP\u3067\u306F `ksql_mutate` \u3068DML\u627F\u8A8D\u3001CLI\u3067\u306F `--allow-dml` \u304C\u5FC5\u8981\u3067\u3059\u3002**`UPDATE` / `UPSERT`\uFF08update \u5206\u5C90\uFF09\u3067\u306F \xA717.1 \u306E post-image \u691C\u8A3C\u306B\u3088\u308A\u3001\u66F4\u65B0\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u3092\u542B\u3080\u65E2\u5B58\u9055\u53CD\u3092\u6301\u3064\u89AA\u3082\u9694\u96E2\u5BFE\u8C61\u306B\u306A\u308A\u307E\u3059\uFF08v3.9.0\u30FBB43\uFF09\u3002** \u3053\u308C\u306B\u3088\u308A\u3001\u65E2\u5B58\u9055\u53CD\u30EC\u30B3\u30FC\u30C91\u4EF6\u304C\u540C\u4E00\u30C1\u30E3\u30F3\u30AF\u306E\u5408\u683C\u884C\u307E\u3067\u5DFB\u304D\u6DFB\u3048\u306B\u3057\u3066 `CB_VA01` \u3067\u5931\u6557\u3059\u308B\u4E8B\u614B\u3092\u9632\u304E\u3001\u5408\u683C\u89AA\u3060\u3051\u3092\u78BA\u5B9F\u306B\u66F8\u304D\u8FBC\u307F\u307E\u3059\u3002\n\n```sql\nINSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D FROM #source\nON ERROR SKIP INTO #err REJECT LIMIT 100;\n\nSELECT * FROM #err;\n```\n\n- `REJECT LIMIT n` \u306F\u9694\u96E2\u3055\u308C\u305F\u30E6\u30CB\u30FC\u30AF\u5165\u529B\u884C\u6570\u3078\u9069\u7528\u3057\u307E\u3059\u3002n\u884C\u307E\u3067\u306F\u8A31\u5BB9\u3057\u3001n+1\u884C\u4EE5\u4E0A\u306A\u3089\u5168\u5019\u88DC\u306E\u691C\u8A3C\u5B8C\u4E86\u5F8C\u306B\u66F8\u304D\u8FBC\u307F\u30BC\u30ED\u3067\u505C\u6B62\u3057\u307E\u3059\u3002\u7701\u7565\u6642\u306F\u7121\u5236\u9650\u3067\u3059\n- \u8D85\u904E\u6587\u306F `RejectLimitExceededError` \u306B\u306A\u308A\u307E\u3059\u304C\u3001\u5168\u8A3A\u65AD\u884C\u306F\u5FDC\u7B54\u306E\u7D50\u679C\u30BB\u30C3\u30C8\u306B\u542B\u307E\u308C\u307E\u3059\u3002\u5F8C\u7D9A\u6587\u306Ffail-fast\u3067skip\u3055\u308C\u308B\u305F\u3081\u3001\u8D85\u904E\u6642\u306F\u5F8C\u7D9ASQL\u304B\u3089 `#err` \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\n- `ON ERROR SKIP` \u306F `INTO #err` \u5FC5\u9808\u306E\u30D0\u30C3\u30C1\u5C02\u7528\u69CB\u6587\u3067\u3059\u3002\u5358\u6587\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n- \u7D50\u679C\u306B\u306F\u65E2\u5B58\u306Eoperation\u5225\u4EF6\u6570\u306B\u52A0\u3048\u3066 `affectedRows` / `skippedRows` / `rejectLimit` / `errTable` \u304C\u542B\u307E\u308C\u307E\u3059\n- `dmlMaxRows` \u3068 `dmlTotalMaxRows` \u306F\u9694\u96E2\u5F8C\u306B\u5B9F\u969B\u306B\u66F8\u304D\u8FBC\u3080\u884C\u6570\u3078\u9069\u7528\u3055\u308C\u307E\u3059\u3002\u30BD\u30FC\u30B9\u53D6\u5F97\u306F\u901A\u5E38\u306E `maxRecords` \u3067\u5236\u5FA1\u3055\u308C\u307E\u3059\n- \u7D44\u307F\u8FBC\u307F\u5236\u7D04\uFF08\u5FC5\u9808\u30FB\u6587\u5B57\u5217\u9577\u30FB\u6570\u5024\u7BC4\u56F2\u30FB\u9078\u629E\u80A2\u30FB\u6570\u5024\u7CBE\u5EA6\uFF09\u306E\u65E2\u5B58\u9055\u53CD\u306F\u3001update \u5206\u5C90\u3067\u306F post-image \u691C\u8A3C\u3067\u4E8B\u524D\u306B\u691C\u51FA\u30FB\u9694\u96E2\u3055\u308C\u307E\u3059\uFF08v3.9.0\u30FBB43\uFF09\u3002\u4E00\u65B9\u3001kintone API\u304C\u66F8\u304D\u8FBC\u307F\u6642\u306B\u8FD4\u3059\u6A29\u9650\u30FB\u7AF6\u5408\u30FB\u4E00\u610F\u5236\u7D04\u30FB\u30E6\u30FC\u30B6\u30FC\u5B9F\u5728\u6027\u306A\u3069\u306E\u5B9F\u884C\u6642\u30A8\u30E9\u30FC\u306F\u9694\u96E2\u305B\u305A\u3001\u5F93\u6765\u3069\u304A\u308Afail-fast\u3067\u3059\n\n---\n\n## 17.3 CHECK\uFF08\u30AB\u30B9\u30BF\u30E0\u30C1\u30A7\u30C3\u30AF\u30FBv3.4.0\uFF09\n\n`INSERT` / `UPSERT` / `UPDATE` \u306E\u30BD\u30FC\u30B9\u306E\u5F8C\u3001\u51E6\u5206\u7BC0\uFF08`VALIDATE ONLY` / `ON ERROR SKIP`\uFF09\u306E\u524D\u306B `CHECK` \u30D6\u30ED\u30C3\u30AF\u3092\u7F6E\u304F\u3068\u3001\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u306E\u884C\u30EC\u30D9\u30EB\u696D\u52D9\u30EB\u30FC\u30EB\u3067\u4E0D\u6B63\u884C\u3092 `#err`\uFF08`$err_code = ERR_CHECK`\uFF09\u3078\u9694\u96E2\u3067\u304D\u307E\u3059\u3002\n\n```sql\nINSERT INTO APP123 (\u6570\u50241, \u6570\u50242, \u6570\u50243)\nSELECT \u6570\u50241, \u6570\u50242, \u6570\u50243 FROM APP999\nCHECK\n WHEN \u6570\u50241 IS NULL THEN '\u6570\u50241 \u672A\u5165\u529B\u30A8\u30E9\u30FC'\n WHEN \u6570\u50241 > \u6570\u50242 THEN '\u6570\u50241=' || \u6570\u50241 || ' \u304C \u6570\u50242=' || \u6570\u50242 || ' \u3092\u8D85\u904E'\nCHECK\n WHEN \u6570\u50243 > 100 THEN CONCAT('\u6570\u50243 \u304C\u4E0A\u9650\u8D85\u904E: ', \u6570\u50243)\nON ERROR SKIP INTO #err;\n```\n\n- **\u30B0\u30EB\u30FC\u30D7\uFF1D\u5148\u52DD\u3061**\uFF1A1 \u3064\u306E `CHECK` \u30D6\u30ED\u30C3\u30AF\u5185\u306F\u4E0A\u304B\u3089\u8A55\u4FA1\u3057\u3001\u6700\u521D\u306B\u8A72\u5F53\u3057\u305F `WHEN` \u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3060\u3051\u3092 1 \u4EF6\u51FA\u3057\u307E\u3059\u3002`CHECK` \u30D6\u30ED\u30C3\u30AF\u3092\u8907\u6570\u4E26\u3079\u308B\u3068\u4E92\u3044\u306B\u72EC\u7ACB\u306B\u8A55\u4FA1\u3057\u307E\u3059\uFF08\u95A2\u9023\u30C1\u30A7\u30C3\u30AF\u306F\u540C\u3058\u30D6\u30ED\u30C3\u30AF\uFF1D\u6700\u521D\u306E\u30A8\u30E9\u30FC\u306E\u307F\u3001\u7121\u95A2\u4FC2\u30C1\u30A7\u30C3\u30AF\u306F\u5225\u30D6\u30ED\u30C3\u30AF\uFF1D\u305D\u308C\u305E\u308C\uFF09\u3002\n- **\u53C2\u7167\u306F\u8AAD\u307F\u53D6\u308A\u884C**\uFF1A\n - `INSERT` / `UPSERT \u2026 SELECT` \u306F\u5143 SELECT \u306E\u51FA\u529B\u5217\uFF08\u5225\u540D\u53EF\uFF09\u3002**\u5148\u982D N \u5217\u304C\u66F8\u304D\u8FBC\u307F\u5BFE\u8C61\u3001\u6B8B\u308A\u306E\u672B\u5C3E\u5217\u306F CHECK \u5C02\u7528**\uFF08`CHECK` \u3092\u4ED8\u3051\u308B\u3068\u304D SELECT \u51FA\u529B\u540D\u306F\u4E00\u610F\u306B\u3059\u308B\uFF09\u3002\n - `\u2026 VALUES` \u306F\u633F\u5165\u5217\u3002\n - `UPDATE` \u306F**\u66F4\u65B0\u524D\u306E\u65E2\u5B58\u5024**\uFF08\u66F8\u304D\u8FBC\u3080\u65B0\u5024\u3092\u691C\u67FB\u3057\u305F\u3044\u3068\u304D\u306F SET \u5F0F\u3092\u66F8\u304F\uFF1A`SET \u6570\u91CF = \u6570\u91CF - \u51FA\u5EAB\u6570` \u306B\u5BFE\u3057 `WHEN \u6570\u91CF - \u51FA\u5EAB\u6570 < 0`\uFF09\u3002\n - `UPDATE \u2026 FROM` \u306F `APP<n>.\u5217`\uFF1D\u66F4\u65B0\u524D\u30BF\u30FC\u30B2\u30C3\u30C8\u30FB`<\u30BD\u30FC\u30B9\u5225\u540D>.\u5217`\uFF1D\u30BD\u30FC\u30B9\u65B0\u5024\u3067\u8B58\u5225\uFF08`WHEN s.\u91D1\u984D < APP100.\u91D1\u984D THEN '\u6E1B\u984D\u4E0D\u53EF'`\uFF09\u3002\u30BD\u30FC\u30B9\u5217\u3092\u4FEE\u98FE\u306A\u3057\u3067\u53C2\u7167\u3059\u308B\u3068\u30A8\u30E9\u30FC\u3002\n- \u30E1\u30C3\u30BB\u30FC\u30B8\u306F `||` / `CONCAT` \u3067\u30D5\u30A3\u30FC\u30EB\u30C9\u3084 `@var` \u3092\u88DC\u9593\u3067\u304D\u307E\u3059\u3002**\u6761\u4EF6\uFF08`WHEN`\uFF09\u3067\u306F `||` \u306F\u4F7F\u3048\u307E\u305B\u3093**\uFF08`CONCAT` \u3092\u4F7F\u3046\uFF09\u3002\n- \u51E6\u5206\uFF1A`ON ERROR SKIP INTO #err` \u306F\u8A72\u5F53\u884C\u3092\u9694\u96E2\u3057\u3066\u6B8B\u308A\u3092\u66F8\u304D\u8FBC\u307F\u3001`VALIDATE ONLY` \u306F\u66F8\u304B\u305A\u306B\u5831\u544A\u3001\u51E6\u5206\u7BC0\u306A\u3057\u306E\u7D20 DML \u306F\u66F8\u304D\u8FBC\u307F\u524D\u306B\u505C\u6B62\u3057\u307E\u3059\u3002\u7D44\u307F\u8FBC\u307F\u691C\u8A3C\uFF08\u5FC5\u9808\u30FB\u578B\u30FB\u7BC4\u56F2\u30FB\u6841\uFF09\u3068\u306F\u72EC\u7ACB\u306B\u8A55\u4FA1\u3057\u3001`#err` \u306F\u7D44\u307F\u8FBC\u307F\u30A8\u30E9\u30FC \u2192 \u30AB\u30B9\u30BF\u30E0\u30A8\u30E9\u30FC\u306E\u9806\u3067\u3059\u3002\u6BD4\u8F03\u975E\u5BFE\u5FDC\u306E\u8907\u5408\u578B\u3092\u6761\u4EF6\u306B\u4F7F\u3046\u7B49\u306E\u8A55\u4FA1\u4E0D\u80FD\u306F\u6587\u5168\u4F53\u30A8\u30E9\u30FC\uFF08\u884C\u9694\u96E2\u3057\u307E\u305B\u3093\uFF09\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DML \u306B\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`CHECK` \u306F `CHECK WHEN` \u306E\u4E26\u3073\u306E\u3068\u304D\u3060\u3051\u30AD\u30FC\u30EF\u30FC\u30C9\u306B\u306A\u308A\u307E\u3059\uFF08\u540C\u540D\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\uFF09\u3002\n\n## 17.4 VALIDATE\uFF08\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u306E\u8AAD\u307F\u53D6\u308A\u76E3\u67FB\uFF09\n\n\u5148\u982D\u306E `VALIDATE` \u6587\u306F\u3001\u4FDD\u5B58\u6E08\u307F\u30EC\u30B3\u30FC\u30C9\u3078\u30D5\u30A9\u30FC\u30E0\u306E\u7D44\u307F\u8FBC\u307F\u5236\u7D04\u3068\u4EFB\u610F\u306E `CHECK` \u3092\u9069\u7528\u3059\u308B read-only \u6587\u3067\u3059\u3002DML \u672B\u5C3E\u306E `VALIDATE ONLY` \u3068\u306F\u5225\u6587\u3067\u3001kintone \u306E POST / PUT / DELETE API \u306F\u547C\u3073\u307E\u305B\u3093\u3002\n\n```sql\nVALIDATE APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u660E\u7D30(\u6570\u91CF, \u5358\u4FA1))\nWHERE \u4F5C\u6210\u65E5\u6642 >= '2026-01-01'\nCHECK WHEN \u91D1\u984D < 0 THEN '\u91D1\u984D\u304C\u8CA0\u3067\u3059';\n\nVALIDATE APP100 INTO #err;\nSELECT $id, $err_field, $err_code, $err_message, $err_value,\n $err_subtable, $err_subrow, $err_subrow_id\nFROM #err;\n\n-- \u5927\u91CF\u9055\u53CD\u306F\u8A73\u7D30\u884C\u3092\u4F5C\u3089\u305A\u89AA\xD7\u30C6\u30FC\u30D6\u30EB\xD7\u30D5\u30A3\u30FC\u30EB\u30C9\xD7\u30B3\u30FC\u30C9\u3067\u96C6\u7D04\nVALIDATE APP100 SUMMARY INTO #summary;\n```\n\n- `(fields)` \u7701\u7565\u6642\u306F\u3001\u5236\u7D04\u3092\u6301\u3064\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\uFF0F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\uFF0F\u5B50\u306E\u5168 `NUMBER` \u304C\u5BFE\u8C61\u3067\u3059\u3002\u30C6\u30FC\u30D6\u30EB\u30B3\u30FC\u30C9\u5358\u72EC\u306F\u305D\u306E\u30C6\u30FC\u30D6\u30EB\u306E\u76E3\u67FB\u53EF\u80FD\u306A\u5B50\u3059\u3079\u3066\u3001`\u30C6\u30FC\u30D6\u30EB(\u5B501, \u5B502)` \u306F\u6307\u5B9A\u3057\u305F\u5B50\u3060\u3051\u3092\u9078\u3073\u307E\u3059\u3002\u88F8\u306E\u5B50\u30B3\u30FC\u30C9\u3001\u672A\u77E5\u30FB\u6240\u5C5E\u9055\u3044\u30FB\u91CD\u8907\u30FB\u76E3\u67FB\u5BFE\u8C61\u5916\u306F\u53D6\u5F97\u524D\u306B\u62D2\u5426\u3057\u307E\u3059\n- \u8A73\u7D30\u51FA\u529B\u306F\u56FA\u5B9A9\u5217 `$id`, `$err_field`, `$err_code`, `$err_message`, `$err_value`, `$err_subtable`, `$err_subrow`, `$err_subrow_id`, `$err_count` \u3067\u3059\u3002\u540C\u4E00\u30EC\u30B3\u30FC\u30C9\u306E\u9055\u53CD\u3092\u88C5\u98FE\u524D\u306E\u5143 message \u3092\u542B\u3080 `($id, $err_subtable, $err_field, $err_code, $err_message)` \u3067\u96C6\u7D04\u3057\u3001`$err_count` \u306B\u4EF6\u6570\u3092\u6587\u5B57\u5217\u5316\u3057\u3066\u683C\u7D0D\u3057\u307E\u3059\u3002\u7570\u306A\u308B\u5143 message \u306F\u5225\u884C\u3067\u3059\u3002\u51FA\u529B\u306F\u5148\u982D\u51FA\u73FE\u9806\u3067\u3001`$err_value` \u306F\u30B0\u30EB\u30FC\u30D7\u5148\u982D\u306E\u5024\u3092\u4FDD\u6301\u3057\u307E\u3059\u3002\u5B50\u9055\u53CD\u306E `$err_subrow` \u306F\u5168\u8A72\u5F53\u884C\u306E1-based\u8868\u793A\u5E8F\u6570\u3001`$err_subrow_id` \u306F\u540C\u9806\u306E\u5168\u6C38\u7D9A\u884CID\uFF08\u5404\u8981\u7D20\u304C\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E `_rid` \u3068\u540C\u5024\uFF09\u3092\u3001\u305D\u308C\u305E\u308C\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30FB\u5207\u308A\u6368\u3066\u306A\u3057\u3067\u683C\u7D0D\u3057\u307E\u3059\uFF08\u4F8B: `\"1,2\"` / `\"r10,r20\"`\uFF09\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u9055\u53CD\u304B\u3064 `$err_count >= 2` \u306E\u51FA\u529B message \u306B\u306F\u96C6\u7D04\u5F8C\u306B `\uFF08{count}\u884C: {subrow\u30EA\u30B9\u30C8}\uFF09` \u3092\u4ED8\u3051\u307E\u3059\uFF08\u4F8B: `\u6587\u5B57\u5217T2 \u306F 3 \u6587\u5B57\u4EE5\u4E0A\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF082\u884C: 1,2\uFF09`\uFF09\u3002\u30EA\u30B9\u30C8\u306F `$err_subrow` \u3068\u540C\u4E00\u3067\u3001\u5148\u982D\u51FA\u73FE\u9806\u30FB\u5207\u308A\u6368\u3066\u306A\u3057\u3067\u3059\u3002`$err_count=1` \u306E\u5B50\u9055\u53CD\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u9055\u53CD\u3001`CHECK` \u9055\u53CD\u306E message \u306F\u5F93\u6765\u3069\u304A\u308A\u3067\u3059\u3002`INTO #err` \u306B\u3082\u88C5\u98FE\u6E08\u307F message \u3092\u683C\u7D0D\u3057\u307E\u3059\u3002\u578B\u30E1\u30BF\u306F `$err_subrow=string`\u3001`$err_count=number` \u3067\u3059\u3002\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\uFF0F`CHECK` \u306E\u30ED\u30B1\u30FC\u30BF3\u5217\u306F\u7A7A\u3067\u3001\u901A\u5E38 `$err_count=1` \u3067\u3059\u30020\u884C\u30C6\u30FC\u30D6\u30EB\u3067\u306F\u5B50\u306E\u5FC5\u9808\u9055\u53CD\u306F\u767A\u706B\u3057\u307E\u305B\u3093\n- `SUMMARY` \u306F `(fields)` \u5F8C\u30FB`WHERE` \u524D\u306B\u7F6E\u304F soft keyword \u3067\u3059\u3002\u8A73\u7D30\u884C\u3092\u751F\u6210\u305B\u305A\u3001\u56FA\u5B9A5\u5217 `$id`, `$err_subtable`, `$err_field`, `$err_code`, `$err_count` \u3078\u76F4\u63A5\u96C6\u7D04\u3057\u307E\u3059\u3002SUMMARY \u306F\u30EC\u30B3\u30FC\u30C9\u6A2A\u65AD\u306E\u898F\u6A21\u628A\u63E1\u3001\u8A73\u7D309\u5217\u306F message \u5225\u306E\u30EC\u30B3\u30FC\u30C9\u5185\u8A33\u3068\u5168\u8A72\u5F53\u884C\u30ED\u30B1\u30FC\u30BF\u30EA\u30B9\u30C8\u306B\u4F7F\u3044\u307E\u3059\n- \u8A73\u7D30\uFF0F`SUMMARY` \u306E\u3069\u3061\u3089\u3082\u3001\u7D50\u679C\u30E1\u30BF\u30C7\u30FC\u30BF `validateStats` \u306B\u96C6\u7D04\u524D\u306E\u7D71\u8A08\u3092\u8FD4\u3057\u307E\u3059\u3002`errorRecords` \u306F\u9055\u53CD\u30921\u4EF6\u4EE5\u4E0A\u6301\u3064 distinct `$id` \u6570\u3001`errorCount` \u306F\u96C6\u7D04\u524D\u306E\u9055\u53CD\u7DCF\u6570\u3067\u3001\u7D50\u679C\u884C\u306E `$err_count` \u5408\u8A08\u3068\u4E00\u81F4\u3057\u307E\u3059\u3002\u9055\u53CD0\u4EF6\u3067\u3082\u4E21\u65B9\u30920\u3067\u8FD4\u3057\u307E\u3059\u3002\u3055\u3089\u306B\u4EFB\u610F\u30D5\u30A3\u30FC\u30EB\u30C9 `constraintMetadata` \u306F\u3001\u5B9F\u969B\u306E\u76E3\u67FB\u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u30E1\u30BF\u30C7\u30FC\u30BF\u306B\u542B\u307E\u308C\u3066\u3044\u305F\u30D5\u30A9\u30FC\u30E0\u5236\u7D04\u7A2E\u5225\u3092 `present`\u3001\u65E2\u77E54\u7A2E\u306E\u5DEE\u96C6\u5408\u3092 `absent` \u3067\u8FD4\u3057\u307E\u3059\u3002\u7A2E\u5225\u306F `required`\uFF08\u5FC5\u9808\uFF09\u3001`length`\uFF08`minLength` / `maxLength`\uFF09\u3001`range`\uFF08`minValue` / `maxValue`\uFF09\u3001`choice`\uFF08`optionOrder`\uFF09\u3067\u3001\u3053\u306E\u9806\u306B\u5B89\u5B9A\u3057\u307E\u3059\u3002\u305F\u3068\u3048\u3070\u9078\u629E\u80A2\u3060\u3051\u304C\u6E21\u3055\u308C\u305F0\u4EF6\u7D50\u679C\u306F `{ \"errorRecords\": 0, \"errorCount\": 0, \"constraintMetadata\": { \"present\": [\"choice\"], \"absent\": [\"required\", \"length\", \"range\"] } }` \u3067\u3059\u3002\u3053\u308C\u306F\u5165\u529B\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u89B3\u6E2C\u4E8B\u5B9F\u3067\u3042\u308A\u3001\u300C\u30A2\u30D7\u30EA\u306B\u5236\u7D04\u304C\u7121\u3044\u300D\u300Cclient \u304C\u5236\u7D04\u3092\u843D\u3068\u3057\u305F\u300D\u3068\u3044\u3046\u63A8\u6E2C\u3084\u8B66\u544A\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u51684\u7A2E\u304C `absent` \u3067\u3082\u8B66\u544A\u306F\u8FD4\u3057\u307E\u305B\u3093\u3002`CHECK` \u3068 NUMBER \u306E\u578B\u30FB\u7CBE\u5EA6\u691C\u8A3C\u306F\u3053\u306E4\u7A2E\u306B\u542B\u307F\u307E\u305B\u3093\u3002\u300C0\u4EF6\u300D\u3060\u3051\u3067\u306A\u304F\u300C\u9078\u629E\u80A2\u3060\u3051\u3092\u691C\u8A3C\u5BFE\u8C61\u306B\u3057\u30660\u4EF6\u300D\u3068\u691C\u8A3C\u7BC4\u56F2\u3092\u4F75\u8A18\u3059\u308B\u3053\u3068\u3067\u3001\u8AA4\u3063\u305F\u5B89\u5FC3\u3092\u907F\u3051\u3089\u308C\u307E\u3059\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306F `\u30A8\u30E9\u30FC {errorRecords} \u30EC\u30B3\u30FC\u30C9 / {errorCount} \u4EF6\uFF08\u8868\u793A {rowCount} \u884C\uFF09`\u3001CLI \u306E table\uFF0Fmarkdown \u306F\u672B\u5C3E\u30B5\u30DE\u30EA\u306B `errorRecords=\u2026 errorCount=\u2026` \u3092\u8868\u793A\u3057\u3001JSON\uFF0FMCP \u306F `validateStats` \u3092\u542B\u3081\u307E\u3059\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306E `INTO #err` \u306F\u30C6\u30FC\u30D6\u30EB\u306E\u4EE3\u308F\u308A\u306B `VALIDATE: \u30A8\u30E9\u30FC {errorRecords} \u30EC\u30B3\u30FC\u30C9 / {errorCount} \u4EF6\uFF08#err \u3078 {rowCount} \u884C\uFF09` \u3092\u6587\u4F4D\u7F6E\u3078\u8868\u793A\u3057\u307E\u3059\u3002`INTO #err` \u3092\u4F7F\u3046\u30D0\u30C3\u30C1\u3067\u3082\u7D71\u8A08\u306F VALIDATE \u6587\u81EA\u8EAB\u306E\u7D50\u679C\u3060\u3051\u306B\u4ED8\u304D\u3001\u5F8C\u7D9A\u306E\u6C4E\u7528 `SELECT` \u306B\u306F\u5F15\u304D\u7D99\u304E\u307E\u305B\u3093\n- `$err_code` \u5225\u306A\u3069\u306E\u5185\u8A33\u3092\u518D\u96C6\u8A08\u3059\u308B\u3068\u304D\u306F\u3001\u884C\u6570\u306E `COUNT(*)` \u3067\u306F\u306A\u304F\u9055\u53CD\u672C\u6570\u306E `SUM($err_count)` \u3092\u4F7F\u3044\u307E\u3059\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u540C\u4E00\u9055\u53CD\u306F1\u884C\u3078\u307E\u3068\u307E\u308A\u3001\u305D\u306E\u672C\u6570\u304C `$err_count` \u306B\u5165\u308B\u305F\u3081\u3067\u3059\u3002\u305F\u3068\u3048\u3070 KPI \u30AB\u30FC\u30C9\u306B `validateStats.errorCount`\u3001\u96A3\u306E\u68D2\u30B0\u30E9\u30D5\u306B `$err_code` \u5225\u306E `COUNT(*)` \u3092\u7F6E\u304F\u3068\u3001\u540C\u3058\u753B\u9762\u3067\u5408\u8A08\u304C\u98DF\u3044\u9055\u3063\u3066\u898B\u3048\u307E\u3059\u3002`VALIDATE APP100 INTO #err; SELECT $err_code, SUM($err_count) AS errorCount FROM #err GROUP BY $err_code;` \u306E\u3088\u3046\u306B\u96C6\u8A08\u3057\u3066\u304F\u3060\u3055\u3044\n- `INTO #err` \u306F\u8907\u6587\u30D0\u30C3\u30C1\u5C02\u7528\u3067\u3059\u3002\u8A73\u7D309\u5217\u3068 SUMMARY 5\u5217\u306F\u5225\u30B9\u30AD\u30FC\u30DE\u3067\u3001\u540C\u540D\u4E00\u6642\u8868\u3078\u306E\u6DF7\u5728\u8FFD\u8A18\u306F\u89E3\u6790\u6642\u306B\u62D2\u5426\u3057\u307E\u3059\u3002`tempTableMaxRows` \u306F\u3069\u3061\u3089\u3082\u96C6\u7D04\u5F8C\u884C\u6570\u3078\u9069\u7528\u3057\u3001\u8D85\u904E\u6642\u306F\u90E8\u5206\u7D50\u679C\u3092\u6B8B\u3055\u305A\u30A8\u30E9\u30FC\u306B\u3057\u307E\u3059\n- `WHERE` \u306F\u901A\u5E38\u6BD4\u8F03\u3001`BETWEEN`, \u30EA\u30C6\u30E9\u30EB `IN`, `IS NULL`, `LIKE` \u3092\u4F7F\u3048\u307E\u3059\u3002`KLIKE`, \u30B5\u30D6\u30AF\u30A8\u30EA, \u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u53C2\u7167\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002`CHECK` \u3082\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u53C2\u7167\u3060\u3051\u3067\u3059\u3002\u5B89\u5168\u306A\u6761\u4EF6\u3060\u3051\u3092\u53D6\u5F97\u6642\u306B\u62BC\u3057\u4E0B\u3052\u3001\u53D6\u5F97\u5F8C\u306B\u5143\u306E\u6761\u4EF6\u5168\u4F53\u3092\u518D\u8A55\u4FA1\u3057\u307E\u3059\n- \u5B8C\u5168\u306A\u76E3\u67FB\u96C6\u5408\u304C\u5FC5\u8981\u306A\u305F\u3081\u3001\u5168 surface \u3067 `onLimit=truncate` \u3092\u7121\u52B9\u5316\u3057\u3066 error \u306B\u3057\u307E\u3059\u3002\u53D6\u5F97\u306F\u901A\u5E38 records API \u306E offset + `$id` keyset paging \u3067\u3001Cursor API \u306F\u4F7F\u3044\u307E\u305B\u3093\n- `EXPLAIN VALIDATE` \u306F\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3068\u3001NUMBER \u5BFE\u8C61\u304C\u3042\u308B\u5834\u5408\u306E\u6570\u5024\u7CBE\u5EA6\u3060\u3051\u3092\u8AAD\u307F\u307E\u3059\u3002\u30EC\u30B3\u30FC\u30C9 API / mutation API \u306F\u547C\u3070\u305A\u3001\u9055\u53CD\u4EF6\u6570\u3082\u7B97\u51FA\u3057\u307E\u305B\u3093", uri: "ksql://language-reference/17-upsert" }, "18-delete": { heading: "18. DELETE", text: '## 18. DELETE\n\n```sql\nDELETE FROM APP100\nWHERE \u6761\u4EF6\n```\n\n```sql\nDELETE FROM APP100\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = \'\u30AD\u30E3\u30F3\u30BB\u30EB\'\n\nDELETE FROM APP100\nWHERE \u4F5C\u6210\u65E5\u6642 < \'2020-01-01\'\n```\n\n> **WHERE \u53E5\u306F\u5FC5\u9808\u3067\u3059\u3002** \u5168\u4EF6\u524A\u9664\u3092\u9632\u3050\u305F\u3081\u3001WHERE \u306A\u3057\u306E DELETE \u306F\u69CB\u6587\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002 \n> \u6CE8: CLI \u306B\u306F `--allow-without-where` \u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u73FE\u884C\u5B9F\u88C5\u3067\u306F UPDATE/DELETE \u306E\u6587\u6CD5\u4E0A WHERE \u304C\u5FC5\u9808\u3067\u3059\u3002\n\n> **\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0:** \u5B9F\u884C\u524D\u306B\u5BFE\u8C61\u4EF6\u6570\u3092\u8868\u793A\u3057\u3066\u78BA\u8A8D\u3092\u6C42\u3081\u307E\u3059\u3002 \n> \u30AD\u30E3\u30F3\u30BB\u30EB\u3059\u308B\u3068\u524A\u9664\u306F\u884C\u308F\u308C\u307E\u305B\u3093\u3002\n\n> **CLI \u62E1\u5F35\u306E\u5236\u7D04:** `DELETE` \u3067\u306E `APP@profile` \u6307\u5B9A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\u3002 \n> \u4F8B: `DELETE FROM APP100@guest WHERE ...` \u306F \n> `ArgumentError: @profile is not supported for DELETE yet.` \u3067\u7D42\u4E86\u3057\u307E\u3059\u3002\n\n---\n\n## 18.1 IMPORT\uFF08\u30D5\u30A1\u30A4\u30EB\u53D6\u8FBC\u30FBv3.6.0\uFF09\n\nCSV / JSON \u30D5\u30A1\u30A4\u30EB\u3092\u3001**\u5C04\u5F71\u30FB\u691C\u8A3C\u30FB\u4E0D\u826F\u884C\u9694\u96E2\u30FBcli-kintone \u4E92\u63DB**\u3092\u5099\u3048\u3066 kintone \u30A2\u30D7\u30EA\u3078\u4E00\u62EC\u767B\u9332\uFF0F\u66F4\u65B0\u3059\u308B\u81EA\u5DF1\u5B8C\u7D50\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u3067\u3059\u3002\u65E2\u5B9A\u3067\u306F\u7121\u52B9\uFF08capability gate off\uFF09\u3067\u3001**\u9762\u304C\u30BD\u30FC\u30B9\u3092\u540D\u524D\u3067\u4F9B\u7D66\u3057\u305F\u3068\u304D\u3060\u3051\u6709\u52B9**\u306B\u306A\u308A\u307E\u3059\u3002SQL \u672C\u6587\u306B\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u306F\u66F8\u304D\u307E\u305B\u3093\uFF08\u30A4\u30F3\u30B8\u30A7\u30AF\u30B7\u30E7\u30F3\u9632\u6B62\u30FB1 \u30BD\u30FC\u30B9\u6700\u5927 10 MiB\uFF09\u3002\n\n### \u69CB\u6587\n\n```\nIMPORT [UPDATE] INTO APP<n> ( <\u53D6\u8FBC\u5148> )\n FROM CSV|JSON <\u30BD\u30FC\u30B9\u540D>\n [ENCODING UTF8|SJIS] -- CSV \u306E\u307F\uFF08\u65E2\u5B9A UTF8\uFF09\n [NO HEADER [COLUMNS (col, ...)]] -- CSV \u306E\u307F\n [SELECT <\u5F0F>, ...] -- CSV \u306E\u307F\uFF08\u4F4D\u7F6E\u6307\u5B9A\u306E\u4EE3\u308F\u308A\u306B\u5C04\u5F71\uFF09\n [BY NAME [IGNORE UNKNOWN COLUMNS]] -- CSV \u306E\u307F\uFF08\u30D8\u30C3\u30C0\uFF1D\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\uFF09\n [MATCH RECORD NUMBER SOURCE <\u30D8\u30C3\u30C0>] -- IMPORT UPDATE \u5FC5\u9808\n [ON DUPLICATE (\u30AD\u30FC, ...)] -- UPSERT\n [REPLACE SUBTABLES (\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB, ...)] -- CSV \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u307F\n [CHECK WHEN ... THEN ...] -- \xA717.3\n [VALIDATE ONLY [INTO #err] | ON ERROR SKIP INTO #err [REJECT LIMIT n]] -- \xA717.1 / \xA717.2\n```\n\n`<\u53D6\u8FBC\u5148>` \u306F `\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9`\u3001\u307E\u305F\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB `\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30B3\u30FC\u30C9(\u5B501, \u5B502) [ROW ID SOURCE <\u30D8\u30C3\u30C0>]`\uFF08`ROW ID SOURCE` \u306F\u5B50\u5217\u30EA\u30B9\u30C8\u306E\u9589\u3058\u62EC\u5F27\u306E**\u5F8C**\uFF09\u3002\n\n### \u30BD\u30FC\u30B9\u306E\u4F9B\u7D66\uFF08\u9762\u3054\u3068\uFF09\n\n| \u9762 | \u4F9B\u7D66\u65B9\u6CD5 |\n|---|---|\n| CLI | `--import-csv <name>=<path>` / `--import-json <name>=<path>`\uFF08\u53CD\u5FA9\u53EF\u30FB\u6307\u5B9A\u3067 gate ON\uFF09 |\n| MCP | \u5F15\u6570 `importSources: [{ name, text \\| base64, encoding? }]`\uFF08inline\u30FB\u30D1\u30B9\u4E0D\u53EF\u30FB\u6307\u5B9A\u3067 gate ON\uFF09 |\n| \u30D7\u30E9\u30B0\u30A4\u30F3 | \u30D8\u30C3\u30C0\u30FC\u306E\u300C\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E\u300D\uFF08\u30BD\u30FC\u30B9\u540D\uFF1D\u62E1\u5F35\u5B50\u3092\u9664\u53BB\u3057\u3001\u8B58\u5225\u5B50\u306B\u4F7F\u3048\u306A\u3044\u6587\u5B57\u3092 `_` \u306B\u6B63\u898F\u5316\u3002`sales.csv` \u2192 `sales`\u3001`sales 2026.csv` \u2192 `sales_2026`\uFF09 |\n| `/flow` \u516C\u958B API | `enableImport: true` \u3068\u3001`createImportSourceResolver` \u307E\u305F\u306F `FlowImportSourceResolver` \u304C\u8FD4\u3059lazy loader\uFF08`Uint8Array`\u3001path\u4E0D\u53EF\uFF09 |\n\n`/flow` \u306E `enableImport` \u306F `parseScript` / `validateScript` / `explainScript` /\n`createExecutionContext` \u3067\u5171\u901A\u3067\u3059\u3002\u7701\u7565\u307E\u305F\u306F `false` \u306F `KSQL1202` \u306E\u65E2\u5B58fail-closed\u52D5\u4F5C\u3092\u7DAD\u6301\u3057\u3001\nresolver\u306E\u5B58\u5728\u3060\u3051\u3067\u306Fgate\u3092\u958B\u304D\u307E\u305B\u3093\u3002loader\u306Fparse\u30FBvalidate\u30FBEXPLAIN\u30FBcontext\u4F5C\u6210\u3067\u306F\u547C\u3070\u308C\u305A\u3001\n\u5BFE\u8C61IMPORT\u6587\u306E\u5B9F\u884C\u5230\u9054\u6642\u3060\u3051\u547C\u3070\u308C\u307E\u3059\u3002source\u540D\u306F\u5B8C\u5168\u4E00\u81F4\u30FBcase-sensitive\u3067\u3059\u3002\n\n`CreateExecutionContextOptions.onImportSourceMaterialized` \u3092\u6307\u5B9A\u3059\u308B\u3068\u3001source\u306Edecode\u3068raw\nmaterialize\u304C\u6210\u529F\u3057\u305F\u76F4\u5F8C\u3001projection\u30FBvalidation\u30FB`ON ERROR SKIP`\u9078\u5225\u30FB\u78BA\u8A8D\u30FBmutation\u3088\u308A\u524D\u306B\n\u6B21\u306E5 key\u3060\u3051\u3092\u6301\u3064receipt\u304C1\u56DEawait\u3055\u308C\u307E\u3059\u3002\n\n```ts\n{ statementIndex, name, kind, rows, encoding }\n```\n\n- `statementIndex` \u306F\u5BFE\u5FDC\u3059\u308B `StatementResult.index` \u3068\u540C\u30580\u59CB\u307E\u308A\u3067\u3059\u3002\u540C\u3058source\u3092\u8907\u6570\u6587\u3067\n \u4F7F\u3063\u305F\u5834\u5408\u3082\u6587\u3054\u3068\u306B\u901A\u77E5\u3057\u3001engine\u306Fdedupe\u3057\u307E\u305B\u3093\u3002\n- CSV\u306E `rows` \u306Fheader\u3092\u9664\u304FRFC 4180 data record\u6570\u3067\u3059\u3002quoted cell\u5185\u306E\u6539\u884C\u306F\u5897\u5206\u306B\u305B\u305A\u3001\n subtable CSV\u3067\u306F\u89AA\u884C\u3068\u7D99\u7D9A\u884C\u3092\u542B\u3080\u7269\u7406data record\u6570\u3067\u3059\u30021\u5217CSV\u306E\u7A7A\u884C\u306F\u7A7A\u5024record\u3068\u3057\u3066\n \u6570\u3048\u307E\u3059\u304C\u3001\u591A\u5217CSV\u306E\u7A7A\u884C\u306F\u5217\u6570\u4E0D\u4E00\u81F4error\u3068\u306A\u308A\u901A\u77E5\u3057\u307E\u305B\u3093\u3002\n- JSON\u306E `rows` \u306Ftop-level record\u6570\u3067\u3001subtable child\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n- CSV\u306E `encoding` \u306F `SQL ENCODING > loader metadata > "utf8"` \u306E\u89E3\u6C7A\u5F8C\u3001JSON\u306F `"utf8"` \u3067\u3059\u3002\n- source load\u3001payload\u691C\u67FB\u3001decode\u3001materializer\u5185\u691C\u67FB\u3001`maxRecords`\u8D85\u904E\u3067\u5931\u6557\u3057\u305F\u5834\u5408\u306F\u901A\u77E5\u3057\u307E\u305B\u3093\u3002\n callback\u306Ethrow/reject\u306F\u65E2\u5B58\u306Estatement error\u5909\u63DB\u3078\u305D\u306E\u307E\u307E\u6E21\u308A\u3001\u305D\u306E\u6587\u306Emutation API\u306F0\u56DE\u3067\u3059\u3002\n callback\u3092\u7701\u7565\u3057\u305F\u5834\u5408\u306E\u7D50\u679C\u3068API\u547C\u51FA\u3057\u56DE\u6570\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n\n### CSV \u306E\u53D6\u8FBC\n\n\u5217\u306E\u5BFE\u5FDC\u306F 3 \u901A\u308A:\n\n- **\u4F4D\u7F6E\u6307\u5B9A**\uFF08\u65E2\u5B9A\uFF09: CSV \u5217\u3092 `INTO (...)` \u306E\u9806\u3067\u5BFE\u5FDC\u3002\n- **\u5C04\u5F71 `SELECT`**: \u53D6\u8FBC\u524D\u306B\u5F0F\u5909\u63DB\uFF08`CAST` / \u95A2\u6570 / `||` / `@var`\uFF09\u3002`FROM` / `JOIN` / `WHERE` / `GROUP BY` / `ORDER BY` / `LIMIT` / \u30B5\u30D6\u30AF\u30A8\u30EA / \u4FEE\u98FE\u53C2\u7167\u306F\u4E0D\u53EF\uFF08\u7D14\u7C8B\u306A\u5F0F\u306E\u4E26\u3073\u306E\u307F\u30FB\u5217\u6570\u306F\u53D6\u8FBC\u5148\u3068\u4E00\u81F4\uFF09\u3002\n- **`BY NAME`**: \u30D8\u30C3\u30C0\u884C\u3092\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u3068\u3057\u3066\u5BFE\u5FDC\uFF08cli-kintone \u4E92\u63DB\uFF09\u3002\n\n```sql\n-- \u4F4D\u7F6E\u6307\u5B9A + UPSERT\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nFROM CSV sales\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9);\n\n-- \u5C04\u5F71\u3067\u6570\u5024\u5316\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nFROM CSV sales\nSELECT code, CAST(amount AS NUMBER) AS \u91D1\u984D;\n\n-- \u30D8\u30C3\u30C0\u7121\u3057\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nFROM CSV sales NO HEADER COLUMNS (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D);\n```\n\n- CSV \u306F RFC 4180 \u6E96\u62E0\u3002`ENCODING` \u3067 UTF-8 / Shift_JIS\u3001BOM \u8A31\u5BB9\u3002`/flow` \u306E\u6709\u52B9\u6587\u5B57\u30B3\u30FC\u30C9\u306F\n **SQL `ENCODING` > loader\u306E `encoding` > UTF-8** \u306E\u512A\u5148\u9806\u4F4D\u3067\u3059\u3002\n\n### JSON \u306E\u53D6\u8FBC\n\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D) FROM JSON payload;\n```\n\n- **\u53B3\u5BC6 10 \u9032\u30C7\u30B3\u30FC\u30C9**\uFF08\u5B57\u53E5\u3092\u4FDD\u6301\u3057\u3001\u5B89\u5168\u6574\u6570\u306E\u307F\u6570\u5024\u5316\u3002\u7CBE\u5EA6\u304C\u5FC5\u8981\u306A NUMBER \u306F JSON \u5074\u3067\u6587\u5B57\u5217\u3068\u3057\u3066\u6E21\u3059\uFF09\u3002\n- **\u5168\u968E\u5C64\u3067\u91CD\u8907\u30AD\u30FC\u3092\u62D2\u5426**\u3002`null` / \u6B20\u843D / \u5B58\u5728\u306E\u533A\u5225\u3042\u308A\u3002\n- JSON \u306F UTF-8 \u56FA\u5B9A\uFF08`ENCODING` \u4E0D\u53EF\uFF09\u3002\u5C04\u5F71\u30FB`BY NAME`\u30FB`NO HEADER` \u306F CSV \u5C02\u7528\u3002\n\n### cli-kintone \u4E92\u63DB\uFF08`BY NAME` \u30FB\u30EC\u30B3\u30FC\u30C9\u756A\u53F7 UPDATE\uFF09\n\n`cli-kintone record export` \u306E CSV \u3092\u305D\u306E\u307E\u307E\u623B\u305B\u307E\u3059\u3002\n\n- `BY NAME`: \u30D8\u30C3\u30C0\u3092\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u3068\u3057\u3066\u5BFE\u5FDC\u3002**\u66F8\u8FBC\u307F\u4E0D\u53EF\u306E\u65E2\u77E5\u5217**\uFF08`$id`\u30FB\u4F5C\u6210\u8005\u30FB\u66F4\u65B0\u65E5\u6642\u306A\u3069\uFF09\u306F\u76E3\u67FB\u30ED\u30B0\u3092\u6B8B\u3057\u3066\u7121\u8996\u3001**\u672A\u77E5\u5217**\u306F\u65E2\u5B9A\u3067\u62D2\u5426\uFF08`IGNORE UNKNOWN COLUMNS` \u3067\u7121\u8996\uFF09\u3002\u8907\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u30BB\u30EB\u5185\u6539\u884C\uFF08LF\uFF09\u3067\u5206\u5272\u3002\n- `IMPORT UPDATE \u2026 MATCH RECORD NUMBER SOURCE <\u30D8\u30C3\u30C0>`: \u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u3067\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3092**\u7D14 UPDATE**\uFF08INSERT 0\u30FB\u756A\u53F7\u306F\u7167\u5408\u5C02\u7528\u3067\u66F8\u304D\u63DB\u3048\u306A\u3044\uFF09\u3002`ON DUPLICATE` \u3068\u306F\u4F75\u7528\u4E0D\u53EF\u3002\n\n```sql\nIMPORT UPDATE INTO APP100 (\u91D1\u984D)\nFROM CSV exported BY NAME\nMATCH RECORD NUMBER SOURCE `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7`;\n```\n\n### \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u53D6\u8FBC\n\n\u610F\u5473\u8AD6\u306F\u30BD\u30FC\u30B9\u7A2E\u5225\u3067\u7570\u306A\u308A\u307E\u3059\u3002\n\n- **JSON\uFF08\u30CD\u30B9\u30C8\u914D\u5217\uFF09**: \u65B0\u898F INSERT / `ON DUPLICATE` UPSERT\u3002\u884C ID \u3092\u6301\u305F\u305A\u3001\u89AA\u5185\u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F**\u5168\u7F6E\u63DB**\uFF08\u518D\u63A1\u756A\uFF09\u3002`ROW ID SOURCE` \u306F\u4E0D\u53EF\u3002\n- **CSV `*` \u5F62\u5F0F**\uFF08cli-kintone export\uFF09: **`IMPORT UPDATE` \u5C02\u7528**\u3002`BY NAME` \uFF0B `MATCH RECORD NUMBER SOURCE` \uFF0B `REPLACE SUBTABLES (...)` \uFF0B \u5404\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E `ROW ID SOURCE <\u30D8\u30C3\u30C0>` \u304C\u5FC5\u9808\u3002\u884C ID \u3092\u4FDD\u6301\u3057\u3066\u66F4\u65B0\u3057\u3001\u30BD\u30FC\u30B9\u306B\u7121\u3044\u884C\u306F\u524A\u9664\u3002\n\n```sql\n-- JSON: \u660E\u7D30\u3092\u6301\u3064\u30EC\u30B3\u30FC\u30C9\u3092\u65B0\u898F\u767B\u9332\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u660E\u7D30(\u54C1\u540D, \u6570\u91CF)) FROM JSON payload;\n\n-- CSV *: \u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u306E\u660E\u7D30\u3092\u5168\u7F6E\u63DB\u66F4\u65B0\nIMPORT UPDATE INTO APP100 (\u660E\u7D30(\u54C1\u540D, \u6570\u91CF) ROW ID SOURCE `\u660E\u7D30_\u884CID`)\nFROM CSV exported BY NAME\nMATCH RECORD NUMBER SOURCE `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7`\nREPLACE SUBTABLES (\u660E\u7D30);\n```\n\n- **\u7834\u58CA\u7684\u5168\u7F6E\u63DB\uFF08JSON \u306E\u30CD\u30B9\u30C8\u914D\u5217\uFF0FCSV \u306E `REPLACE SUBTABLES`\uFF09\u306F\u3001\u524A\u9664\u5185\u8A33\u3092\u78BA\u8A8D\u8868\u793A\u3067\u304D\u308B\u9762\u3067\u306E\u307F\u5B9F\u884C**\uFF08fail-closed\uFF09\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\u306B\u5897\u6E1B\u30B5\u30DE\u30EA\u3092\u8868\u793A\u3057\u307E\u3059\u3002JSON UPSERT \u3082\u65E2\u5B58\u306E\u5B50\u884C\u3092\u524A\u9664\u3057\u3066\u5168\u7F6E\u63DB\u3057\u307E\u3059\uFF08`REPLACE SUBTABLES` \u306F\u66F8\u304B\u306A\u3044\u30FB\u66F8\u304F\u3068\u69CB\u6587\u30A8\u30E9\u30FC\uFF09\u3002\n- **MCP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB mutation \u3092\u5E38\u306B fail-closed**\uFF08\u524A\u9664\u5185\u8A33\u3092\u5BFE\u8A71\u627F\u8A8D\u3067\u304D\u306A\u3044\u305F\u3081\uFF09\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u66F8\u8FBC\u307F\u306F CLI / \u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u884C\u3044\u3001MCP \u306F `ksql_query` \u306E `VALIDATE ONLY`\uFF0F`ksql_explain` \u306E `EXPLAIN` \u307E\u3067\u3002\n\n### \u691C\u8A3C\u30FB\u30C1\u30A7\u30C3\u30AF\u30FB\u9694\u96E2\n\n`VALIDATE ONLY`\uFF08\xA717.1\uFF09\u30FB`ON ERROR SKIP INTO #err`\uFF08\xA717.2\uFF09\u30FB`CHECK`\uFF08\xA717.3\uFF09\u3092 DML \u3068\u540C\u3058\u610F\u5473\u8AD6\u3067\u5229\u7528\u3067\u304D\u307E\u3059\u3002\u306A\u304A \xA717.1 \u306F\u4E00\u822C DML \u3067\u306F\u300C\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DML \u975E\u5BFE\u5FDC\u300D\u3067\u3059\u304C\u3001**IMPORT \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F\u305D\u306E\u4F8B\u5916**\u3067 `VALIDATE ONLY` \u3092\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF08read-only \u306E\u305F\u3081\u5168\u9762\u3067\u53EF\uFF09\u3002\n\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D) FROM CSV sales BY NAME\nCHECK WHEN \u91D1\u984D < 0 THEN \'\u91D1\u984D\u304C\u8CA0\u3067\u3059\'\nON ERROR SKIP INTO #err REJECT LIMIT 100;\nSELECT * FROM #err;\n```\n\n**MCP \u306E\u632F\u308A\u5206\u3051**: \u30D5\u30E9\u30C3\u30C8\uFF08\u89AA\u306E\u307F\uFF09\u306E\u66F8\u8FBC\u307F IMPORT \u306F `ksql_mutate`\u3001`VALIDATE ONLY`\uFF08read-only\uFF09\u306F `ksql_query`\u3001`EXPLAIN` \u306F `ksql_explain`\u3001\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB mutation \u306F Unsupported\u3002\n\n### \u5236\u9650\n\n- **\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\uFF08FILE\uFF09\u306F\u975E\u5BFE\u5FDC**\uFF08cli-kintone \u3092\u4F7F\u3046\uFF09\u3002\n- source payload\u306F\u5B9Fbyte\u9577\u3067 **10 MiB\u4EE5\u4E0B**\u3002`/flow` engine\u306Fpath\u3001URL\u3001file handle\u3092\u53D7\u3051\u53D6\u3089\u305A\u3001\n path\u89E3\u6C7A\u3001`lstat` / `realpath`\u3001\u901A\u5E38\u30D5\u30A1\u30A4\u30EB\u30FBsymlink\u30FBallowlist\u30FBhash\u3001open/read\u306E\u691C\u67FB\u306F\u547C\u51FA\u5074\u304C\u884C\u3044\u307E\u3059\u3002\n- `/flow` source\u5883\u754C\u306E\u5B89\u5B9Acode\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059\u3002\u5B9F\u884C\u6642\u30A8\u30E9\u30FC\u306F\n `StatementResult { status: "error", error: { code, message } }` \u3067\u8FD4\u308A\u3001decode\u30FBschema/DML\u691C\u8A3C\u307E\u3067\n \u5168\u3066\u6210\u529F\u3059\u308B\u524D\u306Bmutation API\u3092\u547C\u3073\u307E\u305B\u3093\u3002\n\n | code | \u6761\u4EF6 |\n |---|---|\n | `ImportSourceDuplicateError` | named source\u306E\u5B8C\u5168\u4E00\u81F4\u91CD\u8907\uFF08resolver\u4F5C\u6210\u6642\u306B\u540C\u671Fthrow\uFF09 |\n | `ImportSourceNotSuppliedError` | resolver\u672A\u6307\u5B9A\u3001\u307E\u305F\u306Fsource\u540D\u672A\u767B\u9332 |\n | `ImportSourceReadError` | raw resolver\u95A2\u6570\u306Ethrow\u3001loader\u306Eread\u5931\u6557\u3001\u307E\u305F\u306F\u672A\u77E5\u306Ereject |\n | `ImportSourceNotRegularFileError` | \u547C\u51FA\u5074\u304C\u901A\u5E38\u30D5\u30A1\u30A4\u30EB\u4EE5\u5916\u3092\u62D2\u5426 |\n | `ImportSourceTooLargeError` | payload\u304C10 MiB\u8D85 |\n | `ImportSourceInvalidPayloadError` | handle\u306E`load`\u304C\u95A2\u6570\u3067\u306A\u3044\u3001bytes\u578B\u307E\u305F\u306Fencoding\u304C\u4E0D\u6B63 |\n- **\u53D6\u8FBC\u884C\u6570\u306E\u4E0A\u9650 `maxRecords` \u306F\u9762\u30FB\u7D4C\u8DEF\u3067\u7570\u306A\u308B**\uFF08\u8D85\u904E\u306F\u30B5\u30A4\u30EC\u30F3\u30C8\u5207\u308A\u6368\u3066\u305B\u305A fail-closed\uFF09:\n - CLI = \u65E2\u5B9A **500**\uFF08`--max-records` \u3067\u62E1\u5F35\uFF09\u3002\n - \u30D7\u30E9\u30B0\u30A4\u30F3 = \u521D\u671F\u5024 **3000**\uFF08UI \u3067\u5909\u66F4\u53EF\uFF09\u3002\n - MCP = \u901A\u5E38\u306E\u66F8\u8FBC\u307F mutation \u306F `dmlMaxRows`\uFF08\uFF0B1\uFF09\u3067\u89E3\u6C7A\u3001`ON ERROR SKIP` / `VALIDATE ONLY` \u306F\u901A\u5E38\u306E runtime `maxRecords` \u89E3\u6C7A\u306B\u623B\u308B\u3002\n - **CSV \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u7F6E\u63DB**\u3067\u306F\u3001\u540C\u3058 `maxRecords` \u304C\u53D6\u8FBC\u89AA\u4EF6\u6570\u3060\u3051\u3067\u306A\u304F**\u884C ID \u6240\u6709\u6A29\u691C\u67FB\u306E\u305F\u3081\u306E\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u5168\u4EF6\u8D70\u67FB**\u306B\u3082\u9069\u7528\u3055\u308C\u308B\u3002\u65E2\u5B9A\u3092\u8D85\u3048\u308B\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u304C\u3042\u308B\u3068\u3001\u53D6\u8FBC\u4EF6\u6570\u304C\u5C11\u306A\u304F\u3066\u3082 fail-closed \u306B\u306A\u308B\u3002\n- **CSV \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F UPDATE \u5C02\u7528**\u3002\u65B0\u898F\u767B\u9332\u306F JSON\u3002\n- \u6A19\u6E96\u30B9\u30DA\u30FC\u30B9\u30FB\u30B2\u30B9\u30C8\u30B9\u30DA\u30FC\u30B9\u306E\u4E21\u65B9\u3067\u52D5\u4F5C\u3002\n\n---\n\n## 18.2 CSV export\uFF08\u540D\u524D\u4ED8\u304D\u30B7\u30F3\u30AF\u30FBB179\uFF09\n\n\u7D50\u679C\u3092 CSV file \u3068\u3057\u3066\u66F8\u304D\u51FA\u3059\u4ED5\u7D44\u307F\u3067\u3059\u3002serializer \u306F engine \u5C64\u306B 1 \u5B9F\u88C5\u3067\u3001CLI \u3068 `/flow` \u304C\u540C\u3058\u65B9\u8A00\u3092\u4F7F\u3044\u307E\u3059\u3002\nengine \u306F path\u30FBURL\u30FBfile handle \u3092\u53D7\u3051\u53D6\u3089\u305A\u3001bytes \u3068 receipt \u3092\u8FD4\u3059\u3060\u3051\u3067\u3059\uFF08file \u66F8\u8FBC\u307F\u30FBsha256 \u306F\u547C\u51FA\u5074\uFF09\u3002\n\n| \u9762 | \u4F7F\u3044\u65B9 |\n|---|---|\n| CLI | `--export-csv <name>=<path>`\uFF08\u53CD\u5FA9\u53EF\u30FBtemp table `#<name>` \u3092\u66F8\u304D\u51FA\u3059\uFF09\uFF0F`--export-csv <path>`\uFF08\u5358\u6587 SELECT \u306E\u307F\u30FBpath \u306B `=` \u306F\u4F7F\u3048\u306A\u3044\uFF09\uFF0F`--export-encoding utf8\\|sjis`\uFF0F`--export-timezone <IANA zone>` |\n| `/flow` | `createExecutionContext({ exportSinks: [{ name }] })` \u2192 \u5168\u6587\u5B9F\u884C\u5F8C `exportSinkStatus(context, name)` \u2192 `materialized` \u306A\u3089 `serializeExportSink(context, name, options)`\u3002\u5358\u6587 SELECT \u306F `serializeSelectResultAsCsv(statementResult, options)`\u3001\u4EFB\u610F\u5165\u529B\u306F `serializeCsvExport({ columns, rows, columnMeta }, options)` |\n| MCP\u30FB\u30D7\u30E9\u30B0\u30A4\u30F3 | \u5BFE\u8C61\u5916 |\n\n**\u540D\u524D\u4ED8\u304D\u30B7\u30F3\u30AF**: sink \u540D\u306F temp table `#<name>` \u306B\u5B8C\u5168\u4E00\u81F4\uFF08case-sensitive\uFF09\u3067\u5BFE\u5FDC\u3057\u3001\u540C\u3058 script \u306B `CREATE TEMP TABLE #<name>` \u304C\n**\u3061\u3087\u3046\u3069 1 \u6587**\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002\u5BA3\u8A00\u91CD\u8907\u30FBCREATE \u4E0D\u5B58\u5728\uFF0F\u91CD\u8907\u30FB\u6700\u7D42\u72B6\u614B\u3067 DROP \u6E08\u307F\u30FBDML \u306E `INTO #name` \u306F\u3001\n`/flow` \u3067\u306F context \u4F5C\u6210\u6642\u306B\u3001CLI \u3067\u306F\u5B9F\u884C\u524D\u306B\u62D2\u5426\u3057\u307E\u3059\uFF08kintone API 0 \u56DE\uFF09\u3002\u300C\u6700\u5F8C\u306E SELECT\u300D\u3092\u6697\u9ED9\u306B\u9078\u3076\u3053\u3068\u306F\u3057\u307E\u305B\u3093\u3002\n\n**serialize \u306E\u6642\u70B9**: SQL \u5168\u6587\u304C\u6210\u529F\u3057\u305F\u5F8C\u3060\u3051\u3067\u3059\u3002`/flow` \u306E `exportSinkStatus` \u306F `materialized`\uFF08\u4F5C\u6210\u6E08\u307F\uFF09\uFF0F\n`not-created`\uFF08EXIT \u306B\u3088\u308A CREATE \u306B\u5230\u9054\u3057\u306A\u304B\u3063\u305F\uFF1Derror \u3067\u306F\u306A\u304F\u300C\u5BFE\u8C61\u306A\u3057\u300D\uFF09\uFF0F`failed`\uFF08error\u30FBtimeout\u30FBassertion\u30FB\u4F9D\u5B58\u5931\u6557\uFF09\uFF0F\n`incomplete`\uFF08\u672A\u51E6\u7406\u306E\u6587\u304C\u6B8B\u308B\uFF09\u3092\u8FD4\u3057\u307E\u3059\u3002CLI \u306F batch \u304C\u5931\u6557\u3059\u308B\u3068 file \u3092\u4F5C\u3089\u305A\u3001\u65E2\u5B58 file \u3082\u5909\u3048\u307E\u305B\u3093\u3002\n\n**CSV \u306E\u5F62**: RFC 4180\uFF08`"` `,` CR LF \u3092\u542B\u3080 cell \u3092 `"` \u3067\u56F2\u307F `"` \u306F `""`\uFF09\u30FBrecord \u533A\u5207\u308A CRLF\u30FB\u672B\u5C3E CRLF\u30FBheader \u884C\u3042\u308A\u30FBBOM \u306A\u3057\u3002\nheader \u306F result \u5217\u540D\u305D\u306E\u3082\u306E\uFF08\u76F4\u63A5 field \u53C2\u7167\u306F\u6B63\u5F0F field code\u3002\u660E\u793A alias \u306F\u65E2\u5B58\u3069\u304A\u308A\u5C0F\u6587\u5B57\u5316\uFF09\u3002\u5358\u6587 SELECT \u3067\u540C\u540D\u5217\u304C\u91CD\u8907\u3059\u308B\u3068\n`ExportSinkDuplicateHeaderError`\uFF08temp table \u306F\u5B9A\u7FA9\u6642\u306B\u91CD\u8907\u5217\u304C 1 \u5217\u3078\u7573\u307E\u308C\u308B\u306E\u3067\u6CE8\u610F\uFF09\u3002\n\n**\u5024\u306E\u8868\u73FE\uFF08cli-kintone \u4E92\u63DB\uFF09**:\n\n| \u5217\u306E\u578B | cell |\n|---|---|\n| \u6587\u5B57\u5217\u30FBNUMBER\u30FBDATE\u30FBTIME | \u751F\u5024\u305D\u306E\u307E\u307E |\n| CHECK_BOX / MULTI_SELECT / CATEGORY | \u8981\u7D20\u3092 LF \u3067\u9023\u7D50\uFF08\u7A7A\u914D\u5217\u306F\u7A7A cell\uFF09 |\n| USER_SELECT / ORGANIZATION_SELECT / GROUP_SELECT / STATUS_ASSIGNEE | `code` \u3092 LF \u3067\u9023\u7D50\uFF08name \u306F\u51FA\u529B\u3057\u306A\u3044\uFF09 |\n| \u8A08\u7B97\u5217\u306E\u6307\u6570\u8868\u8A18\uFF08`1.25e+22` \u7B49\uFF09 | \u4E38\u3081\u306A\u3057\u3067 10 \u9032\u5C55\u958B\uFF08`12500000000000000000000`\u30021,024 \u6587\u5B57\u8D85\u306F error\uFF09 |\n| DATETIME | \u65E2\u5B9A\u306F kintone \u4FDD\u6301\u5F62\u5F0F\uFF08UTC ISO\uFF09\u306E\u307E\u307E\u3002`timezone` \u6307\u5B9A\u6642\u3060\u3051 offset \u4ED8\u304D ISO\uFF08\u30DF\u30EA\u79D2\u306F\u4FDD\u6301\uFF09 |\n| \u7A7A\u30FBNULL\u30FB\u6B20\u843D | \u7A7A\u6587\u5B57\uFF08round-trip \u3067\u533A\u5225\u4E0D\u80FD\uFF09 |\n| SUBTABLE / FILE | `ExportSinkUnsupportedColumnError`\uFF08\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F `APP$\u660E\u7D30` \u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3092 SELECT \u3059\u308B\u3002\u6DFB\u4ED8\u306F\u5BFE\u8C61\u5916\uFF09 |\n| \u578B\u4E0D\u660E\u306E\u5F0F\u5217 | JSON \u306B\u898B\u3048\u3066\u3082\u89E3\u91C8\u305B\u305A\u751F\u6587\u5B57\u5217 |\n\n**\u6587\u5B57\u30B3\u30FC\u30C9**: \u65E2\u5B9A UTF-8\uFF08BOM \u306A\u3057\uFF09\u3002Shift_JIS \u306F `/flow` \u3067\u306F `encoder: { encoding: "sjis", encode(text): Uint8Array }` \u3092\u6CE8\u5165\u3057\u3001\nencoder \u306F\u8868\u73FE\u4E0D\u80FD\u6587\u5B57\u3067 **throw \u3059\u308B\u7FA9\u52D9**\u3092\u8CA0\u3044\u307E\u3059\uFF08encoding-japanese / iconv-lite \u306F\u9ED9\u3063\u3066 `?` \u7F6E\u63DB\u3059\u308B\u305F\u3081\u3001encode \u2192 decode \u2192\n\u5B8C\u5168\u4E00\u81F4\u306E\u691C\u67FB\u3092 wrapper \u3067\u884C\u3046\uFF09\u3002CLI \u306F encoding-japanese \u3092 bundle \u3057\u540C\u3058\u691C\u67FB\u3067 fail-closed\uFF08\u6CE2\u30C0\u30C3\u30B7\u30E5 U+301C\u30FB\u5186\u8A18\u53F7 U+00A5\u30FB\n\u30DE\u30A4\u30CA\u30B9 U+2212 \u306A\u3069\u306F Shift_JIS \u306B\u5199\u305B\u305A error\u3002message \u306B\u884C\u756A\u53F7\u30FB\u5217\u540D\u30FBcode point \u3092\u542B\u3081\u3001cell \u5168\u6587\u306F\u542B\u3081\u306A\u3044\uFF09\u3002\n\n**CLI \u306E\u66F8\u8FBC\u307F**: \u5168 sink \u3092\u30E1\u30E2\u30EA\u4E0A\u3067 serialize \u3057\u3066\u304B\u3089\u3001target \u3068\u540C\u4E00 directory \u306E\u4E00\u6642 file \u3078\u5168\u91CF write \u2192 fsync \u2192 close \u2192 rename\u3002\n\u5931\u6557\u6642\u306F\u65E7 file \u3092\u7DAD\u6301\u3057\u4E00\u6642 file \u3092\u524A\u9664\u3057\u307E\u3059\uFF08Windows \u3067\u65E2\u5B58 file \u3092\u4ED6\u30D7\u30ED\u30BB\u30B9\u304C\u958B\u3044\u3066\u3044\u308B\u3068 `EPERM` \u3067\u5931\u6557\uFF1D\u65E7 file \u306E\u307E\u307E\uFF09\u3002\n\u8907\u6570 sink \u306E rename \u9014\u4E2D\u3067 process \u304C\u843D\u3061\u305F\u5834\u5408\u3060\u3051\u3001\u66F4\u65B0\u6E08\u307F\u3068\u672A\u66F4\u65B0\u306E file \u304C\u6DF7\u5728\u3057\u5F97\u307E\u3059\u3002\n\n**\u5B89\u5B9A code**: `ExportSinkInvalidNameError` / `ExportSinkDuplicateError` / `ExportSinkNotFoundError` / `ExportSinkInvalidTargetError` /\n`ExportSinkNotMaterializedError` / `ExportSinkExecutionIncompleteError` / `ExportSinkExecutionFailedError` / `ExportSinkDuplicateHeaderError` /\n`ExportSinkUnsupportedColumnError` / `ExportSinkInvalidValueError` / `ExportSinkInvalidTimezoneError` / `ExportSinkEncoderRequiredError` /\n`ExportSinkEncodingError` / `ExportSinkInvalidEncoderResultError`\uFF08CLI \u306E file \u5931\u6557\u306F `ExportSinkWriteError`\uFF09\u3002', uri: "ksql://language-reference/18-delete" }, "19-subtable-virtual-table": { heading: "19. \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB", text: "## 19. \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\n\n\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F `APP100$\u660E\u7D30` \u5F62\u5F0F\u306E\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3068\u3057\u3066\u64CD\u4F5C\u3067\u304D\u307E\u3059\u3002\n\n> **\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E `SELECT` \u306F\u3001\u89AA\u30EC\u30B3\u30FC\u30C9\u3092\u53D6\u5F97\u3057\u3066\u304B\u3089\u884C\u3078\u5C55\u958B\u3057\u307E\u3059**\uFF08\u5B9F\u6E2C\u30FBv3.55.0\uFF09\u3002\n> **\u53D6\u5F97\u91CF\u306F `WHERE` \u306E\u5185\u5BB9\u3067\u6C7A\u307E\u308A\u307E\u3059\u3002**\n>\n> ```\n> SELECT COUNT(*) FROM APP100 \u2192 fetch: COUNT_ONLY \uFF081 \u30EA\u30AF\u30A8\u30B9\u30C8\uFF09\n> SELECT COUNT(*) FROM APP100$\u660E\u7D30 \u2192 fetch: ALL \uFF08\u89AA\u3092\u5168\u4EF6\u53D6\u5F97\uFF09\n> SELECT * FROM APP100$\u660E\u7D30 WHERE _pid = 1 \u2192 fetch: ALL \uFF08\u5F8C\u8FF0\uFF09\n> SELECT * FROM APP100$\u660E\u7D30 WHERE _p.$id in (1, 2) \u2192 fetch: EXACT \uFF08\u89AA 2 \u4EF6\u3060\u3051\u53D6\u5F97\uFF09\n> ```\n>\n> **\u89AA\u9805\u76EE\u3060\u3051\u3067\u66F8\u3044\u305F `WHERE`\uFF08`_p.` \u4FEE\u98FE\uFF09\u306F kintone \u3078\u62BC\u3057\u4E0B\u3052\u307E\u3059**\uFF08v3.55.0\uFF09\u3002\n> **\u62BC\u3057\u4E0B\u304C\u3089\u306A\u3044\u306E\u306F\u6B21\u306E 3 \u3064**\u3067\u3001\u3044\u305A\u308C\u3082\u89AA\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\u3002\n>\n> - **\u660E\u7D30\u9805\u76EE\u306E\u6761\u4EF6**\uFF08`\u6570\u91CF > 10` \u306A\u3069\uFF09\u2014\u2014\u884C\u5358\u4F4D\u306E\u6761\u4EF6\u3067\u3001\u89AA\u3092\u7D5E\u308B\u6839\u62E0\u306B\u3067\u304D\u307E\u305B\u3093\n> - **\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5074\u306E\u30B7\u30B9\u30C6\u30E0\u5217**\uFF08`_pid` / `_rid` / `_idx`\uFF09\n> - **\u89AA\u9805\u76EE\u3068\u660E\u7D30\u9805\u76EE\u306E\u6DF7\u5728**\uFF08`WHERE` \u5168\u4F53\u3092\u5909\u63DB\u3067\u304D\u306A\u3044\u305F\u3081\uFF09\n>\n> **`COUNT(*)` \u3060\u3051\u3067\u3082\u89AA\u306E\u53D6\u5F97\u304C\u8981\u308A\u307E\u3059\u3002** kintone \u306E `totalCount` \u306F**\u89AA\u30EC\u30B3\u30FC\u30C9\u306E\u4EF6\u6570**\u3067\u3001\n> **\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u884C\u3092\u6570\u3048\u308B\u624B\u6BB5\u304C API \u306B\u3042\u308A\u307E\u305B\u3093**\u3002\u884C\u306F\u30EC\u30B3\u30FC\u30C9\u3092\u53D6\u5F97\u3057\u3066\u304B\u3089\u5C55\u958B\u3057\u307E\u3059\u3002\n>\n> **\u5927\u304D\u306A\u30A2\u30D7\u30EA\u3067\u306F `maxRecords` \u306B\u9054\u3057\u3066\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002**\n> **`_p.` \u3067\u89AA\u3092\u7D5E\u308C\u308B\u6761\u4EF6\u304C\u3042\u308B\u306A\u3089\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002** \u7121\u3044\u5834\u5408\u306F\u3001\u89AA\u30A2\u30D7\u30EA\u5074\u306E `SELECT` \u3067\n> \u5BFE\u8C61\u3092\u7D5E\u3063\u3066\u304B\u3089\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u3092\u6271\u3046\u5F62\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\u306A\u3069\uFF09\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n> **\u660E\u7D30\u9805\u76EE\u3092\u89AA\u30A2\u30D7\u30EA\u304B\u3089\u53C2\u7167\u3057\u305F\u3068\u304D\u306E\u6319\u52D5**\uFF08\u5B9F\u6E2C\u30FBv3.56.1\uFF09\u3002\n> **`DESCRIBE` \u306E `\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB` \u5217\u304C\u7A7A\u3067\u306A\u3044\u9805\u76EE**\u3092\u3001\u89AA\u30A2\u30D7\u30EA\u306E `SELECT` \u306B\u66F8\u3044\u305F\u5834\u5408\u3067\u3059\u3002\n>\n> **\u539F\u7406\u306F 1 \u3064\u3067\u3059\u2014\u2014\u5024\u3068\u3057\u3066\u51FA\u3059\u4F4D\u7F6E\u306A\u3089\u300C\u7A7A + \u8B66\u544A\u300D\u3001\u30AD\u30FC\u3068\u3057\u3066\u4F7F\u3046\u4F4D\u7F6E\u306A\u3089\u300C\u30A8\u30E9\u30FC\u300D\u3002**\n>\n> | \u66F8\u3044\u305F\u5834\u6240 | \u7D50\u679C |\n> |---|---|\n> | \u5C04\u5F71\uFF08`SELECT \u6570\u91CF`\uFF09 | **\u7A7A** + \u8B66\u544A |\n> | \u96C6\u8A08\uFF08`MAX(\u6570\u91CF)`\uFF09 | **\u7A7A** + \u8B66\u544A |\n> | `ORDER BY` | \u4E26\u3073\u306B\u5F71\u97FF\u305B\u305A + \u8B66\u544A |\n> | `HAVING`\uFF08`MAX(\u6570\u91CF) > 0`\uFF09 | \u7A7A\u3068\u3057\u3066\u8A55\u4FA1\u3055\u308C\u3001**\u9ED9\u3063\u3066 0 \u884C**\u306B\u306A\u308B + \u8B66\u544A |\n> | `GROUP BY` | **\u30A8\u30E9\u30FC**\uFF08\u3069\u306E\u8868\u304B\u3089\u96C6\u8A08\u3059\u308B\u304B\u6848\u5185\u3057\u307E\u3059\uFF09 |\n> | `ROLLUP` / `CUBE` / `GROUPING SETS` / `GROUPING()` | **\u30A8\u30E9\u30FC**\uFF08\u540C\u4E0A\uFF09 |\n> | `WHERE` | **kintone \u306E API \u30A8\u30E9\u30FC**\uFF08`GAIA_IQ07`\u3002kSQL \u306E\u6848\u5185\u306F\u51FA\u307E\u305B\u3093\uFF09 |\n>\n> **`GROUP BY` \u7CFB\u3060\u3051\u304C\u30A8\u30E9\u30FC\u306A\u306E\u306F\u3001\u305D\u306E\u9805\u76EE\u3092\u300C\u884C\u306E\u540C\u4E00\u6027\u300D\u306B\u4F7F\u3046\u305F\u3081**\u3067\u3059\u3002\u5024\u306F\u5E38\u306B\u7A7A\u306A\u306E\u3067\u3001\n> **\u5168\u30EC\u30B3\u30FC\u30C9\u304C 1 \u30B0\u30EB\u30FC\u30D7\u3078\u7573\u307E\u308C\u3001\u7D50\u679C\u305D\u306E\u3082\u306E\u304C\u7121\u610F\u5473**\u306B\u306A\u308A\u307E\u3059\u3002\n> \u5024\u3068\u3057\u3066\u51FA\u3059\u3060\u3051\u306E\u4F4D\u7F6E\u306F\u3001**\u7A7A\u3092\u51FA\u305B\u3070\u51E6\u7406\u304C\u6210\u7ACB\u3059\u308B**\u306E\u3067\u8B66\u544A\u306B\u3068\u3069\u3081\u3066\u3044\u307E\u3059\n> \uFF08\u30A8\u30E9\u30FC\u306B\u3059\u308B\u3068\u65E2\u5B58\u306E SQL \u304C\u58CA\u308C\u308B\u305F\u3081\uFF09\u3002\n>\n> **\u3068\u304F\u306B `HAVING` \u306F\u898B\u5206\u3051\u304C\u4ED8\u304D\u307E\u305B\u3093\u3002** `GROUP BY` \u7CFB\u306F\u6B62\u307E\u308A\u3001\u5C04\u5F71\u306F\u7A7A\u306E\u5217\u304C\u898B\u3048\u307E\u3059\u304C\u3001\n> **`HAVING` \u306F\u300C\u884C\u304C\u7121\u3044\u300D\u3060\u3051**\u3067\u3001**\u5206\u6790\u3068\u3057\u3066\u306F\u6B63\u5F53\u306A\u300C\u8A72\u5F53\u306A\u3057\u300D\u3068\u533A\u5225\u304C\u4ED8\u304D\u307E\u305B\u3093**\u3002\n> 0 \u884C\u304C\u8FD4\u3063\u305F\u3068\u304D\u306F\u3001**\u8B66\u544A\u304C\u51FA\u3066\u3044\u306A\u3044\u304B\u3092\u5FC5\u305A\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044**\u3002\n>\n> **`WHERE` \u3060\u3051\u306F kSQL \u304C\u5224\u5B9A\u305B\u305A\u3001kintone \u5074\u306E\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002**\n> \u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u300C\u30C6\u30FC\u30D6\u30EB\u306B\u8A2D\u5B9A\u3057\u3066\u3044\u308B\u5834\u5408\u3001\u2026\u6F14\u7B97\u5B50\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u300D\u3067\u3001\n> **\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u9805\u76EE\u3060\u3068\u306F\u8AAD\u3081\u307E\u3059\u304C\u3001\u3069\u3046\u76F4\u3059\u304B\u306F\u793A\u3055\u308C\u307E\u305B\u3093**\u3002\n> `APPn$<\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB>` \u304B\u3089\u66F8\u304D\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### \u30B7\u30B9\u30C6\u30E0\u5217\n\n| \u5217\u540D | \u610F\u5473 | \u6BD4\u8F03\u578B |\n|------|------|------|\n| `_pid` | \u89AA\u30EC\u30B3\u30FC\u30C9 ID\uFF08`$id`\uFF09 | \u6570\u5024 |\n| `_rid` | \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u884C ID | \u6587\u5B57\u5217 |\n| `_idx` | \u89AA\u30EC\u30B3\u30FC\u30C9\u5185\u306E\u884C\u9806\uFF080-based\uFF09 | \u6570\u5024 |\n\n- \u30B7\u30B9\u30C6\u30E0\u5217\u306F SELECT \u306E `WHERE` / `ORDER BY` \u3067\u53C2\u7167\u3067\u304D\u3001\u5168\u6BD4\u8F03\u6F14\u7B97\u5B50\u30FB`BETWEEN` / `IN` / `IS NULL` / `LIKE` \u306B\u5BFE\u5FDC\u3057\u307E\u3059\uFF08\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB SELECT \u306F\u5E38\u306B\u30ED\u30FC\u30AB\u30EB\u5168\u4EF6\u8A55\u4FA1\u306E\u305F\u3081 kintone \u3078\u306F\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\uFF09\u3002\n- \u6BD4\u8F03\u578B\u306F\u4E0A\u8868\u306E\u3068\u304A\u308A\u3067\u3001`_pid` / `_idx` \u306F\u6570\u5024\u3001`_rid` \u306F\u4E0D\u900F\u660E\u306A\u6587\u5B57\u5217\u3068\u3057\u3066\u6BD4\u8F03\u3057\u307E\u3059\uFF08\u4F8B: `_idx > 2` \u306F\u6570\u5024\u9806\u3001`_rid` \u306F\u8F9E\u66F8\u9806\uFF09\u3002\n- \u672A\u4FDD\u5B58\u884C\u3067\u306F `_rid` \u304C\u7A7A\u306E\u305F\u3081 `_rid IS NULL` \u304C\u771F\u306B\u306A\u308A\u307E\u3059\u3002\n- \u89AA\u9805\u76EE\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u7D4C\u7531\u306E `_p._pid` \u7B49\uFF08\u30B7\u30B9\u30C6\u30E0\u5217\u3092 `_p.` \u4FEE\u98FE\u3057\u305F\u5F62\uFF09\u306F\u7121\u52B9\u3067\u3059\u3002\n\n### \u89AA\u9805\u76EE\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\n\n- `_p.\u9805\u76EE\u540D` \u3067\u89AA\u9805\u76EE\u3092\u53C2\u7167\u53EF\u80FD\n- `_p.*` \u3067\u89AA\u9805\u76EE\u3092\u4E00\u62EC\u5C55\u958B\n- `SELECT *` \u306B\u306F `_p.*` \u3092\u6697\u9ED9\u8FFD\u52A0\u3057\u306A\u3044\n\n```sql\nSELECT _p.\u4F1D\u7968\u756A\u53F7, \u5546\u54C1\u30B3\u30FC\u30C9, \u6570\u91CF\nFROM APP100$\u660E\u7D30\nWHERE _pid = 123\n```\n\n### \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DML\n\n```sql\nINSERT INTO APP100$\u660E\u7D30 (_pid, \u5546\u54C1\u30B3\u30FC\u30C9, \u6570\u91CF) VALUES (123, 'A-001', 2)\n\nUPDATE APP100$\u660E\u7D30\nSET \u6570\u91CF = 5\nWHERE _pid = 123 AND _rid = '67890'\n\nDELETE FROM APP100$\u660E\u7D30\nWHERE _pid = 123 AND _rid = '67890'\n```\n\n- `UPDATE` / `DELETE` \u306F\u5B89\u5168\u306E\u305F\u3081 `_rid` \u6761\u4EF6\u3092\u5FC5\u9808\u3068\u3059\u308B\n\n---\n\n## 19.1 APPLY \u30D6\u30ED\u30C3\u30AF\uFF08\u30C6\u30FC\u30D6\u30EB\u5916\u30FB\u5185\u306E\u540C\u6642\u66F4\u65B0\uFF09\n\n`UPDATE` / `INSERT` / `UPSERT` \u306B `APPLY` \u30D6\u30ED\u30C3\u30AF\u3092\u4ED8\u3051\u308B\u3068\u3001**\u89AA\uFF08\u30C6\u30FC\u30D6\u30EB\u5916\uFF09\u9805\u76EE\u3068\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\uFF08\u30C6\u30FC\u30D6\u30EB\u5185\uFF09\u884C\u30921\u6587\uFF1D1 PUT \u30EC\u30B3\u30FC\u30C9\u3067\u540C\u6642\u306B\u66F4\u65B0**\u3067\u304D\u307E\u3059\u3002kintone \u306F\u66F8\u304D\u8FBC\u307F\u6642\u306B\u30EC\u30B3\u30FC\u30C9\u5168\u4F53\u3092\u518D\u691C\u8A3C\u3059\u308B\u305F\u3081\u3001\u30C6\u30FC\u30D6\u30EB\u5185\u306B\u65E2\u5B58\u9055\u53CD\u304C\u3042\u308B\u3068\u30C6\u30FC\u30D6\u30EB\u5916\u9805\u76EE\u3060\u3051\u306E `UPDATE` \u3082\u5931\u6557\u3057\u307E\u3059\u304C\u3001`APPLY` \u3067\u9055\u53CD\u30BB\u30EB\u3078\u59A5\u5F53\u306A\u5024\u3092\u540C\u6642\u306B\u30BB\u30C3\u30C8\u3057\u3066\u30EC\u30B3\u30FC\u30C9\u5168\u4F53\u3092 valid \u5316\u3059\u308B\u300C\u4FEE\u5FA9\u66F8\u304D\u8FBC\u307F\u300D\u304C\u53EF\u80FD\u306B\u306A\u308A\u307E\u3059\u3002\n\n```sql\nUPDATE APP100\nSET \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u78BA\u5B9A'\nWHERE $id = 5\nAPPLY \u660E\u7D30 (\n PATCH SET \u6570\u91CF = 0 WHERE \u6570\u91CF < 0; -- \u65E2\u5B58\u884C\u306E\u30BB\u30EB\u66F4\u65B0\n APPEND (\u5546\u54C1\u30B3\u30FC\u30C9, \u6570\u91CF) VALUES ('A-001', 1); -- \u884C\u8FFD\u52A0\n REMOVE WHERE \u5EC3\u756A = 'true' -- \u884C\u524A\u9664\n)\n```\n\n### \u64CD\u4F5C\n\n| \u64CD\u4F5C | \u610F\u5473 |\n|------|------|\n| `PATCH SET \u2026 {WHERE \u884C\u6761\u4EF6 \\| ALL ROWS \\| _idx = n \\| _rid = 'id'}` | \u65E2\u5B58\u884C\u306E\u30BB\u30EB\u66F4\u65B0\uFF08\u884C id\u30FB\u884C\u9806\u30FB\u672A\u6307\u5B9A\u30BB\u30EB\u3092\u4FDD\u6301\uFF09 |\n| `APPEND (\u5B50\u2026) VALUES (\u2026)` | \u884C\u8FFD\u52A0\uFF08\u672A\u6307\u5B9A\u306E\u5B50\u306F\u65E2\u5B9A\u5024\u3067\u660E\u793A\u88DC\u5B8C\uFF09 |\n| `REMOVE {WHERE \u884C\u6761\u4EF6 \\| _idx = n \\| _rid = 'id'}` | \u884C\u524A\u9664\uFF08\u5B58\u7D9A\u884C\u306F\u5168\u5217\u3092\u4FDD\u6301\uFF09 |\n\n- **\u591A\u5024\u30D5\u30A3\u30FC\u30EB\u30C9**\uFF08`CHECK_BOX` / `MULTI_SELECT` / `USER_SELECT` \u7B49\uFF09: `APPLY <\u591A\u5024> (ADD '\u5024'; REMOVE '\u5024')`\u3002\n- 1\u6587\u306B\u8907\u6570\u30C6\u30FC\u30D6\u30EB\uFF0F\u591A\u5024\u306E `APPLY` \u30D6\u30ED\u30C3\u30AF\u3092\u4F75\u8A18\u3067\u304D\u307E\u3059\u3002\n\n### \u884C\u30A2\u30C9\u30EC\u30C3\u30B7\u30F3\u30B0\u30FB\u884C\u6570\u8868\u660E\n\n- \u884C\u30BB\u30EC\u30AF\u30BF: `ALL ROWS`\uFF08**\u660E\u793A\u5FC5\u9808**\uFF09\u30FB`WHERE \u884C\u6761\u4EF6`\u30FB`_idx`\uFF080-based\uFF09\u30FB`_rid`\uFF08\u884C ID\uFF09\u3002\n- `EXPECT ROWS n | BETWEEN a AND b | AT LEAST n | AT MOST n` \u3067\u5BFE\u8C61\u884C\u6570\u3092\u8868\u660E\u3067\u304D\u3001\u4E0D\u4E00\u81F4\u306F\u66F8\u304D\u8FBC\u307F\u524D\u306B `ArgumentError`\u3002\n\n### \u610F\u5473\u8AD6\u30FB\u5B89\u5168\u30EB\u30FC\u30EB\n\n- **\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u610F\u5473\u8AD6**: \u30BB\u30EC\u30AF\u30BF\u3068\u53F3\u8FBA\u306F\u66F4\u65B0\u524D\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3067\u8A55\u4FA1\u3057\u3001\u540C\u4E00\u6587\u5185\u306E `APPEND` \u884C\u306F\u540C\u6587\u306E `PATCH`/`REMOVE` \u304B\u3089\u898B\u3048\u307E\u305B\u3093\u3002\n- **post-image \u691C\u8A3C**: \u5909\u7570\u5F8C\u306E\u30EC\u30B3\u30FC\u30C9\u5168\u4F53\u3092\u66F8\u304D\u8FBC\u307F\u524D\u306B\u691C\u8A3C\u3057\u3001\u9055\u53CD\u306F\u884C\u30ED\u30B1\u30FC\u30BF\u4ED8\u304D\u3067\u5831\u544A\u3057\u307E\u3059\u3002\n- **\u8907\u6570\u89AA**: \u89AA `WHERE` \u304C\u8907\u6570\u30EC\u30B3\u30FC\u30C9\u306B\u4E00\u81F4\u3059\u308B `UPDATE APPLY` \u306B\u5BFE\u5FDC\uFF081\u5BFE\u8C61\u89AA=1 PUT\u30FB100\u4EF6/\u30C1\u30E3\u30F3\u30AF\u30FB**\u975E\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3**\u30FB\u81EA\u52D5\u30EA\u30C8\u30E9\u30A4\u306A\u3057\u30FB\u90E8\u5206\u6210\u529F\u3042\u308A\uFF09\u3002`INSERT APPLY`\uFF08\u89AA\u4F5C\u6210\uFF0B\u521D\u671F\u884C\uFF09\u30FB`UPSERT APPLY`\uFF08`ON INSERT` / `ON UPDATE` \u5206\u5C90\uFF09\u3082\u53EF\u3002\n- **\u30AC\u30FC\u30C9**: revision \u30AC\u30FC\u30C9\u5FC5\u9808\u3002`dmlMaxRows`\uFF08\u89AA\u4EF6\u6570\uFF09\u3068 `dmlMaxSubtableRows`\uFF08\u5909\u66F4\u5B50\u884C\u6570\u30FB\u65E2\u5B9A500\uFF09\u306E\u4E8C\u91CD\u30AC\u30FC\u30C9\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u300C\u6700\u5927\u53D6\u5F97\u4EF6\u6570\u300D\u8A2D\u5B9A\u3092\u4E21\u30AC\u30FC\u30C9\u3078\u517C\u7528\u3057\u307E\u3059\u3002\n- **MCP**: \u3059\u3079\u3066\u306E `APPLY` mutation \u306F\u5B9F\u884C\u524D\u306B fail-closed\uFF08`allowDml` / `dmlMaxSubtableRows` \u3067\u3082\u89E3\u7981\u3055\u308C\u307E\u305B\u3093\uFF09\u3002`VALIDATE ONLY` / `EXPLAIN` \u306F\u8A31\u53EF\u3002\n\n---", uri: "ksql://language-reference/19-subtable-virtual-table" }, "20-reorder": { heading: "20. REORDER", text: "## 20. REORDER\n\n\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u884C\u3092\u89AA\u5358\u4F4D\u3067\u4E26\u3073\u66FF\u3048\u307E\u3059\u3002\n\n```sql\nREORDER APP100$\u660E\u7D30\nBY \u5546\u54C1\u30B3\u30FC\u30C9 ASC, \u7D0D\u671F DESC\nWHERE _pid = 123\n```\n\n\u5168\u4EF6\u5BFE\u8C61\u306E\u660E\u793A\u69CB\u6587:\n\n```sql\nREORDER ALL APP100$\u660E\u7D30\nBY \u5546\u54C1\u30B3\u30FC\u30C9 ASC\n```\n\n\u30EB\u30FC\u30EB:\n- `REORDER` \u306F `WHERE` \u5FC5\u9808\n- `REORDER ALL` \u306F `WHERE` \u4F75\u7528\u4E0D\u53EF\n- `_idx` \u306F\u53C2\u7167\u5C02\u7528\uFF08`UPDATE SET _idx = ...` \u4E0D\u53EF\uFF09\n- \u4E26\u3073\u66FF\u3048\u66F4\u65B0\u6642\u306F\u884C `id` \u306E\u307F\u9001\u4FE1\u3057\u3001\u884C\u5024\u306F\u518D\u9001\u3057\u306A\u3044\uFF08\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7\u518D\u8A55\u4FA1\u5F71\u97FF\u3092\u6291\u5236\uFF09\n\n---", uri: "ksql://language-reference/20-reorder" }, "21-subqueries": { heading: "21. \u30B5\u30D6\u30AF\u30A8\u30EA", text: "## 21. \u30B5\u30D6\u30AF\u30A8\u30EA\n\n### \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\uFF08SELECT \u5217\u30FBHAVING\uFF09\n\nSELECT \u5217\u3084 HAVING \u53E5\u3067\u3082 1 \u884C 1 \u5217\u3092\u8FD4\u3059\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- SELECT \u5217: \u5168\u4EF6\u6570\u30FB\u5408\u8A08\u3092\u3059\u3079\u3066\u306E\u884C\u306B\u4ED8\u52A0\nSELECT\n \u9867\u5BA2\u540D,\n \u91D1\u984D,\n (SELECT COUNT(*) FROM APP100) AS \u7DCF\u4EF6\u6570,\n (SELECT SUM(\u91D1\u984D) FROM APP100) AS \u5408\u8A08\u91D1\u984D\nFROM APP100\nWHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86'\n\n-- HAVING \u3067\u30B5\u30D6\u30AF\u30A8\u30EA\nSELECT \u62C5\u5F53\u8005, SUM(\u91D1\u984D) AS \u5408\u8A08\nFROM APP100\nGROUP BY \u62C5\u5F53\u8005\nHAVING SUM(\u91D1\u984D) > (SELECT AVG(\u91D1\u984D) FROM APP100) * 2\n```\n\n\u5217\u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u7701\u7565\u3057\u305F\u5834\u5408\u306F `(subquery)` \u304C\u5217\u540D\u306B\u306A\u308A\u307E\u3059\u3002\n\n### \u30B5\u30D6\u30AF\u30A8\u30EA\u4E00\u89A7\n\n| \u69CB\u6587 | \u8A18\u8FF0\u7B87\u6240 | \u5099\u8003 |\n|---|---|---|\n| `IN (SELECT ...)` | WHERE | 1 \u5217\u76EE\u306E\u5024\u30BB\u30C3\u30C8\u3092 IN \u30EA\u30B9\u30C8\u3068\u3057\u3066\u4F7F\u7528 |\n| `NOT IN (SELECT ...)` | WHERE | \u9664\u5916\u6761\u4EF6 |\n| `EXISTS (SELECT ...)` | WHERE | 1 \u4EF6\u4EE5\u4E0A\u8FD4\u305B\u3070\u771F |\n| `NOT EXISTS (SELECT ...)` | WHERE | 0 \u4EF6\u306A\u3089\u771F |\n| `(SELECT ...)` | WHERE \u53F3\u8FBA\u30FBSELECT \u5217\u30FBHAVING \u53F3\u8FBA | \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\uFF081 \u884C 1 \u5217\u3002GROUP BY \u306A\u3057\u306E\u96C6\u8A08\u306F 0 \u4EF6\u3067\u3082 1 \u884C\u3092\u8FD4\u3059\u3002**\u623B\u308A\u5024\u306F\u95A2\u6570\u3054\u3068** \u2014 \xA78\uFF09 |\n\n**\u5171\u901A\u5236\u7D04:**\n- **\u975E\u76F8\u95A2\u306E\u307F\u5BFE\u5FDC** \u2014 \u5916\u5074\u30C6\u30FC\u30D6\u30EB\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\n- \u3059\u3079\u3066 FULL_SCAN \u30E2\u30FC\u30C9\u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u81EA\u4F53\u3082 SIMPLE / FULL_SCAN \u3092\u81EA\u52D5\u5224\u5B9A\u3057\u307E\u3059\n- \u30B5\u30D6\u30AF\u30A8\u30EA\u306F 1 \u56DE\u3060\u3051\u5B9F\u884C\u3055\u308C\u3001\u5168\u884C\u306B\u540C\u3058\u7D50\u679C\u304C\u9069\u7528\u3055\u308C\u307E\u3059\n\n---", uri: "ksql://language-reference/21-subqueries" }, "22-limitations": { heading: "22. \u5236\u9650\u4E8B\u9805", text: "## 22. \u5236\u9650\u4E8B\u9805\n\n### \u6B63\u898F\u8868\u73FE\u306E\u9069\u7528\u9650\u754C\n\n`REGEXP_LIKE` / `REGEXP_REPLACE` / `REGEXP_SUBSTR` \u306B\u5B89\u5168\u6027\u30B2\u30FC\u30C8\u3084\u5B9F\u884C\u6642\u9593\u5236\u9650\u306F\u3042\u308A\u307E\u305B\u3093\u3002ReDoS \u3067\u540C\u671F\u51E6\u7406\u304C\u66B4\u8D70\u3059\u308B\u3068 kSQL \u81EA\u8EAB\u304B\u3089\u306F\u4E2D\u65AD\u3067\u304D\u307E\u305B\u3093\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u30BF\u30D6\u5F37\u5236\u7D42\u4E86\u3001CLI \u306F Ctrl+C\u3001MCP \u306F\u30D7\u30ED\u30BB\u30B9\u518D\u8D77\u52D5\u3067\u5FA9\u65E7\u3057\u307E\u3059\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u306F\u540C\u3058\u30BF\u30D6\u306E\u672A\u4FDD\u5B58\u7DE8\u96C6\u3068 SQL\u3001MCP \u3067\u306F\u540C\u4E00\u30D7\u30ED\u30BB\u30B9\u306E\u5168\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u5DFB\u304D\u8FBC\u307F\u307E\u3059\u3002\n\nECMAScript \u6B63\u898F\u8868\u73FE\u306F\u30DB\u30B9\u30C8\u306E\u30D6\u30E9\u30A6\u30B6\uFF0FNode \u3068\u305D\u306E\u7248\u306B\u4F9D\u5B58\u3057\u307E\u3059\u3002`\\p{}`\u3001Unicode \u30E2\u30FC\u30C9\u3068 `i` \u306E case folding\u3001\u65B0\u69CB\u6587\u306E\u53D7\u7406\u53EF\u5426\u306A\u3069\u306F\u540C\u3058 SQL \u3067\u3082\u9762\u3054\u3068\u306B\u7570\u306A\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u7D50\u679C\u3092 `UPDATE SET` \u307E\u305F\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\u306E `UPDATE ... FROM` \u3067\u4FDD\u5B58\u3059\u308B\u3068\u3001\u305D\u306E\u5DEE\u304C\u4FDD\u5B58\u30C7\u30FC\u30BF\u3078\u6B8B\u308B\u305F\u3081\u3001\u66F8\u304D\u623B\u3057\u74B0\u5883\u3092\u56FA\u5B9A\u3057\u3066\u4E8B\u524D\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### \u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u306A\u3044\u69CB\u6587\n\n| \u6A5F\u80FD | \u72B6\u6CC1 |\n|------|------|\n| \u76F8\u95A2\u30B5\u30D6\u30AF\u30A8\u30EA | \u975E\u5BFE\u5FDC\uFF08\u975E\u76F8\u95A2 IN/EXISTS \u306F\u5BFE\u5FDC\uFF09 |\n| INTERSECT / EXCEPT | \u975E\u5BFE\u5FDC |\n| \u518D\u5E30 CTE | \u5BFE\u5FDC\uFF08read-only \u306E `WITH RECURSIVE`\u3001`UNION ALL` 2\u679D\u3001\u5358\u4E00\u81EA\u5DF1 `INNER JOIN`\u3001\u4EFB\u610F\u306E\u5358\u4E00\u5217 `CYCLE`\u3002\u518D\u5E30 DML source\u30FB\u76F8\u4E92/\u591A\u91CD\u518D\u5E30\u30FBpath \u516C\u958B\u306A\u3069\u306F\u975E\u5BFE\u5FDC\uFF09 |\n| FULL OUTER JOIN | \u975E\u5BFE\u5FDC |\n| UPDATE \u306E\u6C4E\u7528 JOIN | \u975E\u5BFE\u5FDC\uFF08`UPDATE ... FROM` \u306E `$id`\uFF0F\u6587\u5B57\u5217\uFF081\u884C\uFF09\uFF0F\u6570\u5024\u30AD\u30FC\u306B\u3088\u308B\u5358\u4E00\u7B49\u5024\u306E\u307F\u5BFE\u5FDC\uFF09 |\n| \u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3 | kintone API \u306E\u5236\u7D04\u306B\u3088\u308A\u975E\u5BFE\u5FDC\uFF08\u30D0\u30C3\u30C1\u5B9F\u884C\u3082\u975E\u30A2\u30C8\u30DF\u30C3\u30AF\uFF09 |\n| DML \u3092\u542B\u3080\u30D0\u30C3\u30C1\uFF08\u8907\u6587\uFF09 | \u5BFE\u5FDC\uFF08`ksql_mutate` / CLI `--allow-dml` / \u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u6587\u3054\u3068\u306E\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\u3002\u5E38\u306B fail-fast\u3002\u2192 [\xA725](#25-\u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB)\uFF09 |\n| \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u306E DML | \u975E\u5BFE\u5FDC\uFF08`CREATE TEMP TABLE ... AS SELECT` / `DROP TEMP TABLE` \u306E\u307F\uFF09 |\n| `ASSERT` \u306E\u8907\u5408\u6761\u4EF6\uFF08`AND` / `OR`\uFF09 | \u975E\u5BFE\u5FDC\uFF08\u8907\u6570\u306E `ASSERT` \u6587\u306B\u5206\u3051\u3066\u66F8\u304F\u3002\u2192 [\xA726](#26-assert)\uFF09 |\n| \u30D0\u30C3\u30C1\u5909\u6570\u306E\u9AD8\u5EA6\u306A\u5229\u7528 | `SET @x = (SELECT ...)`\u3001`DECLARE @x = default`\u3001SELECT \u5B9A\u6570\u5217 `@x AS alias`\u3001\u6587\u5B57\u5217\u914D\u5217 `SET @list=['A','B']` \u3068 `IN @list`\u3001CLI/MCP \u5916\u90E8\u6CE8\u5165\u306B\u5BFE\u5FDC\u3002`NULL` \u4EE3\u5165\u30FB\u30B5\u30D6\u30AF\u30A8\u30EA\u7D50\u679C\u3078\u306E\u7B97\u8853\u306F\u73FE\u6642\u70B9\u3067\u975E\u5BFE\u5FDC\uFF08\u2192 [\xA725 \u30D0\u30C3\u30C1\u5909\u6570](#25-\u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB)\uFF09 |\n| \u66F8\u304D\u8FBC\u307F\u7CFB API\uFF08POST / PUT / DELETE\uFF09\u306E\u81EA\u52D5\u30EA\u30C8\u30E9\u30A4 | \u975E\u5BFE\u5FDC\uFF08\u5FDC\u7B54\u55AA\u5931\u6642\u306E\u4E8C\u91CD\u5B9F\u884C\u3092\u907F\u3051\u308B\u305F\u3081\u3002\u30EA\u30C8\u30E9\u30A4\u306F GET \u7CFB\u9650\u5B9A \u2014 \u5BFE\u8C61: 408/429/502/503/504\u3002\u5FC5\u8981\u306A\u3089\u547C\u3073\u51FA\u3057\u5074\u3067\u51AA\u7B49\u306A\u518D\u5B9F\u884C\uFF08UPSERT \u7B49\uFF09\u3092\u8A2D\u8A08\u3059\u308B\uFF09 |\n| `DELETE` \u3067\u306E `APP@profile`\uFF08CLI \u62E1\u5F35\uFF09 | \u672A\u5BFE\u5FDC\uFF08`ArgumentError: @profile is not supported for DELETE yet.`\uFF09 |\n| **\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u30FB\u4F5C\u696D\u8005\u306E UPDATE** | **\u5BFE\u8C61\u5916**\uFF08`/k/v1/records/status.json` \u304C\u5FC5\u8981\u306A\u305F\u3081\uFF09 |\n\n### \u5B9F\u884C\u30E2\u30FC\u30C9\n\nkSQL \u306F\u4EE5\u4E0B\u306E\u6761\u4EF6\u306B\u5FDC\u3058\u3066\u81EA\u52D5\u7684\u306B\u5B9F\u884C\u30E2\u30FC\u30C9\u3092\u5207\u308A\u66FF\u3048\u307E\u3059\u3002\n\n| \u6761\u4EF6 | \u30E2\u30FC\u30C9 |\n|------|--------|\n| JOIN \u306A\u3057\u3001GROUP BY \u306A\u3057\u3001DISTINCT \u306A\u3057\u3001WHERE/ORDER BY \u306B\u95A2\u6570\u30FB\u7B97\u8853\u5F0F\u306A\u3057 | **SIMPLE\u5019\u88DC**\uFF08\u578B\xD7\u6F14\u7B97\u5B50\u80FD\u529B\u3068ORDER planner\u3067\u6700\u7D42\u6C7A\u5B9A\uFF09 |\n| JOIN \u3042\u308A / GROUP BY \u3042\u308A / DISTINCT / WHERE \u306B\u95A2\u6570\u30FB\u7B97\u8853\u5F0F\u30FBCASE WHEN / ORDER BY \u306B\u7B97\u8853\u5F0F | **FULL_SCAN**\uFF08JS \u51E6\u7406\u3002JOIN \u306E\u5B89\u5168\u306A\u5358\u4E00 alias \u8FF0\u8A9E\u306A\u3069\u3001\u5BFE\u5FDC\u3059\u308B prefilter \u306F records API \u3078\u62BC\u3057\u4E0B\u3052\u308B\uFF09 |\n| WHERE \u306B IN (SELECT) / EXISTS / NOT EXISTS / \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA | **FULL_SCAN** |\n| SELECT \u5217\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA | **FULL_SCAN** |\n| SELECT \u5217\u306B\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570 | **FULL_SCAN** |\n| UNION / UNION ALL | **FULL_SCAN** |\n| WITH \u53E5\uFF08\u5358\u7D14 CTE\uFF09\u2014 \u30A4\u30F3\u30E9\u30A4\u30F3\u5316\u3055\u308C\u308B | **SIMPLE**\uFF08kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\uFF09 |\n| WITH \u53E5\uFF08GROUP BY \u3042\u308A\u306E CTE\u30FB\u8907\u6570 CTE\u30FBCTE JOIN\uFF09 | **FULL_SCAN** |\n| WITH RECURSIVE | **FULL_SCAN**\uFF08\u53C2\u7167\u7269\u7406 source \u3092\u5B8C\u5168\u5B9F\u4F53\u5316\u3057\u3001\u4E09\u5883\u754C\u3092\u5E38\u6642\u9069\u7528\uFF09 |\n\nFULL_SCAN \u30E2\u30FC\u30C9\u306F\u5927\u91CF\u30EC\u30B3\u30FC\u30C9\u306E\u5834\u5408\u3001\u6642\u9593\u304C\u304B\u304B\u308A\u307E\u3059\u3002\n\n### \u53D6\u5F97\u4EF6\u6570\u306E\u4E0A\u9650\n\n- \u30A8\u30F3\u30B8\u30F3\u65E2\u5B9A\u5024: **10,000 \u4EF6**\n- CLI \u65E2\u5B9A\u5024: **500 \u4EF6**\uFF08`--max-records` \u3067\u5909\u66F4\u53EF\u80FD\uFF09\n- JOIN / GROUP BY / DISTINCT \u306F client \u5074\u51E6\u7406\u306E\u305F\u3081\u5927\u91CF\u30C7\u30FC\u30BF\u3067\u306F\u6642\u9593\u304C\u304B\u304B\u308A\u307E\u3059\u3002INNER JOIN \u306E\u5BFE\u5FDC\u8FF0\u8A9E\u306F\u5404 APP \u3078\u62BC\u3057\u4E0B\u3052\u3066\u53D6\u5F97\u4EF6\u6570\u3092\u6E1B\u3089\u3057\u307E\u3059\u304C\u3001\u62BC\u3057\u4E0B\u3052\u3089\u308C\u306A\u3044 APP \u306F\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\n- \u30ED\u30FC\u30AB\u30EB`ORDER BY`\u3067\u4E0A\u9650\u306B\u9054\u3057\u305F\u5834\u5408\u3001`truncate`\u8A2D\u5B9A\u3067\u3082\u8AA4\u3063\u305Ftop-N\u3092\u8FD4\u3055\u305A\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\n\n### \u7B97\u8853\u306F\u6D6E\u52D5\u5C0F\u6570\u70B9\uFF08IEEE 754 \u500D\u7CBE\u5EA6\uFF09\n\n- \u7B97\u8853\u5F0F\u30FB\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u30FB\u96C6\u8A08\uFF08SUM/AVG\uFF09\u306F\u500D\u7CBE\u5EA6\u6D6E\u52D5\u5C0F\u6570\u70B9\u3067\u8A55\u4FA1\u3057\u307E\u3059\u3002\u5C0F\u6570\u306E\u8868\u73FE\u8AA4\u5DEE\uFF08`3000 * 1.1` = `3300.0000000000005`\uFF09\u30FB\u6709\u52B9\u6841 15\u301C17 \u6841\u30FB**\u7A7A\u30BB\u30EB= 0 \u6271\u3044**\u306E\u5236\u7D04\u304C\u3042\u308A\u307E\u3059\u3002\u8A73\u7D30\u3068\u56DE\u907F\u7B56\u306F \xA73\u300C\u7B97\u8853\u306E\u7CBE\u5EA6\u3068\u7A7A\u30BB\u30EB\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\n- \u53D6\u5F97\u3057\u305F\u6570\u5024\u305D\u306E\u3082\u306E\u306F\u6587\u5B57\u5217\u306E\u307E\u307E\u4FDD\u6301\u3059\u308B\u305F\u3081\u3001\u7B97\u8853\u3092\u901A\u3055\u306A\u3051\u308C\u3070\u6841\u843D\u3061\u3057\u307E\u305B\u3093\n\n### JOIN \u306E\u7B49\u5024\u7D50\u5408\u306E\u307F\u5BFE\u5FDC\n\n```sql\n-- OK: \u7B49\u5024\u7D50\u5408\nON a.\u9867\u5BA2ID = b.\u9867\u5BA2ID\n\n-- NG: \u7BC4\u56F2\u7D50\u5408\u30FB\u4E0D\u7B49\u5024\u7D50\u5408\u306F\u975E\u5BFE\u5FDC\nON a.\u91D1\u984D > b.\u4E0B\u9650\u91D1\u984D\n```\n\n### INSERT / UPDATE \u306E\u5024\n\n\u6587\u5B57\u5217\u30FB\u6570\u5024\uFF08`-5` / `+5` \u306E\u3088\u3046\u306A\u7B26\u53F7\u4ED8\u304D\u6570\u5024\u3092\u542B\u3080\uFF09\u30FB\u914D\u5217\u30EA\u30C6\u30E9\u30EB `[...]` \u304C\u6307\u5B9A\u53EF\u80FD\u3067\u3059\u3002INSERT / UPSERT VALUES \u306E\u7B26\u53F7\u76F4\u5F8C\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3001UPDATE SET \u306E\u5358\u9805 `+` \u3082\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u76F4\u524D\u3060\u3051\u3067\u3059\u3002\n\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u30FB\u7D44\u7E54\u9078\u629E\u30FB\u30B0\u30EB\u30FC\u30D7\u9078\u629E\u30FB\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30FB\u8907\u6570\u9078\u629E\u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u66F8\u304D\u8FBC\u307F\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3092 `getFields()` \u3067\u81EA\u52D5\u53D6\u5F97\u3057\u3066\u5909\u63DB\uFF09\u3002\n\n\u4EE5\u4E0B\u306F\u5F15\u304D\u7D9A\u304D\u975E\u5BFE\u5FDC\u3067\u3059:\n\n| \u30D5\u30A3\u30FC\u30EB\u30C9\u578B | \u72B6\u6CC1 |\n|---|---|\n| \u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\uFF08FILE\uFF09 | \u30D0\u30A4\u30CA\u30EA\u9001\u4FE1\u304C\u5225 API \u306E\u305F\u3081\u975E\u5BFE\u5FDC |\n| CREATOR / MODIFIER | kintone API \u3067\u66F4\u65B0\u4E0D\u53EF |\n| SUBTABLE | \u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\uFF08`APP100$\u660E\u7D30`\uFF09\u3067\u64CD\u4F5C |\n\n### LIKE \u306E\u6319\u52D5\n\nLIKE\u306F\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u306E\u6709\u7121\u306B\u304B\u304B\u308F\u3089\u305A\u5E38\u306BJavaScript\u3067\u8A55\u4FA1\u3057\u3001kintone\u3078\u62BC\u3057\u4E0B\u3052\u307E\u305B\u3093\u3002\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u306A\u3057\u306FkSQL\u72EC\u81EA\u306E\u90E8\u5206\u4E00\u81F4\uFF08`includes`\uFF09\u3067\u3059\u3002\u901A\u5E38\u306E\u89AA\u30EC\u30B3\u30FC\u30C9DML\u3067\u306FLIKE\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08**\u4F8B\u5916**: v3.10.0 \u4EE5\u964D\u3001APPLY \u8907\u6570\u89AA `UPDATE` \u306E\u89AA WHERE \u3067\u306F LIKE \u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF1D\u5B89\u5168\u30D7\u30EC\u30D5\u30A3\u30EB\u30BF\u3067\u53D6\u5F97\u5F8C\u306B\u5143 WHERE \u3092 JS \u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\u901A\u5E38\u306E\u89AA UPDATE/DELETE \u3067\u306F KLIKE \u306E\u307F\u4F7F\u7528\u3067\u304D LIKE \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF09\u3002\u8A73\u7D30\u306F\u300CLIKE / NOT LIKE\uFF08\u90E8\u5206\u4E00\u81F4\u30FB\u9664\u5916\uFF09\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n---", uri: "ksql://language-reference/22-limitations" }, "23-ui-features": { heading: "23. UI \u6A5F\u80FD", text: '## 23. UI \u6A5F\u80FD\n\n### \u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\n\nkintone API \u306E\u30A8\u30E9\u30FC\u306F\u308F\u304B\u308A\u3084\u3059\u304F\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u30D5\u30A3\u30FC\u30EB\u30C9\u30EC\u30D9\u30EB\u306E\u30A8\u30E9\u30FC\u3082\u5C55\u958B\u3057\u3066\u8868\u793A\u3057\u307E\u3059\u3002\n\n```\n\u26A0 \u5165\u529B\u5185\u5BB9\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\n records[0].\u9867\u5BA2\u30E9\u30F3\u30AF.value: "V"\u306F\u9078\u629E\u80A2\u306B\u3042\u308A\u307E\u305B\u3093\u3002\n\n\u26A0 \u6307\u5B9A\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u9867\u5BA2\u30E9\u30F3\u30AF\uFF09\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\n```\n\n### \u5B9F\u884C\u5C65\u6B74\n\n- \u5B9F\u884C\u3057\u305F SQL \u306F\u81EA\u52D5\u7684\u306B\u5C65\u6B74\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3059\n- **\u30A8\u30E9\u30FC\u306B\u306A\u3063\u305F SQL \u3082\u4FDD\u5B58\u3055\u308C\u307E\u3059**\uFF08\u4FEE\u6B63\u30FB\u518D\u5B9F\u884C\u304C\u3057\u3084\u3059\u304F\u306A\u308A\u307E\u3059\uFF09\n- \u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u305F\u5834\u5408\u306F\u4FDD\u5B58\u3055\u308C\u307E\u305B\u3093\n- \u300C\u5C65\u6B74 \u25BC\u300D\u30DC\u30BF\u30F3\u304B\u3089\u904E\u53BB\u306E SQL \u3092\u9078\u629E\u3057\u3066\u518D\u5B9F\u884C\u3067\u304D\u307E\u3059\n\n---', uri: "ksql://language-reference/23-ui-features" }, "24-explain": { heading: "24. EXPLAIN", text: "## 24. EXPLAIN\n\n`EXPLAIN` \u3092\u5148\u982D\u306B\u4ED8\u3051\u308B\u3068\u3001schema-aware\u306A\u5B9F\u884C\u8A08\u753B\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3068\u3001canonical STATUS\u9806\u306B\u5FC5\u8981\u306A\u5834\u5408\u3060\u3051\u30D7\u30ED\u30BB\u30B9\u72B6\u614B\u5B9A\u7FA9\u3092\u8AAD\u307F\u307E\u3059\u3002\u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u30FB\u66F8\u304D\u8FBC\u307FAPI\u306F\u547C\u3073\u307E\u305B\u3093\u3002\n\n`EXPLAIN` \u306F SELECT\u30FBGROUP BY\u30FB\u96C6\u8A08\u5F15\u6570\u30FBCASE\u30FB\u95A2\u6570\u5F15\u6570\u30FBORDER BY\u30FB\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u5217\u540D\u3082\u3001\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3068\u7A81\u304D\u5408\u308F\u305B\u307E\u3059\u3002\u5B58\u5728\u3057\u306A\u3044\u5217\u306F\u5B9F\u884C\u6642\u3068\u540C\u3058 `ArgumentError: unknown field code(s): <\u5217> (<source label>)` \u3067\u5931\u6557\u3057\u307E\u3059\uFF08v3.79.0\u301C\uFF09\u3002\u5BFE\u8C61\u306F\u3001WHERE \u306E\u578B\u4ED8\u304D\u8FF0\u8A9E\u30FBORDER BY\u30FBGROUP BY \u306A\u3069\u3001`EXPLAIN` \u304C\u8A08\u753B\u4F5C\u6210\u306E\u305F\u3081\u306B\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3092\u8AAD\u3080\u6587\u3067\u3059\u3002`SELECT COUNT(*) FROM APP100` \u3084\u3001\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3092\u5FC5\u8981\u3068\u3057\u306A\u3044\u5358\u7D14\u306A SELECT \u5217\u3060\u3051\u306E\u6587\u3067\u306F\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u306E\u53D6\u5F97\u3092\u5897\u3084\u3055\u305A\u3001\u5B58\u5728\u3057\u306A\u3044\u5217\u306F\u5F93\u6765\u3069\u304A\u308A\u5B9F\u884C\u6642\u306B\u691C\u51FA\u3057\u307E\u3059\u3002\n\n```sql\nEXPLAIN SELECT * FROM APP100 WHERE \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u5B8C\u4E86'\nEXPLAIN UPDATE APP100 SET \u72B6\u614B = '\u5B8C\u4E86' WHERE $id = 1\nEXPLAIN DELETE FROM APP100 WHERE $id = 1\nEXPLAIN INSERT INTO APP100 (\u9867\u5BA2\u540D) VALUES ('A\u793E')\nEXPLAIN UPSERT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D) VALUES ('C001', 'A\u793E') ON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\nEXPLAIN REORDER APP100$\u660E\u7D30 BY \u5546\u54C1\u30B3\u30FC\u30C9 ASC WHERE _pid = 1\nEXPLAIN VALIDATE APP100\nEXPLAIN IMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D) FROM CSV customers BY NAME\n```\n\n### \u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\n\n- `SELECT` / `WITH` / `INSERT` / `UPDATE` / `DELETE` / `UPSERT` / `REORDER` / `VALIDATE` / `IMPORT`\n\n### \u5236\u7D04\n\n- `EXPLAIN SHOW APPS` \u306A\u3069\u3001\u4E0A\u8A18\u4EE5\u5916\u306E\u6587\u306F\u975E\u5BFE\u5FDC\u3067\u3059\n- `EXPLAIN CREATE TEMP TABLE ... AS SELECT ...` \u306F\u975E\u5BFE\u5FDC\u3067\u3059\u3002`AS` \u4EE5\u964D\u306E\n `SELECT`\uFF08\u307E\u305F\u306F `WITH`\uFF09\u3092\u5358\u4F53\u3067 `EXPLAIN` \u3059\u308B\u3068\u3001\u540C\u3058\u53D6\u5F97\u30FBJOIN \u8A08\u753B\u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\n- \u5B9F\u30C7\u30FC\u30BF\u306E\u53D6\u5F97\u30FB\u66F4\u65B0\u306F\u884C\u3044\u307E\u305B\u3093\uFF08metadata API\u306E\u307F\uFF09\n- \u5BFE\u8C61\u30A2\u30D7\u30EA\u306E\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3092\u8AAD\u3081\u308B\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002schema\u53D6\u5F97\u306B\u5931\u6557\u3057\u305F\u5834\u5408\u3001\u63A8\u5B9ASIMPLE\u3068\u3057\u3066\u6210\u529F\u3055\u305B\u305A\u5143\u306E\u8A8D\u8A3C\u30FB\u901A\u4FE1\u30A8\u30E9\u30FC\u3092\u8FD4\u3057\u307E\u3059\n- `order plan`\u306F`CANONICAL_LOCAL`\uFF0F`CANONICAL_REST_TOP_N`\uFF0F`KORDER_NATIVE`\u3092\u8868\u793A\u3057\u307E\u3059\n- **`EXPLAIN` \u306F `warnings` \u3092\u8FD4\u3057\u307E\u305B\u3093**\uFF08\u5E38\u306B\u7A7A\u914D\u5217\uFF09\u3002**\u5B9F\u884C\u6642\u306E\u8B66\u544A\u306F\u5B9F\u884C\u3057\u306A\u3044\u3068\u51FA\u307E\u305B\u3093**\u2014\u2014\n \u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u65E2\u5B9A\u30D5\u30EC\u30FC\u30E0\uFF08`RANGE`\uFF09\u3084 `ORDER BY` \u304C\u5168\u9806\u5E8F\u3067\u306A\u3044\u65E8\u306E\u8B66\u544A\u306F\u3001\n \u8A08\u753B\u4E0A\u306F `frame:` / `window ...:` \u306E\u884C\u306B\u73FE\u308C\u307E\u3059\u304C\u3001**`warnings` \u306B\u306F\u5165\u308A\u307E\u305B\u3093**\u3002\n **\u300C`EXPLAIN` \u304C\u901A\u3063\u305F\u304B\u3089\u8B66\u544A\u306F\u7121\u3044\u300D\u3068\u306F\u8AAD\u3081\u307E\u305B\u3093\u3002**\n\n### \u672A\u89E3\u6C7A\u5024\u3068\u8907\u6587\u306E\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\n\nEXPLAIN \u306F\u3001SQL \u672C\u6587\u304B\u3089\u9759\u7684\u306B\u8A3C\u660E\u3067\u304D\u308B\u60C5\u5831\u3068\u3001\u5B9F\u884C\u6642\u306B\u3057\u304B\u6C7A\u307E\u3089\u306A\u3044\u60C5\u5831\u3092\u533A\u5225\u3057\u307E\u3059\u3002\n\u672A\u89E3\u6C7A\u60C5\u5831\u3092\u5B9F\u5024\u30FB\u7A7A schema\u30FB0 \u884C\u3068\u3057\u3066\u63A8\u6E2C\u305B\u305A\u3001`deferred` \u307E\u305F\u306F `runtime` \u3068\u8868\u793A\u3057\u307E\u3059\u3002\n`deferred` \u306F\u8A08\u753B\u6642\u306B\u78BA\u5B9A\u3067\u304D\u306A\u3044\u3068\u3044\u3046\u610F\u5473\u3067\u3042\u308A\u3001\u5B9F\u884C\u6210\u529F\u3092\u4FDD\u8A3C\u3059\u308B\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n\n- `GENERATE_SERIES` \u306E\u5F15\u6570\u306B\u4F7F\u3046\u6CE8\u91C8\u306A\u3057 `DECLARE` \u306E\u65E2\u5B9A\u5024\u304C\u6587\u5B57\u5217\u307E\u305F\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u306A\u3089\u3001\n \u7CFB\u5217\u5F15\u6570\u306B\u9650\u3063\u3066\u65E2\u5B9A\u5024\u306B\u57FA\u3065\u304F\u6761\u4EF6\u4ED8\u304D\u8A08\u753B\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u7CFB\u5217\u578B\u30FB\u63A8\u5B9A\u884C\u6570\u3068\u3068\u3082\u306B\n `DECLARE default`\u3001\u5916\u90E8\u6CE8\u5165\u6642\u306F\u8A08\u753B\u304C\u5909\u308F\u308A\u5F97\u308B\u65E8\u3092\u8868\u793A\u3057\u3001start/stop \u306E\u65E2\u5B9A\u5B9F\u5024\u3084\n \u5916\u90E8\u6CE8\u5165\u5024\u306F\u8868\u793A\u3057\u307E\u305B\u3093\u3002`SET`\u3001\u95A2\u6570\u3001\u7B97\u8853\u3001\u30B5\u30D6\u30AF\u30A8\u30EA\u306A\u3069\u5B9F\u884C\u6642\u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u5024\u3092\u542B\u3080\u7CFB\u5217\u306F\u3001\n `series type: deferred (variable)`\u3001`rows: runtime` \u306B\u306A\u308A\u307E\u3059\u3002WHERE\u3001IN\u3001KLIKE\u3001SELECT \u5217\u306A\u3069\n \u7CFB\u5217\u4EE5\u5916\u306E\u5909\u6570\u7528\u9014\u306F\u5F93\u6765\u3069\u304A\u308A placeholder/candidate \u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002\n- \u8907\u6587\u306E dry-run / batch EXPLAIN \u3067\u306F\u3001\u5148\u884C\u3059\u308B `CREATE TEMP TABLE ... AS SELECT` \u306E\u660E\u793A\u51FA\u529B\u5217\u3092\n \u884C\u3092\u5B9F\u4F53\u5316\u305B\u305A\u9759\u7684 schema \u3068\u3057\u3066\u8A18\u9332\u3057\u307E\u3059\u3002\u5F8C\u7D9A\u306E\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\u306F schema \u306E producer \u6587\u756A\u53F7\u3001\n `rows: runtime`\u3001`static schema / runtime rows` \u3092\u8868\u793A\u3057\u3001\u901A\u5E38\u306E `GROUP BY` planner \u304C\u305D\u306E schema \u3092\n \u4F7F\u7528\u3057\u307E\u3059\u3002`DROP TEMP TABLE` \u5F8C\u306F schema \u3082\u7834\u68C4\u3055\u308C\u307E\u3059\u3002wildcard \u306A\u3069 metadata \u306A\u3057\u3067\u306F\u5B89\u5168\u306B\n \u5217\u3092\u6C7A\u3081\u3089\u308C\u306A\u3044\u5F62\u306F\u7A7A schema \u306B\u305B\u305A `deferred (temp table schema)` \u3068\u8868\u793A\u3057\u307E\u3059\u3002\n\n\u3069\u3061\u3089\u306E\u7D4C\u8DEF\u3082 records API \u306F\u547C\u3070\u305A\u3001\u901A\u5E38\u5B9F\u884C\u30FBvalidate \u306E\u5909\u6570\u89E3\u6C7A\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5B9F\u4F53\u5316\u3001\n\u7CFB\u5217\u691C\u8A3C\u3001GROUP BY \u691C\u8A3C\u306E\u610F\u5473\u306F\u5909\u66F4\u3057\u307E\u305B\u3093\u3002\n\n### \u51FA\u529B\u306E\u8AAD\u307F\u65B9\n\n\u8A08\u753B\u306F\u6B21\u306E 3 \u3064\u306E\u554F\u3044\u306B\u7B54\u3048\u307E\u3059\u3002**\u3069\u306E\u884C\u3092\u8AAD\u3080\u304B\u306F\u3001\u77E5\u308A\u305F\u3044\u3053\u3068\u3067\u6C7A\u307E\u308A\u307E\u3059\u3002**\n\n| \u77E5\u308A\u305F\u3044\u3053\u3068 | \u8AAD\u3080\u884C |\n|---|---|\n| **kintone \u304B\u3089\u4F55\u4EF6\u53D6\u308A\u306B\u884C\u304F\u304B** | `fetch:`\uFF08\u30BD\u30FC\u30B9\u3054\u3068\uFF09\uFF0F`fetch summary:`\uFF08\u6587\u3054\u3068\uFF09 |\n| **\u9014\u4E2D\u3067\u6B62\u307E\u3089\u306A\u3044\u304B** | `complete input:`\uFF0F`search abort:`\uFF0F`onLimit=truncate:` |\n| **\u3069\u306E\u6761\u4EF6\u304C\u62BC\u3057\u4E0B\u304C\u3063\u305F\u304B** | `kintone query:`\uFF0F`pushdown applied:`\uFF0F`pushdown candidate:`\uFF0F`relation:` |\n\n#### \u26A0 `mode:` \u306F\u53D6\u5F97\u91CF\u3067\u306F\u3042\u308A\u307E\u305B\u3093\n\n`mode:` \u306F**\u30A8\u30F3\u30B8\u30F3\u5185\u90E8\u306E\u8A55\u4FA1\u6226\u7565\u540D**\u3067\u3059\u3002`FULL_SCAN` \u306F\u300C\u53D6\u5F97\u3057\u305F\u30EC\u30B3\u30FC\u30C9\u3092\nJS \u3067\u5168\u884C\u8A55\u4FA1\u3059\u308B\u300D\u3068\u3044\u3046\u610F\u5473\u3067\u3001**\u300C\u5168\u4EF6\u53D6\u5F97\u3059\u308B\u300D\u3068\u3044\u3046\u610F\u5473\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002**\n\n**`GROUP BY` \u3084\u96C6\u8A08\u3092\u542B\u3080\u30AF\u30A8\u30EA\u306F\u3001\u7D5E\u308A\u8FBC\u307F\u304C\u52B9\u3044\u3066\u3044\u3066\u3082 `FULL_SCAN` \u306B\u306A\u308A\u307E\u3059\u3002**\n\u53D6\u5F97\u91CF\u306F `fetch:` \u306E\u884C\u3067\u5224\u65AD\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n```\nmode: FULL_SCAN\nkintone query: \u78BA\u5EA6 in (\"A\")\nfetch: PREFILTERED (\u672A\u78BA\u5B9A) \u2190 \u7D5E\u308A\u8FBC\u307F\u306F\u52B9\u3044\u3066\u3044\u308B\n```\n\n#### `fetch:` \u2014 \u305D\u306E\u30BD\u30FC\u30B9\u304B\u3089\u4F55\u3092\u53D6\u308A\u306B\u884C\u304F\u304B\n\n| \u5024 | \u610F\u5473 |\n|---|---|\n| `NONE` | **kintone \u304B\u3089\u53D6\u5F97\u3059\u308B\u30BD\u30FC\u30B9\u304C\u7121\u3044\u6587**\u3067\u3059\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3060\u3051\u3092\u53C2\u7167\u3059\u308B\u6587\u306A\u3069\uFF09\u3002\u3053\u306E\u5024\u306F\u69CB\u9020\u5316\u3055\u308C\u305F `plan` \u306B\u306E\u307F\u73FE\u308C\u3001\u30C6\u30AD\u30B9\u30C8\u3067\u306F `fetch:` / `fetch summary:` \u3092\u8868\u793A\u3057\u307E\u305B\u3093 |\n| `COUNT_ONLY` | **\u30EC\u30B3\u30FC\u30C9\u3092\u8D70\u67FB\u3057\u307E\u305B\u3093**\uFF08`COUNT(*)` \u3092 `totalCount` \u306E\u5358\u767A GET \u3067\u89E3\u304F\u5834\u5408\u306A\u3069\uFF09\u3002\u4EF6\u6570\u306B\u95A2\u4FC2\u306A\u304F **1 \u30EA\u30AF\u30A8\u30B9\u30C8**\u3067\u3001\u8EE2\u9001\u3055\u308C\u308B\u306E\u306F `limit 1` \u306E 1 \u4EF6\u3060\u3051\u3067\u3059\uFF08`metrics.fetchedRows` \u306F 1\uFF09\u3002**\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E `COUNT(*)` \u306F\u3053\u308C\u306B\u306A\u308A\u307E\u305B\u3093**\uFF08`totalCount` \u306F\u89AA\u30EC\u30B3\u30FC\u30C9\u306E\u4EF6\u6570\u306E\u305F\u3081\u3002\u2192 [\xA719](#19-\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB)\uFF09 |\n| `EXACT` | `WHERE` \u5168\u4F53\u3092 kintone \u5074\u3067\u7D5E\u308A\u8FBC\u307F\u3001**JS \u3067\u306E\u8FFD\u52A0\u8A55\u4FA1\u306F\u3042\u308A\u307E\u305B\u3093** |\n| `PREFILTERED` | **\u4E00\u90E8\u306E\u8FF0\u8A9E\u3060\u3051**\u3092 kintone \u5074\u3067\u7D5E\u308A\u8FBC\u307F\u3001\u6B8B\u308A\u306F JS \u3067\u8A55\u4FA1\u3057\u307E\u3059 |\n| `ALL` | **\u5168\u4EF6\u53D6\u5F97**\u3057\u307E\u3059 |\n\n\u63A5\u5C3E\u8F9E\u304C\u4ED8\u304F\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n\n- `(limit N)` \u2014 \u62BC\u3057\u4E0B\u3052\u305F\u30AF\u30A8\u30EA\u304C `limit` \u3092\u4F34\u3044\u307E\u3059\uFF08\u4E0A\u4F4D N \u4EF6\u30FB`KORDER BY` \u306A\u3069\uFF09\n- `(\u672A\u78BA\u5B9A)` \u2014 **\u5B9F\u884C\u6642\u306E\u578B\u30FB\u9078\u629E\u80A2\u306E\u5B9F\u5728\u78BA\u8A8D\u3067\u3001\u7D5E\u308A\u8FBC\u307F\u304C\u843D\u3061\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002**\n \u843D\u3061\u305F\u5834\u5408\u306F\u5168\u4EF6\u53D6\u5F97\u306B\u306A\u308A\u307E\u3059\n\n**`fetch summary:` \u306F\u6587\u5168\u4F53\u306E\u6700\u60AA\u5024**\u3067\u3059\uFF08`NONE` < `COUNT_ONLY` < `EXACT` < `PREFILTERED` < `ALL`\uFF09\u3002\nkintone \u304B\u3089\u53D6\u5F97\u3059\u308B\u30BD\u30FC\u30B9\u304C 1 \u3064\u3082\u7121\u3044\u6587\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3060\u3051\u3092\u53C2\u7167\u3059\u308B\u6587\u306A\u3069\uFF09\u3067\u306F\u51FA\u307E\u305B\u3093\u3002\n\n> **\u540C\u3058 `WHERE` \u3067\u3082\u3001\u30AF\u30A8\u30EA\u306E\u5F62\u304C\u9055\u3048\u3070 `fetch` \u306E\u5024\u306F\u5909\u308F\u308A\u307E\u3059\u3002**\n>\n> ```\n> SELECT COUNT(*) FROM APP100 WHERE \u62C5\u5F53\u8005 in ('user1')\n> \u2192 COUNT_ONLY \uFF08\u62BC\u3057\u4E0B\u3052\u306F\u52B9\u3044\u3066\u3044\u308B\u304C\u3001\u8D70\u67FB\u3057\u306A\u3044\u306E\u3067 COUNT_ONLY \u304C\u512A\u5148\u3055\u308C\u308B\uFF09\n>\n> SELECT \u533A\u5206, COUNT(*) FROM APP100 WHERE \u62C5\u5F53\u8005 in ('user1') GROUP BY \u533A\u5206\n> \u2192 PREFILTERED \uFF08\u540C\u3058 WHERE\u30FB\u540C\u3058\u62BC\u3057\u4E0B\u3052\u3002\u8D70\u67FB\u3059\u308B\u306E\u3067 PREFILTERED\uFF09\n> ```\n>\n> **\u62BC\u3057\u4E0B\u3052\u304C\u52B9\u3044\u3066\u3044\u308B\u304B\u3092\u6BD4\u3079\u308B\u3068\u304D\u306F\u3001\u3059\u3079\u3066\u540C\u3058\u5F62\u3067\u6E2C\u3063\u3066\u304F\u3060\u3055\u3044\u3002**\n> \u5F62\u3092\u6DF7\u305C\u305F\u8868\u3092\u4F5C\u308B\u3068\u3001**\u62BC\u3057\u4E0B\u3052\u306E\u5DEE\u3067\u306F\u306A\u304F\u5F62\u306E\u5DEE**\u3092\u8AAD\u3093\u3067\u3057\u307E\u3044\u307E\u3059\n> \uFF08`COUNT_ONLY` \u306E\u884C\u3060\u3051 `SELECT COUNT(*)` \u3067\u6E2C\u308B\u3001\u306A\u3069\uFF09\u3002\n\n#### \u53D6\u5F97\u306E\u3055\u308C\u65B9\u306F\u30BD\u30FC\u30B9\u3054\u3068\u306B\u9055\u3044\u307E\u3059\n\n`JOIN` \u3084 `UNION` \u3067\u306F\u3001**\u540C\u3058\u30AF\u30A8\u30EA\u306E\u4E2D\u3067\u30BD\u30FC\u30B9\u3054\u3068\u306B\u53D6\u5F97\u306E\u3055\u308C\u65B9\u304C\u5909\u308F\u308A\u307E\u3059\u3002**\n\u3060\u304B\u3089 `fetch:` \u306F\u30BD\u30FC\u30B9\u5358\u4F4D\uFF08`app:` / `JOIN:` / `[union:n]` / CTE\uFF09\u3067\u51FA\u307E\u3059\u3002\n\n```\n[union:1]\n mode: COUNT_TOTAL_COUNT\n fetch: COUNT_ONLY (limit 1) \u2190 1 \u4EF6\u3060\u3051\u8EE2\u9001\u3057\u3001\u8D70\u67FB\u3057\u306A\u3044\n\n[union:2]\n mode: FULL_SCAN\n fetch: ALL \u2190 \u5168\u4EF6\u53D6\u5F97\n```\n\n#### \u5B89\u5168\u5074\u306B\u5012\u3057\u3066\u3044\u307E\u3059\n\n\u5206\u985E\u306B\u8FF7\u3044\u304C\u3042\u308B\u5834\u5408\u306F\u3001**\u3088\u308A\u591A\u304F\u53D6\u5F97\u3059\u308B\u5074**\uFF08`EXACT` \u3088\u308A `PREFILTERED`\u3001\n`PREFILTERED` \u3088\u308A `ALL`\uFF09\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u300C\u7D5E\u308A\u8FBC\u307F\u6E08\u307F\u300D\u3068\u8868\u793A\u3057\u3066\u5B9F\u969B\u306F\u5168\u4EF6\u3060\u3063\u305F\u3001\n\u3068\u3044\u3046\u8AA4\u308A\u3092\u907F\u3051\u308B\u305F\u3081\u3067\u3059\u3002\n\n#### \u6A5F\u68B0\u7684\u306B\u8AAD\u3080\u5834\u5408\n\n**\u8A08\u753B\u672C\u6587\u306E\u6587\u5B57\u5217\u3092\u89E3\u6790\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002**engine \u30E9\u30A4\u30D6\u30E9\u30EA\u3067\u306F\n`explainQuery()` \u306E\u7D50\u679C\u306E `plan` \u306B\u540C\u3058\u5185\u5BB9\u304C\u69CB\u9020\u3067\u5165\u308A\u307E\u3059\n\uFF08\u2192 [\u30A8\u30F3\u30B8\u30F3\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u5229\u7528\u30AC\u30A4\u30C9](ksql_engine_library.md)\uFF09\u3002\n\n`fetch:` / `fetch summary:` / `mode:` / `kintone query:` \u306F\u5B89\u5B9A\u3057\u305F\u8AAD\u307F\u3069\u3053\u308D\u3067\u3059\u304C\u3001\n**\u305D\u308C\u4EE5\u5916\u306E\u8A3A\u65AD\u884C\u306F\u5B9F\u88C5\u306E\u8A73\u7D30**\u3067\u3042\u308A\u3001\u4E88\u544A\u306A\u304F\u5897\u6E1B\u3057\u307E\u3059\u3002\n\n---", uri: "ksql://language-reference/24-explain" }, "25-batch-temp-tables": { heading: "25. \u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB", text: "## 25. \u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\n\n> **CLI\uFF08`-e` / `-f` / `--console`\uFF09\u3001MCP\uFF08`ksql_query` / `ksql_validate` /\n> `ksql_mutate` / `ksql_explain`\uFF09\u3001engine \u30E9\u30A4\u30D6\u30E9\u30EA\u306E `runBatch()` \u3067\u5229\u7528\u53EF\u80FD**\u3067\u3059\u3002\n> \u30D7\u30E9\u30B0\u30A4\u30F3 UI \u3082\u30D0\u30C3\u30C1\u306B\u5BFE\u5FDC\u3057\uFF08DML \u3092\u542B\u3080\u30D0\u30C3\u30C1\u3082\u5B9F\u884C\u53EF\u80FD\uFF09\u3001\u6700\u5F8C\u306B\u7D50\u679C\u30BB\u30C3\u30C8\u3092\n> \u8FD4\u3057\u305F\u6587\uFF08\u901A\u5E38\u306F\u6700\u7D42 SELECT\uFF09\u3060\u3051\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u8A73\u7D30\u4ED5\u69D8\u306F\n> [ksql_batch_temp_table_spec.md](internal/ksql_batch_temp_table_spec.md) \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n>\n> **\u30EA\u30E9\u30F3\u53EF\u80FD\u306A\u5DEE\u5206\u66F4\u65B0\u30D0\u30C3\u30C1\u306E\u8A2D\u8A08\u30D1\u30BF\u30FC\u30F3**\uFF08\u30B9\u30C6\u30FC\u30BF\u30B9\u99C6\u52D5\u30FB\u4EF6\u6570\u30B2\u30FC\u30C8\u30FB\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u30FB\u30D0\u30C3\u30C1\u5909\u6570\u306E\u6D3B\u7528\uFF09\u306F [ksql_batch_recipes.md](ksql_batch_recipes.md) \u306B\u307E\u3068\u3081\u3066\u3044\u307E\u3059\u3002\n\n### engine \u30E9\u30A4\u30D6\u30E9\u30EA\u3067\u5229\u7528\u3067\u304D\u308B\u69CB\u6587\n\n| API | \u69CB\u6587 |\n|---|---|\n| `runQuery()` | \u5358\u6587\u306E `SELECT` / `WITH` / `UNION [ALL]` / `SHOW APPS` / `DESCRIBE` / `DESC` / \u65E2\u5B58\u30EC\u30B3\u30FC\u30C9 `VALIDATE` |\n| `runBatch()` | \u4E0A\u8A18\u3001`CREATE TEMP TABLE ... AS SELECT/WITH` / `DROP TEMP TABLE` / `SET` / `DECLARE` / `ASSERT` / `EXPLAIN` |\n| `explainQuery()` | \u5358\u6587\u306E `SELECT` / `WITH` / `UNION [ALL]` |\n\nengine \u30E9\u30A4\u30D6\u30E9\u30EA\u306F read-only \u5C02\u7528\u3067\u3059\u3002\u66F8\u304D\u8FBC\u307F DML\u3001DML `VALIDATE ONLY`\u3001\n`IMPORT`\u3001`APPLY` \u306F\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093\u3002`runBatch()` \u306F\u6587\u304C1\u3064\u3067\u3082\u5931\u6557\u3057\u305F\u3089 throw \u3057\u3001\n\u90E8\u5206\u7D50\u679C\u3092\u8FD4\u3057\u307E\u305B\u3093\u3002\u6210\u529F\u7D50\u679C\u306B `ok` \u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u306A\u304F\u3001\u5931\u6557\u3057\u305F\u6587\u306F error \u306E\n`statementIndex` / `statementType` \u3067\u7279\u5B9A\u3057\u307E\u3059\u3002\u3053\u308C\u306F\u90E8\u5206\u7D50\u679C\u304C\u5B8C\u5168\u306A\u7D50\u679C\u3068\u3057\u3066\n\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30ED\u30B8\u30C3\u30AF\u3078\u6D41\u308C\u8FBC\u3080\u4E8B\u6545\u3092\u9632\u3050\u305F\u3081\u3067\u3059\u3002\n\n`results[]` \u306E\u5404 `metrics` \u306F\u6587\u5225\u8A08\u6E2C\u3067\u306F\u306A\u304F\u3001\u540C\u4E00\u306E**\u30D0\u30C3\u30C1\u5168\u4F53\u96C6\u8A08\u5024**\u3067\u3059\u3002\n\u6587\u3054\u3068\u306E\u6027\u80FD\u30B3\u30B9\u30C8\u3068\u3057\u3066\u89E3\u91C8\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002API \u3068\u578B\u306E\u8A73\u7D30\u306F\n[\u30A8\u30F3\u30B8\u30F3\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u5229\u7528\u30AC\u30A4\u30C9](ksql_engine_library.md)\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### \u8907\u6587\uFF08\u30D0\u30C3\u30C1\uFF09\n\n`;` \u533A\u5207\u308A\u3067\u8907\u6570\u306E SQL \u6587\u30921\u56DE\u306E\u547C\u3073\u51FA\u3057\u3067**\u9806\u6B21**\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF08\u6700\u5927 20 \u6587\uFF09\u3002\n\n```sql\nSELECT \u90E8\u9580 FROM APP100;\nSELECT \u90E8\u9580 FROM APP200;\n```\n\n- read-only \u6587\u306E\u307F\u306E\u30D0\u30C3\u30C1\u306F `ksql_query` / CLI / \u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u305D\u306E\u307E\u307E\u5B9F\u884C\u3057\u307E\u3059\u3002**DML \u3092\u542B\u3080\u30D0\u30C3\u30C1**\u306F `ksql_mutate`\uFF08`dmlMaxRows` \u306F\u6587\u3054\u3068 + \u4EFB\u610F\u306E `dmlTotalMaxRows` \u3067\u5408\u8A08\u30AC\u30FC\u30C9\uFF09\u3001CLI `--allow-dml`\uFF08\u78BA\u8A8D\u30D7\u30ED\u30F3\u30D7\u30C8\u306F\u30D0\u30C3\u30C1\u5168\u4F53\u30671\u56DE\u3001`--yes` \u3067\u30B9\u30AD\u30C3\u30D7\uFF09\u3001\u307E\u305F\u306F\u30D7\u30E9\u30B0\u30A4\u30F3\uFF08\u6587\u3054\u3068\u306E\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\uFF09\u3067\u5B9F\u884C\u3057\u307E\u3059\u3002DML \u30D0\u30C3\u30C1\u306F\u5E38\u306B fail-fast \u3067\u3059\n- SELECT-based DML\uFF08`INSERT INTO APPxxx ... SELECT` / `UPSERT INTO APPxxx ... SELECT ... ON DUPLICATE`\uFF09\u306E\u30BD\u30FC\u30B9\u306F **APP\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FB\u4E21\u8005\u306E\u6DF7\u5728\uFF08JOIN\u30FB\u30B5\u30D6\u30AF\u30A8\u30EA\uFF09\u306E\u3044\u305A\u308C\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059**\u3002\u4EF6\u6570\u306B\u306F\u66F8\u304D\u8FBC\u307F\u524D\u306E\u78BA\u8A8D\u3067 `dmlMaxRows` \u304C\u9069\u7528\u3055\u308C\uFF08UPSERT \u306F insert + update \u306E**\u5408\u8A08**\uFF09\u3001\u8D85\u904E\u6642\u306F\u5F53\u8A72\u6587\u30BC\u30ED\u66F8\u304D\u8FBC\u307F\u3067\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\n- SELECT-based DML \u306E\u8AAD\u307F\u53D6\u308A\u4E0A\u9650\u306F\u30BD\u30FC\u30B9\u7A2E\u985E\u3054\u3068\u306B\u7570\u306A\u308A\u307E\u3059: **APP \u30BD\u30FC\u30B9\u306E\u8AAD\u307F\u53D6\u308A\u306F `maxRecords` \u306E\u901A\u5E38\u89E3\u6C7A\u5024\uFF08`KSQL_MAX_RECORDS` / profile \u306E `query.maxRecords`\u3001\u65E2\u5B9A 500 \u4EF6\uFF09**\uFF08\u8D85\u904E\u306F\u66F8\u304D\u8FBC\u307F\u524D\u306E\u5B89\u5168\u5074\u30A8\u30E9\u30FC\u3002JOIN \u306E APP \u5074\u3082\u540C\u69D8\u3002`dmlMaxRows` \u306F\u5F71\u97FF\u884C\u6570\u30AC\u30FC\u30C9\u5C02\u7528\u3067\u8AAD\u307F\u53D6\u308A\u3092\u7D5E\u308A\u307E\u305B\u3093\uFF09\u3001**\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306F\u5B9F\u4F53\u5316\u4E0A\u9650 \u65E2\u5B9A 10,000 \u884C\uFF08`tempTableMaxRows` \u3067\u5909\u66F4\u53EF\uFF09**\u3002UPSERT \u7CFB\u3067\u306F\u66F8\u304D\u8FBC\u307F\u5148\u30A2\u30D7\u30EA\u3078\u306E\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u7167\u5408\u8AAD\u307F\u53D6\u308A\u304C**\u30BD\u30FC\u30B9\u7A2E\u985E\u306B\u95A2\u308F\u3089\u305A**\u767A\u751F\u3057\u307E\u3059\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306B\u5B9F\u4F53\u5316\u3057\u3066\u3082\u56DE\u907F\u3055\u308C\u307E\u305B\u3093\uFF09\n- \u5B9F\u884C\u524D\u306B\u5168\u6587\u3092\u691C\u8A3C\u3057\u30011\u6587\u3067\u3082\u4E0D\u6B63\u306A\u3089\u30D0\u30C3\u30C1\u5168\u4F53\u3092\u62D2\u5426\u3057\u307E\u3059\uFF08validate-all-first\uFF09\n- \u65E2\u5B9A\u306F fail-fast\uFF08\u30A8\u30E9\u30FC\u6587\u4EE5\u964D\u306F\u30B9\u30AD\u30C3\u30D7\uFF09\u3002`--continue-on-error`\uFF08CLI\uFF09/ `continueOnError`\uFF08MCP\uFF09\u3067\u30A8\u30E9\u30FC\u5F8C\u306E\u7D9A\u884C\u3092\u9078\u3079\u307E\u3059\n- \u7D50\u679C\u306F\u6587\u3054\u3068\u306B `success` / `error` / `skipped` \u3068\u3057\u3066\u5831\u544A\u3055\u308C\u307E\u3059\n\n### \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\n\n`CREATE TEMP TABLE #\u540D\u524D AS SELECT ...` \u3067 SELECT \u7D50\u679C\u3092\u30D0\u30C3\u30C1\u5185\u306B\u5B9F\u4F53\u5316\u3057\u3001\u5F8C\u7D9A\u306E\u6587\u304B\u3089 `FROM` / `JOIN` / \u30B5\u30D6\u30AF\u30A8\u30EA\u3067\u53C2\u7167\u3067\u304D\u307E\u3059\u3002\n\n`CREATE TEMP TABLE ... AS SELECT` \u306E\u5B9F\u884C\u6642\u8B66\u544A\uFF08\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u65E2\u5B9A\u30D5\u30EC\u30FC\u30E0\u306A\u3069\uFF09\u306F\u3001\u305D\u306E\u6587\u306E\u7D50\u679C\u306E `warnings` \u306B\u8F09\u308A\u307E\u3059\uFF08v3.79.0\u301C\uFF09\u3002\u5F8C\u6BB5\u3067\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u53C2\u7167\u3059\u308B\u6587\u306B\u306F\u3001\u3053\u306E\u8B66\u544A\u306F\u91CD\u8907\u3057\u3066\u8F09\u308A\u307E\u305B\u3093\u3002\n\nsource \u306F `SELECT` \u3068 `WITH` \u306E\u3069\u3061\u3089\u3067\u3082\u3001\u305D\u306E SELECT \u306E `WHERE` \u5168\u4F53\u3092 kintone \u30AF\u30A8\u30EA\u3078 exact \u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u5834\u5408\u306B\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u7269\u7406\u30A2\u30D7\u30EA\u540C\u58EB\u306E INNER JOIN \u3082\u3001JOIN \u306E\u5168\u5165\u529B\u304C alias \u4ED8\u304D\u7269\u7406 APP \u3067\u7B2C5-W / \u7B2C5-L \u3092\u6E80\u305F\u305B\u3070\u3001server-only \u95A2\u6570\u3067\u7D5E\u3063\u3066\u304B\u3089\u5B9F\u4F53\u5316\u3067\u304D\u307E\u3059\u3002\n\n\u4E00\u65B9\u3001**\u5165\u529B\u306B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u304C1\u3064\u3067\u3082\u3042\u308C\u3070\u6587\u5168\u4F53\u304C server-only \u95A2\u6570\u306E\u5BFE\u8C61\u5916**\u3067\u3059\u3002\n\u95A2\u6570\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5217\u3078\u66F8\u304B\u306A\u3051\u308C\u3070\u3088\u3044\u3001\u3068\u3044\u3046\u610F\u5473\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002JOIN \u76F8\u624B\u306E\n\u7269\u7406\u30A2\u30D7\u30EA\u5074\u3078\u95A2\u6570\u3092\u7F6E\u3044\u3066\u3082 `..._CONTEXT_UNSUPPORTED` \u3067\u62D2\u5426\u3055\u308C\u307E\u3059\u3002\n\n```sql\n-- OK: \u7269\u7406\u30A2\u30D7\u30EA\u540C\u58EB\u3092 JOIN \u3057\u3001\u95A2\u6570\u3067\u7D5E\u3063\u3066\u304B\u3089\u5B9F\u4F53\u5316\u3059\u308B\nCREATE TEMP TABLE #\u5F53\u6708 AS\n SELECT d.\u9867\u5BA2No AS k, d.\u58F2\u4E0A, c.\u696D\u7A2E\n FROM APP100 d INNER JOIN APP200 c ON d.\u9867\u5BA2No = c.\u9867\u5BA2No\n WHERE d.\u53D7\u6CE8\u65E5 = THIS_MONTH();\n\n-- NG: \u5B9F\u4F53\u5316\u5F8C\u3002\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u304C\u5165\u529B\u306B\u3042\u308B\u305F\u3081\u3001\u95A2\u6570\u3092\u7269\u7406 APP \u5074\u3078\u7F6E\u3044\u3066\u3082\u62D2\u5426\nCREATE TEMP TABLE #x AS\n SELECT \u9867\u5BA2No, \u53D7\u6CE8\u65E5 FROM APP100;\nSELECT *\nFROM #x a INNER JOIN APP200 c ON a.\u9867\u5BA2No = c.\u9867\u5BA2No\nWHERE c.\u53D7\u6CE8\u65E5 = THIS_MONTH();\n```\n\n\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306F\u5229\u7528\u8005\u30A2\u30D7\u30EA\u306E\u30D7\u30ED\u30BB\u30B9\u5185\u30E1\u30E2\u30EA\u3078\u5B9F\u4F53\u5316\u3055\u308C\u307E\u3059\u30021\u8868\u306E\u4E0A\u9650\u306F\n`tempTableMaxRows`\uFF08\u65E2\u5B9A10,000\u884C\uFF09\u3067\u3001\u8D85\u904E\u306F `truncate` \u6307\u5B9A\u3067\u3082 error \u3067\u3059\u3002\n\u540C\u6642\u306B\u5B58\u5728\u3067\u304D\u308B\u306E\u306F\u6700\u592716\u8868\u3067\u3001`DROP TEMP TABLE` \u3059\u308B\u3068\u540C\u3058\u30D0\u30C3\u30C1\u5185\u3067\u67A0\u3092\u518D\u5229\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\n-- \u76F8\u95A2\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u56DE\u907F\u4F8B\nCREATE TEMP TABLE #latest AS\nSELECT \u9867\u5BA2ID, MAX(\u53D7\u6CE8\u65E5) AS \u6700\u65B0\u53D7\u6CE8\u65E5\nFROM APP300\nGROUP BY \u9867\u5BA2ID;\n\nSELECT a.\u9867\u5BA2\u540D, t.\u6700\u65B0\u53D7\u6CE8\u65E5\nFROM APP100 a\nINNER JOIN #latest t ON a.\u9867\u5BA2ID = t.\u9867\u5BA2ID;\n```\n\n> **\u6CE8\u610F**: \u4E0A\u8A18\u306E `MAX(\u53D7\u6CE8\u65E5)` \u306F\u3001`APP300` \u306E\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u304B\u3089 DATE \u578B\u3092\u89E3\u6C7A\u3057\u3066\u6700\u65B0\u65E5\u3092\u8FD4\u3057\u307E\u3059\u3002\u4E00\u6642\u30C6\u30FC\u30D6\u30EB/CTE\u3078\u578B\u30E1\u30BF\u304C\u4F1D\u64AD\u3059\u308B\u305F\u3081\u3001`SELECT MAX(\u6700\u65B0\u53D7\u6CE8\u65E5) FROM #latest` \u306E\u3088\u3046\u306A\u518D\u96C6\u7D04\u3067\u3082\u65E5\u6642\u306E\u8F9E\u66F8\u9806\u6BD4\u8F03\u3092\u7DAD\u6301\u3057\u307E\u3059\uFF08\u524D\u63B2\u306E\u96C6\u8A08\u95A2\u6570\u306E\u6BD4\u8F03\u898F\u5247\u3092\u53C2\u7167\uFF09\u3002\n\n| \u898F\u5247 | \u5185\u5BB9 |\n|---|---|\n| \u540D\u524D | `#` + \u8B58\u5225\u5B50\uFF08\u4F8B: `#temp` / `#\u96C6\u8A08`\uFF09\u3002`#` \u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u306E\u5148\u982D\u306E\u307F\u3067\u6709\u52B9\u3002\u30A8\u30A4\u30EA\u30A2\u30B9\u306B\u306F\u4F7F\u7528\u4E0D\u53EF |\n| \u5BFF\u547D | **\u30D0\u30C3\u30C1\u5185\u306E\u307F**\u3002\u547C\u3073\u51FA\u3057\u7D42\u4E86\u3067\u81EA\u52D5\u7834\u68C4\uFF08\u547C\u3073\u51FA\u3057\u3092\u307E\u305F\u3050\u53C2\u7167\u306F\u4E0D\u53EF\uFF09 |\n| \u7834\u68C4 | `DROP TEMP TABLE #\u540D\u524D`\uFF08\u4E3B\u306B\u30E1\u30E2\u30EA\u306E\u65E9\u671F\u89E3\u653E\u7528\u3002DROP \u5F8C\u306E\u540C\u540D\u518D CREATE \u306F\u53EF\uFF09 |\n| \u4E0A\u9650 | \u540C\u6642 16 \u500B\u30FB1\u500B\u3042\u305F\u308A\u65E2\u5B9A 10,000 \u884C\uFF08\u8D85\u904E\u306F\u5E38\u306B\u30A8\u30E9\u30FC\uFF09\u3002\u901A\u5E38\u306E\u53D6\u5F97\u4E0A\u9650 `maxRecords` \u3067\u306F\u306A\u304F\u5C02\u7528\u306E `tempTableMaxRows` \u3067\u5909\u66F4\u53EF\u80FD\uFF08MCP \u30C4\u30FC\u30EB\u5F15\u6570 / CLI `--temp-table-max-rows` / env `KSQL_TEMP_TABLE_MAX_ROWS` / profile `query.tempTableMaxRows` / \u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u300C\u2699 \u30AA\u30D7\u30B7\u30E7\u30F3 \u2192 \u53D6\u5F97\u300D\u306E\u300C\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u9650(\u884C)\u300D\u3002\u7A7A\u6B04 = \u65E2\u5B9A\uFF09\u3002\u5909\u66F4\u3057\u3066\u3082\u8D85\u904E\u6642\u306F truncate \u3055\u308C\u305A\u5E38\u306B\u30A8\u30E9\u30FC\u3067\u3001\u65E5\u4ED8\u30EA\u30C6\u30E9\u30EB\u3068\u76F8\u5BFE\u65E5\u4ED8\u3067\u6271\u3044\u306F\u540C\u4E00 |\n| DML | \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u306E INSERT / UPDATE / DELETE \u306F\u975E\u5BFE\u5FDC |\n| \u5B9F\u884C | \u53C2\u7167\u306F\u5E38\u306B\u30A4\u30F3\u30E1\u30E2\u30EA FULL_SCAN\uFF08kintone \u30AF\u30A8\u30EA\u3078\u306E WHERE \u30D7\u30C3\u30B7\u30E5\u30C0\u30A6\u30F3\u306F\u52B9\u304B\u306A\u3044\uFF09 |\n\n### \u30B3\u30F3\u30BD\u30FC\u30EB\uFF08`--console`\uFF09\u3067\u306E\u5165\u529B\n\n- \u5358\u6587\u306F\u5F93\u6765\u3069\u304A\u308A\u884C\u672B `;` \u3067\u5B9F\u884C\u3055\u308C\u307E\u3059\n- `CREATE TEMP TABLE` \u3067\u59CB\u307E\u308B\u5165\u529B\u306F**\u30D0\u30C3\u30C1\u69CB\u7BC9\u30E2\u30FC\u30C9**\u306B\u306A\u308A\u3001`;` \u3067\u306F\u5B9F\u884C\u3055\u308C\u305A **`:run`** \u3067\u30D0\u30C3\u30D5\u30A1\u5168\u4F53\u3092\u30D0\u30C3\u30C1\u5B9F\u884C\u3057\u307E\u3059\uFF08\u7834\u68C4\u306F `:clear`\uFF09\n\n### \u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u306E DML \u30D0\u30C3\u30C1\n\n\u30D7\u30E9\u30B0\u30A4\u30F3 UI \u3067\u3082 DML \u3092\u542B\u3080\u30D0\u30C3\u30C1\u3092\u5B9F\u884C\u3067\u304D\u307E\u3059\u3002\n\n- DML \u6587\u306F**\u6587\u3054\u3068\u306E\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0**\uFF08\u6587\u756A\u53F7 `[N/M]`\u30FB\u66F8\u304D\u8FBC\u307F\u5148\u30A2\u30D7\u30EA\u30FB\u78BA\u5B9A\u4EF6\u6570\u4ED8\u304D\uFF09\u3067\u66F8\u304D\u8FBC\u307F\u76F4\u524D\u306B\u78BA\u8A8D\u3057\u307E\u3059\n- `INSERT INTO ... VALUES` \u306F\u9759\u7684\u306B\u4EF6\u6570\u304C\u78BA\u5B9A\u3059\u308B\u305F\u3081\u3001**\u30D0\u30C3\u30C1\u5B9F\u884C\u524D**\u306B\u307E\u3068\u3081\u3066\u78BA\u8A8D\u3057\u307E\u3059\uFF08\u30AD\u30E3\u30F3\u30BB\u30EB\u6642\u306F 1 \u6587\u3082\u5B9F\u884C\u3055\u308C\u307E\u305B\u3093\uFF09\n- \u5B9F\u884C\u6642\u78BA\u8A8D\u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u305F\u5834\u5408\u306F\u6587 `[N/M]` \u3067\u4E2D\u65AD\u3057\u3001\u305D\u308C\u4EE5\u524D\u306E\u6587\u306E\u5B9F\u884C\u7D50\u679C\u306F\u53CD\u6620\u6E08\u307F\u306E\u307E\u307E\u6B8B\u308A\u307E\u3059\uFF08\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306A\u3057\uFF09\n- \u6210\u529F\u3057\u305F DML \u6587\u306E\u5F71\u97FF\u4EF6\u6570\u306F\u30B5\u30DE\u30EA\u884C\uFF08`[N] \u30BF\u30A4\u30D7: inserted=... updated=...`\uFF09\u3068\u3057\u3066\u7D50\u679C\u306E\u4E0A\u306B\u8868\u793A\u3055\u308C\u307E\u3059\n- DML \u3092\u542B\u3080\u5B9F\u884C\uFF08\u5358\u6587\u30FB\u30D0\u30C3\u30C1\u3068\u3082\uFF09\u3067\u306F\u53D6\u5F97\u4E0A\u9650\u5230\u9054\u6642\u306E\u52D5\u4F5C\u304C UI \u8A2D\u5B9A\u306B\u95A2\u308F\u3089\u305A **error \u306B\u56FA\u5B9A**\u3055\u308C\u307E\u3059\uFF08truncate \u3060\u3068 SELECT-based DML \u306E\u30BD\u30FC\u30B9\u8AAD\u307F\u53D6\u308A\u304C\u9ED9\u3063\u3066\u5207\u308A\u6368\u3066\u3089\u308C\u3001\u90E8\u5206\u66F8\u304D\u8FBC\u307F\u306B\u306A\u308B\u305F\u3081\uFF09\n\n### \u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u306E\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u9650\u6307\u5B9A\n\n\u300C\u2699 \u30AA\u30D7\u30B7\u30E7\u30F3 \u2192 \u53D6\u5F97\u300D\u306E\u300C\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u9650(\u884C)\u300D\u3067\u5B9F\u884C\u3054\u3068\u306B\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u7A7A\u6B04 = \u65E2\u5B9A 10,000\u3002\u8D85\u904E\u306F\u300C\u6253\u3061\u5207\u3063\u3066\u7D9A\u884C\u300D\u8A2D\u5B9A\u3067\u3082\u5E38\u306B\u30A8\u30E9\u30FC\uFF09\u3002\u4E00\u89A7\u30DA\u30FC\u30B8\u306E\u5165\u529B\u5024\u306F localStorage \u306B\u4FDD\u5B58\u3055\u308C\u3001SQL \u5C65\u6B74\u306B\u3082\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3068\u3057\u3066\u6B8B\u308A\u307E\u3059\u3002\n\n**\u30EC\u30B3\u30FC\u30C9\uFF08\u4FDD\u5B58SQL\uFF09\u3054\u3068\u306B\u5024\u3092\u4FDD\u6301\u3059\u308B**\u306B\u306F\u3001\u4FDD\u5B58SQL\u30A2\u30D7\u30EA\u306B\u4EFB\u610F\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002\u30EC\u30B3\u30FC\u30C9\u7DE8\u96C6\u753B\u9762\u3067\u306E\u5165\u529B\u5024\u306E\u4FDD\u6301\u3068\u3001\u4E00\u89A7\u30DA\u30FC\u30B8\u3067\u30EC\u30B3\u30FC\u30C9\u3092\u9078\u629E\u3057\u305F\u3068\u304D\u306E\u30D1\u30CD\u30EB\u53CD\u6620\u306B\u4F7F\u308F\u308C\u307E\u3059\u3002\n\n#### \u65E2\u5B58\u30A2\u30D7\u30EA\u3078\u306E\u300C\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u9650\u884C\u300D\u30D5\u30A3\u30FC\u30EB\u30C9\u8FFD\u52A0\u624B\u9806\n\nv1.11.0 \u306E\u30A2\u30D7\u30EA\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\uFF08`ksql-app-template-v1.11.0.zip`\uFF09\u306B\u306F\u8FFD\u52A0\u6E08\u307F\u3067\u3059\u3002\u305D\u308C\u4EE5\u524D\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304B\u3089\u4F5C\u6210\u3057\u305F\u65E2\u5B58\u30A2\u30D7\u30EA\u306B\u306F\u3001\u6B21\u306E\u624B\u9806\u3067\u8FFD\u52A0\u3057\u307E\u3059\u3002\n\n1. \u4FDD\u5B58SQL\u30A2\u30D7\u30EA\u306E **\u8A2D\u5B9A \u2192 \u30D5\u30A9\u30FC\u30E0** \u3092\u958B\u304F\n2. **\u6570\u5024** \u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u914D\u7F6E\u3059\u308B\uFF08\u5834\u6240\u306F\u4EFB\u610F\u3002\u300C\u6700\u5927\u53D6\u5F97\u4EF6\u6570\u300D\u306E\u8FD1\u304F\u3092\u63A8\u5968\uFF09\n3. \u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u8A2D\u5B9A\u3092\u958B\u304D\u3001\u6B21\u306E\u3068\u304A\u308A\u5165\u529B\u3057\u3066\u4FDD\u5B58\u3059\u308B\n - \u30D5\u30A3\u30FC\u30EB\u30C9\u540D: \u4EFB\u610F\uFF08\u4F8B: `\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u9650\u884C`\uFF09\n - **\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9: `\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u4E0A\u9650\u884C`\uFF08\u5B8C\u5168\u4E00\u81F4\u30FB\u5FC5\u9808\uFF09**\n4. **\u30A2\u30D7\u30EA\u3092\u66F4\u65B0** \u3059\u308B\n\n- \u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u8FFD\u52A0\u3057\u306A\u304F\u3066\u3082\u5F93\u6765\u3069\u304A\u308A\u52D5\u4F5C\u3057\u307E\u3059\uFF08\u30EC\u30B3\u30FC\u30C9\u3054\u3068\u306E\u4FDD\u6301\u304C\u52B9\u304B\u306A\u3044\u3060\u3051\u3067\u3001\u30D1\u30CD\u30EB\u3067\u306E\u5B9F\u884C\u3054\u3068\u6307\u5B9A\u30FBlocalStorage\u30FB\u5C65\u6B74\u306F\u4F7F\u3048\u307E\u3059\uFF09\n- \u30EC\u30B3\u30FC\u30C9\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u304C**\u7A7A\u6B04**\u306E\u5834\u5408\u306F\u300C\u65E2\u5B9A 10,000 \u3067\u5B9F\u884C\u3059\u308B\u300D\u3068\u3044\u3046\u660E\u793A\u6307\u5B9A\u306B\u306A\u308A\u307E\u3059\uFF08\u30EC\u30B3\u30FC\u30C9\u9078\u629E\u6642\u306B\u30D1\u30CD\u30EB\u3082\u7A7A\u6B04 = \u65E2\u5B9A\u3078\u623B\u308A\u307E\u3059\uFF09\n\n### \u30D0\u30C3\u30C1\u5909\u6570\uFF08`SET @var`\uFF09\n\n\u30D0\u30C3\u30C1\u5185\u3067\u5024\u3092\u4E00\u5EA6\u5B9A\u7FA9\u3057\u3001\u5F8C\u7D9A\u306E\u6587\u304B\u3089 `@\u540D\u524D` \u3067\u53C2\u7167\u3067\u304D\u307E\u3059\u3002**\u6642\u523B\u306E\u56FA\u5B9A**\u30FB**\u30D0\u30C3\u30C1 ID**\u30FB**\u6761\u4EF6\u5024\u306E\u5171\u901A\u5316\uFF08DRY\uFF09** \u306B\u4F7F\u3044\u307E\u3059\u3002\n\n```sql\nSET @now = NOW(); -- \u30D0\u30C3\u30C1\u5185\u3067\u6642\u523B\u3092\u56FA\u5B9A\uFF08ISO \u6587\u5B57\u5217\uFF09\nSET @batch_id = NOW(); -- \u30D0\u30C3\u30C1 ID \u3068\u3057\u3066\u5229\u7528\n\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u51E6\u7406\u6E08', \u51E6\u7406\u65E5\u6642 = @now, \u30D0\u30C3\u30C1ID = @batch_id\nWHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u672A\u51E6\u7406';\n```\n\n\u4E8B\u5F8C\u691C\u8A3C\u304C `WHERE \u30D0\u30C3\u30C1ID = @batch_id` \u306E\u5B8C\u5168\u4E00\u81F4\u306B\u306A\u308A\u3001`\u51E6\u7406\u65E5\u6642 >= TODAY()` \u306E\u3088\u3046\u306A\u8FD1\u4F3C\u6761\u4EF6\u304C\u4E0D\u8981\u306B\u306A\u308A\u307E\u3059\u3002\n\n| \u898F\u5247 | \u5185\u5BB9 |\n|---|---|\n| \u69CB\u6587 | `SET @\u540D\u524D = <\u5F0F>`\u3002\u5F0F\u306F**\u30EA\u30C6\u30E9\u30EB**\uFF08\u6587\u5B57\u5217\u30FB\u6570\u5024\uFF09\u30FB**\u95A2\u6570**\uFF08`NOW()` / `TODAY()` / \u6587\u5B57\u5217\u30FB\u6570\u5024\u95A2\u6570\uFF09\u30FB**\u6570\u5024\u7B97\u8853**\u30FB**\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA**\uFF08`(SELECT ...)`\u3002\u4E0B\u8A18\uFF09\u30FB**\u6587\u5B57\u5217\u914D\u5217**\uFF08`['A','B']` / `[]`\uFF09\u3002`@\u540D\u524D` \u306F\u82F1\u5B57\u304B `_` \u3067\u59CB\u307E\u308A\u82F1\u6570\u5B57\u30FB`_`\u300164 \u6587\u5B57\u4EE5\u5185\u3002\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u306F\u533A\u5225\u3057\u306A\u3044 |\n| \u53C2\u7167\u3067\u304D\u308B\u4F4D\u7F6E | \u30B9\u30AB\u30E9\u30FC\u306F **WHERE \u53F3\u8FBA\u306E\u5024** / **UPDATE \u306E SET \u5024** / **ASSERT \u306E\u30AA\u30DA\u30E9\u30F3\u30C9** / **IN \u30EA\u30B9\u30C8\u306E\u8981\u7D20**\uFF08`IN (@a,@b)`\uFF09/ **SELECT \u5B9A\u6570\u5217**\uFF08`@x AS alias`\u3001AS \u5FC5\u9808\uFF09\u3002\u914D\u5217\u306F\u5168\u6761\u4EF6\u4F4D\u7F6E\u306E\u30AB\u30C3\u30B3\u7121\u3057 **`IN @list` / `NOT IN @list`** \u3060\u3051 |\n| \u8A55\u4FA1 | `SET` \u306E\u5B9F\u884C\u6642\u306B**\u4E00\u5EA6\u3060\u3051**\u8A55\u4FA1\u3057\u3001\u4EE5\u5F8C\u306F\u5B9A\u6570\uFF08`SET @now = NOW()` \u306F\u30D0\u30C3\u30C1\u5185\u3067\u540C\u3058\u6642\u523B\u306B\u56FA\u5B9A\u3002`NOW()` \u81EA\u4F53\u306E\u610F\u5473\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09 |\n| \u578B | \u4EE3\u5165\u5024\u304B\u3089 **string / number / string array** \u3092\u6C7A\u5B9A\u3002scalar/array \u306E\u53C2\u7167\u4F4D\u7F6E\u9055\u53CD\u306F\u5168\u30D0\u30C3\u30C1\u5B9F\u884C\u524D\u306B\u62D2\u5426\u3002\u6BD4\u8F03\u306E\u578B\u898F\u5247\u306F WHERE \u3068\u540C\u4E00 |\n| \u30B9\u30B3\u30FC\u30D7 | **1 \u30D0\u30C3\u30C1\u5185\u306E\u307F**\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3068\u540C\u3058\u5BFF\u547D\uFF09\u3002\u30D0\u30C3\u30C1\u3092\u307E\u305F\u304C\u306A\u3044 |\n| \u30D0\u30C3\u30C1\u5FC5\u9808 | **2 \u6587\u4EE5\u4E0A\u306E\u30D0\u30C3\u30C1\u3067\u306E\u307F\u4F7F\u7528\u53EF**\u3002\u5358\u6587\u306E `SET`\u30FB\u5358\u6587\u3067\u306E `@\u53C2\u7167` \u306F\u30A8\u30E9\u30FC |\n| \u9759\u7684\u691C\u67FB | **\u672A\u5B9A\u7FA9\u53C2\u7167\u30FB\u524D\u65B9\u53C2\u7167\u30FB\u518D\u4EE3\u5165\u306F\u30A8\u30E9\u30FC**\uFF08\u5B9F\u884C\u524D\u306B\u691C\u51FA\uFF09\u3002\u672A\u4F7F\u7528\u306F\u8B66\u544A\u3002`SET` \u306E\u8A55\u4FA1\u306B\u5931\u6557\u3057\u305F\u5834\u5408\u306F `continueOnError` \u306B\u95A2\u308F\u3089\u305A\u30D0\u30C3\u30C1\u3092\u505C\u6B62 |\n| \u4E0A\u9650 | \u5909\u6570\u306E\u9632\u5FA1\u4E0A\u9650\u306F **64 \u500B**\u3002\u305F\u3060\u3057\u30D0\u30C3\u30C1\u5168\u4F53\u306E**\u6700\u5927 20 \u6587**\uFF08\xA725 \u5192\u982D\uFF09\u304C\u5148\u306B\u52B9\u304F\u305F\u3081\u3001`SET` \u3082 1 \u6587\u305A\u3064\u6570\u3048\u308B\u73FE\u72B6\u306E\u5B9F\u52B9\u4E0A\u9650\u306F **20 \u500B\u4EE5\u4E0B** |\n| \u6F14\u7B97 | \u5F0F\u5185\u306E `+` \u306F**\u6570\u5024\u52A0\u7B97**\u3002\u6587\u5B57\u5217\u9023\u7D50\u306F `CONCAT()` \u3092\u4F7F\u3046\u3002**SET \u306E\u53F3\u8FBA\u304B\u3089\u5225\u306E\u5909\u6570\u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093**\uFF08`SET @b = @a + 1` \u306F\u4E0D\u53EF\uFF09 |\n| \u675F\u7E1B | \u5024\u3068\u3057\u3066\u30D0\u30A4\u30F3\u30C9\uFF08\u6587\u5B57\u5217\u9023\u7D50\u3067\u306F\u306A\u3044\uFF09\u305F\u3081\u3001**SQL \u30A4\u30F3\u30B8\u30A7\u30AF\u30B7\u30E7\u30F3\u306F\u767A\u751F\u3057\u307E\u305B\u3093**\u3002\u5909\u6570\u306B\u5165\u308B\u306E\u306F\u5024\u306E\u307F\u3067\u3001\u30A2\u30D7\u30EA ID\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u30FB\u6F14\u7B97\u5B50\u306A\u3069\u8B58\u5225\u5B50\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u5316\u306F\u3067\u304D\u307E\u305B\u3093 |\n\n#### \u30B9\u30AB\u30E9\u30FC\u5909\u6570\u306E\u914D\u7F6E\u8A73\u7D30\n\n\u4E0A\u306E\u300C\u53C2\u7167\u3067\u304D\u308B\u4F4D\u7F6E\u300D\u306F\u6982\u8981\u3067\u3059\u3002\u914D\u7F6E\u306E\u6587\u6CD5\u5883\u754C\u306F\u6B21\u306E\u8868\u3092\u6B63\u3068\u3057\u307E\u3059\u3002ID \u306F parser \u3068 batch analyzer \u306E\u7279\u6027\u5316\u30C6\u30B9\u30C8\u306B\u4E00\u5BFE\u4E00\u3067\u5BFE\u5FDC\u3057\u307E\u3059\u3002\n\n| ID | \u4F7F\u3048\u308B\u914D\u7F6E | \u5883\u754C |\n|---|---|---|\n| A01 | WHERE \u306E\u6BD4\u8F03\u53F3\u8FBA | `\u5217 >= @x` \u306E\u3088\u3046\u306B\u53F3\u8FBA\u306E\u76F4\u63A5\u5024\u3068\u3057\u3066\u4F7F\u3048\u308B\u3002VALIDATE WHERE\u3001APPLY PATCH/REMOVE WHERE \u3082\u540C\u3058\u6761\u4EF6\u6587\u6CD5\u3092\u4F7F\u3046 |\n| A02 | HAVING \u306E\u6BD4\u8F03\u53F3\u8FBA | \u96C6\u7D04\u7D50\u679C\u3068\u306E\u6BD4\u8F03\u53F3\u8FBA\u306B\u4F7F\u3048\u308B |\n| A03 | CHECK WHEN \u6761\u4EF6 | \u6BD4\u8F03\u53F3\u8FBA\u306B\u4F7F\u3048\u308B\u3002CHECK \u306E\u8A55\u4FA1\u884C\u306F \xA717.3 \u3092\u53C2\u7167 |\n| A04 | CASE / IF \u6761\u4EF6 | \u6761\u4EF6\u5185\u306E\u6BD4\u8F03\u53F3\u8FBA\u306B\u4F7F\u3048\u308B |\n| A05 | KLIKE \u53F3\u8FBA | `\u5217 KLIKE @x` / `\u5217 NOT KLIKE @x` \u306E\u30D1\u30BF\u30FC\u30F3\u5024\u306B\u4F7F\u3048\u308B |\n| A06 | IN \u30EA\u30B9\u30C8\u8981\u7D20 | \u30B9\u30AB\u30E9\u30FC\u5909\u6570\u3092 `IN (@a, @b)` \u306E\u8981\u7D20\u306B\u4F7F\u3048\u308B |\n| A07 | \u30AB\u30C3\u30B3\u7121\u3057 IN | \u6587\u5B57\u5217\u914D\u5217\u5909\u6570\u3060\u3051\u3092 `IN @list` / `NOT IN @list` \u306B\u4F7F\u3048\u308B |\n| A08 | SELECT \u5B9A\u6570\u5217 | `SELECT @x AS alias`\uFF08AS \u5FC5\u9808\uFF09\u3067\u30B9\u30AB\u30E9\u30FC\u5024\u3092\u5217\u3068\u3057\u3066\u5B9F\u4F53\u5316\u3067\u304D\u308B |\n| A09 | IMPORT SELECT \u5C04\u5F71 | IMPORT \u306E SELECT \u5C04\u5F71\u3067\u3082 `@x AS alias`\uFF08AS \u5FC5\u9808\uFF09\u3092\u4F7F\u3048\u308B |\n| A10 | UPDATE SET \u5024 | \u901A\u5E38 UPDATE \u306E SET \u53F3\u8FBA\u306E\u76F4\u63A5\u5024\u306B\u4F7F\u3048\u308B |\n| A11 | UPDATE FROM SET \u5024 | UPDATE FROM \u306E SET \u53F3\u8FBA\u306E\u76F4\u63A5\u5024\u306B\u3082\u4F7F\u3048\u308B |\n| A12 | ASSERT \u30AA\u30DA\u30E9\u30F3\u30C9 | \u6BD4\u8F03\u30FBBETWEEN \u306E\u76F4\u63A5\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u4F7F\u3048\u308B |\n| A13 | SET \u306E\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185 | \u5148\u884C\u5909\u6570\u3092 `(SELECT ... WHERE \u5217 = @a)` \u306E\u3088\u3046\u306B\u53C2\u7167\u3067\u304D\u308B\u3002\u5916\u5074\u306E SET \u5F0F\u3068\u306F\u5225\u6271\u3044 |\n| A14 | SELECT \u5217\u306E\u7B97\u8853\u30AA\u30DA\u30E9\u30F3\u30C9 | `SELECT (\u58F2\u4E0A * 100) / @total AS \u69CB\u6210\u6BD4` \u306E\u3088\u3046\u306B\u6570\u5024\u5909\u6570\u3092\u76F4\u63A5\u4F7F\u3048\u308B |\n\n| ID | \u4F7F\u3048\u306A\u3044\u914D\u7F6E | \u5883\u754C |\n|---|---|---|\n| R01 | VALUES \u306E\u76F4\u63A5\u8981\u7D20 | INSERT / UPSERT / APPEND \u306E `VALUES (@x)` \u306F\u4E0D\u53EF\u3002VALUES \u304C\u53D7\u7406\u3059\u308B CASE / IF \u306E\u5185\u90E8\u3067\u306F\u6761\u4EF6\u30FB\u5F0F\u306B\u5909\u6570\u304C\u5165\u308A\u5F97\u308B |\n| R02 | \u4EF6\u6570\u30FB\u4F4D\u7F6E\u3092\u8868\u3059\u56FA\u5B9A\u6570\u5024\u53E5 | `LIMIT @n` / `OFFSET @n` \u306F\u4E0D\u53EF\u3002EXPECT ROWS / REJECT LIMIT \u3082\u5909\u6570\u5316\u3067\u304D\u306A\u3044 |\n| R03 | \u6761\u4EF6\u5DE6\u8FBA\u30FB\u69CB\u9020\u4F4D\u7F6E | `@x = \u5217` \u306F\u4E0D\u53EF\u3002GROUP BY / ORDER BY\u3001\u30A2\u30D7\u30EA ID\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u30FB\u6F14\u7B97\u5B50\u306A\u3069\u306E\u8B58\u5225\u5B50\u4F4D\u7F6E\u306B\u3082\u7F6E\u3051\u306A\u3044 |\n| R04 | \u5916\u5074\u306E SET / DECLARE \u5F0F | `SET @b = @a / 2` \u3068 `DECLARE @b = @a` \u306F\u4E0D\u53EF\u3002A13 \u306E SET \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3060\u3051\u304C\u5148\u884C\u5909\u6570\u53C2\u7167\u306E\u4F8B\u5916 |\n| R05 | ASCII \u898F\u5247\u5916\u306E\u5909\u6570\u540D | \u5909\u6570\u540D\u306F `@[A-Za-z_][A-Za-z0-9_]{0,63}`\uFF08\u6700\u5927 64 \u6587\u5B57\uFF09\u3067\u3001\u540D\u524D\u306F\u5C0F\u6587\u5B57\u3078\u6B63\u898F\u5316\u3055\u308C\u308B\u3002`@max\u91D1\u984D` \u306F `@max` \u3068 `\u91D1\u984D` \u306E 2 \u30C8\u30FC\u30AF\u30F3\u306B\u5206\u304B\u308C\u3001\u5909\u6570\u540D\u3068\u3057\u3066\u53D7\u7406\u3055\u308C\u306A\u3044 |\n\nSELECT \u5217\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F\u6570\u5024\u304B\u3089\u59CB\u307E\u308B\u7B97\u8853\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u3068\u3057\u3066\u5909\u6570\u3092\u4F7F\u3048\u307E\u3059\u3002\u6761\u4EF6\u306E\u6BD4\u8F03\u53F3\u8FBA\u3092 `@avg / 2` \u306E\u3088\u3046\u306A\u4E00\u822C\u5F0F\u306B\u3059\u308B\u3053\u3068\u3001\u65E2\u5B58\u5909\u6570\u304B\u3089\u5225\u306E SET \u5909\u6570\u3092\u76F4\u63A5\u5C0E\u51FA\u3059\u308B\u3053\u3068\u3001VALUES \u306E\u76F4\u63A5\u8981\u7D20\u306B\u7F6E\u304F\u3053\u3068\u306F\u5F15\u304D\u7D9A\u304D\u3067\u304D\u307E\u305B\u3093\u3002SET \u3067\u6D3E\u751F\u5024\u304C\u5FC5\u8981\u306A\u3089\u5143\u306E\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u540C\u6642\u306B\u8A08\u7B97\u3057\u307E\u3059\u3002\n\n#### \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u4EE3\u5165 `SET @x = (SELECT ...)`\n\n`SET` \u306E\u53F3\u8FBA\u306B**\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA**\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002**\u4EF6\u6570\u30B2\u30FC\u30C8\u306E DRY \u5316**\u304C\u4E3B\u7528\u9014\u3067\u3059\u3002\n\n```sql\nSET @cnt = (SELECT COUNT(*) FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406'));\nASSERT @cnt BETWEEN 0 AND 10000;\nUPDATE APP100 SET \u5BFE\u8C61\u4EF6\u6570\u30E1\u30E2 = @cnt WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n```\n\n| \u898F\u5247 | \u5185\u5BB9 |\n|---|---|\n| \u8A55\u4FA1 | `SET` \u306E\u5B9F\u884C\u6642\u306B**\u4E00\u5EA6\u3060\u3051**\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u3057\u3001\u4EE5\u5F8C\u306F\u5B9A\u6570\uFF08\u540C\u3058\u5909\u6570\u3092\u8907\u6570\u6587\u3067\u53C2\u7167\u3057\u3066\u3082\u518D\u5B9F\u884C\u3057\u306A\u3044\uFF09 |\n| \u30B9\u30AB\u30E9\u30FC\u4FDD\u8A3C | \u30B5\u30D6\u30AF\u30A8\u30EA\u306F**\u5FC5\u305A 1 \u884C 1 \u5217**\u30020 \u884C\u30FB\u8907\u6570\u884C\u30FB\u8907\u6570\u5217\u306F\u30A8\u30E9\u30FC\u3002\u660E\u793A\u5217\u3067 2 \u5217\u4EE5\u4E0A\u306F\u30D1\u30FC\u30B9\u6642\u3001`SELECT *` \u7B49\u306F\u5B9F\u884C\u6642\u306B\u691C\u8A3C\u3002\u203B **GROUP BY \u306A\u3057\u306E\u96C6\u8A08\u306F 0 \u4EF6\u3067\u3082 1 \u884C\uFF08`COUNT` \u306F `0`\uFF09** \u3092\u8FD4\u3059\uFF08\xA78\uFF09\u305F\u3081 `COUNT(*)` \u4EF6\u6570\u53D6\u5F97\u306F 0 \u4EF6\u3067\u3082\u6210\u7ACB |\n| \u53C2\u7167 | \u30B5\u30D6\u30AF\u30A8\u30EA\u306F**\u5148\u884C\u3057\u3066\u4F5C\u6210\u3057\u305F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB**\u30FB**\u5148\u884C\u3057\u3066\u5B9A\u7FA9\u3057\u305F\u5909\u6570**\uFF08`(SELECT ... WHERE k < @prev)`\uFF09\u3092\u53C2\u7167\u53EF\u3002\u672A\u5B9A\u7FA9\u30FB\u524D\u65B9\u53C2\u7167\u306F\u5B9F\u884C\u524D\u306B\u691C\u51FA |\n| \u5F8C\u7F6E\u7B97\u8853 | \u30B5\u30D6\u30AF\u30A8\u30EA\u7D50\u679C\u3078\u306E\u7B97\u8853\u306F\u4E0D\u53EF\uFF08`(SELECT ...) * 2` \u306F\u4E0D\u53EF \u2192 `(SELECT COUNT(*) * 2 FROM ...)` \u3068\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\uFF09 |\n| \u30A8\u30E9\u30FC | \u8A55\u4FA1\u5931\u6557\uFF080 \u884C\u30FB\u8907\u6570\u884C\u30FB\u8907\u6570\u5217\u30FBAPI \u30A8\u30E9\u30FC\uFF09\u306F `ArgumentError` \u3067\u3001**`continueOnError` \u306B\u95A2\u308F\u3089\u305A\u30D0\u30C3\u30C1\u3092\u505C\u6B62**\uFF08fail-fast\u3002`ASSERT` \u5931\u6557\u306E\u505C\u6B62\uFF1D`assertion` \u3068\u306F\u533A\u5225\uFF09 |\n| EXPLAIN | \u30D0\u30C3\u30C1 EXPLAIN \u304C `SET @x = (SELECT ...)` \u306E\u30B5\u30D6\u30AF\u30A8\u30EA\u8A08\u753B\uFF08APP\uFF0F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\u30FB1 \u56DE\u8A55\u4FA1\uFF09\u3092\u8868\u793A |\n\n#### \u5916\u90E8\u30D1\u30E9\u30E1\u30FC\u30BF\u6CE8\u5165 `DECLARE @x = default`\n\n```sql\nDECLARE @since = '2026-01-01';\nSELECT * FROM APP100 WHERE \u767B\u9332\u65E5 >= @since;\n```\n\n- \u672A\u6CE8\u5165\u6642\u306F\u65E2\u5B9A\u5024\u3092\u5B9F\u884C\u6642\u306B1\u56DE\u8A55\u4FA1\u3002CLI \u306E `--var since=2026-07-01`\u3001MCP `variables: { \"since\": \"2026-07-01\" }` \u3067\u6587\u5B57\u5217\u5024\u3092\u4E0A\u66F8\u304D\u3067\u304D\u308B\u3002\u6CE8\u5165\u6642\u306F\u65E2\u5B9A\u5024\u5F0F\u3092\u8A55\u4FA1\u3057\u306A\u3044\u3002\n- \u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u3082 `DECLARE` \u6587\u306F\u5B9F\u884C\u3067\u304D\u308B\u304C\u6CE8\u5165 UI \u306F\u306A\u304F\u3001\u5E38\u306B\u65E2\u5B9A\u5024\u3092\u4F7F\u3046\u3002\n- \u30AD\u30FC\u306F `@` \u306A\u3057\u30FB\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\u3002\u672A\u5BA3\u8A00\u30AD\u30FC\u3001\u91CD\u8907\u3001\u4E0D\u6B63\u540D\u306F API \u547C\u3073\u51FA\u3057\u3084 DML \u3088\u308A\u524D\u306B\u30A8\u30E9\u30FC\u3002`SET` \u3067\u5B9A\u7FA9\u3057\u305F\u540D\u524D\u306F\u6CE8\u5165\u5BFE\u8C61\u306B\u306A\u3089\u306A\u3044\u3002\n- \u65E2\u5B9A\u5024\u306F\u30EA\u30C6\u30E9\u30EB\u30FB`NOW()` / `TODAY()`\u30FB\u6587\u5B57\u5217/\u6570\u5024\u95A2\u6570\u30FB\u6570\u5024\u7B97\u8853\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u3001\u5225\u5909\u6570\u3001`NULL`\u3001`LOGINUSER()`\u3001`PRIMARY_ORGANIZATION()` \u306F\u4E0D\u53EF\u3002\u63A1\u7528\u5024\u306F\u6587\u5B57\u5217\u3068\u3057\u3066\u675F\u7E1B\u3059\u308B\u3002\n- `DECLARE` \u3068\u4F7F\u7528\u6587\u3092\u542B\u30802\u6587\u4EE5\u4E0A\u306E\u30D0\u30C3\u30C1\u304C\u5FC5\u8981\u3002\u5024\u306F EXPLAIN\u3001\u7D50\u679C\u30E1\u30BF\u30C7\u30FC\u30BF\u306B\u8868\u793A\u3057\u306A\u3044\u3002CLI `--var` \u306F\u30D7\u30ED\u30BB\u30B9\u4E00\u89A7\u3084\u30B7\u30A7\u30EB\u5C65\u6B74\u306B\u6B8B\u308A\u5F97\u308B\u305F\u3081\u79D8\u5BC6\u60C5\u5831\u306B\u306F\u4F7F\u308F\u306A\u3044\u3002\n\n`RELATIVE_DATE` \u6CE8\u91C8\u3092\u4ED8\u3051\u308B\u3068\u3001\u6587\u5B57\u5217\u3067\u306F\u306A\u304F kintone \u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u30C8\u30FC\u30AF\u30F3\u3092\u5B89\u5168\u306B\u675F\u7E1B\u3067\u304D\u307E\u3059\u3002\n\n```sql\nDECLARE @period RELATIVE_DATE = THIS_MONTH();\nSELECT * FROM APP100 WHERE \u53D7\u6CE8\u4E88\u5B9A\u65E5 = @period;\n-- CLI: --var period=\"FROM_TODAY(-1, MONTHS)\"\n-- MCP / library: variables: { \"period\": \"THIS_YEAR()\" }\n```\n\n- `RELATIVE_DATE` \u306F\u5909\u6570\u540D\u76F4\u5F8C\u30FB`=` \u306E\u524D\u3060\u3051\u3067\u89E3\u91C8\u3059\u308B soft keyword \u3067\u3059\u3002\u65E2\u5B9A\u5024\u306F\u5FC5\u9808\u3067\u3059\u3002\n- \u53D7\u3051\u4ED8\u3051\u308B\u306E\u306F\u65E5\u4ED8\u7CFB14\u500B\u3067\u3059: `TODAY()` / `NOW()` / `YESTERDAY()` / `TOMORROW()` /\n `FROM_TODAY(n, DAYS|WEEKS|MONTHS|YEARS)` / `THIS_WEEK([\u66DC\u65E5])` / `LAST_WEEK([\u66DC\u65E5])` /\n `NEXT_WEEK([\u66DC\u65E5])` / `THIS_MONTH([\u65E5|LAST])` / `LAST_MONTH([\u65E5|LAST])` /\n `NEXT_MONTH([\u65E5|LAST])` / `THIS_YEAR()` / `LAST_YEAR()` / `NEXT_YEAR()`\u3002\n \u5F15\u6570\u306F\u901A\u5E38\u306E WHERE \u95A2\u6570\u3068\u540C\u3058\u898F\u5247\u3067\u691C\u8A3C\u3057\u3001\u30C8\u30FC\u30AF\u30F3\u306E\u524D\u5F8C\u306B\u4F59\u5206\u306A\u5B57\u53E5\u306F\u7F6E\u3051\u307E\u305B\u3093\u3002\n `LOGINUSER()` / `PRIMARY_ORGANIZATION()`\u3001\u65E5\u4ED8\u6587\u5B57\u5217\u3001\u4EFB\u610F\u306E\u5F0F\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n- \u4F7F\u7528\u4F4D\u7F6E\u306F **WHERE \u306E\u6BD4\u8F03\u53F3\u8FBA**\u3068 **BETWEEN \u306E\u5883\u754C**\u3060\u3051\u3067\u3059\u3002HAVING / CHECK / CASE\u30FBIF /\n KLIKE / IN / SELECT \u5B9A\u6570\u5217 / UPDATE SET / ASSERT / \u7B97\u8853\u306B\u306F\u7F6E\u3051\u307E\u305B\u3093\u3002\n- `RELATIVE_DATE` \u5909\u6570\u306F DML\uFF08`UPDATE` / `DELETE` / `INSERT ... SELECT` / `UPSERT`\uFF09\u3068\n `VALIDATE` \u3067\u306F fail-closed \u3067\u3059\u3002\u9055\u53CD\u30FB\u4E0D\u6B63\u306A\u6CE8\u5165\u5024\u306F\u5909\u6570\u540D\u3092\u542B\u3080\u30A8\u30E9\u30FC\u3067\u3001API \u547C\u3073\u51FA\u3057\u524D\u306B\u505C\u6B62\u3057\u307E\u3059\u3002\n SQL \u306B\u76F4\u63A5\u66F8\u3044\u305F\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u306E\u65E2\u5B58 DML \u898F\u5247\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n- \u6CE8\u91C8\u306A\u3057 `DECLARE` \u306F\u5F93\u6765\u3069\u304A\u308A\u3001\u6CE8\u5165\u5024\u3092\u5E38\u306B\u6587\u5B57\u5217\u3068\u3057\u3066\u675F\u7E1B\u3057\u307E\u3059\u3002\n\n`TODAY()` \u306F\u66F8\u304F\u4F4D\u7F6E\u3067\u8A55\u4FA1\u4E3B\u4F53\u304C\u7570\u306A\u308A\u307E\u3059\u3002\n\n| \u66F8\u304D\u65B9 | \u675F\u7E1B\u30FB\u62BC\u3057\u4E0B\u3052 | \u6642\u523B\u30FBTZ \u306E\u57FA\u6E96 |\n|---|---|---|\n| `DECLARE @p = TODAY(); ... WHERE \u65E5\u4ED8 = @p` | `\"YYYY-MM-DD\"` \u306E\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB | kSQL \u5B9F\u884C\u74B0\u5883\u306E\u30DB\u30B9\u30C8\u6642\u8A08\u30FB\u30DB\u30B9\u30C8 TZ |\n| `WHERE \u65E5\u4ED8 = TODAY()` | `TODAY()` \u306E\u307E\u307E server \u3078\u62BC\u3057\u4E0B\u3052 | kintone \u30B5\u30FC\u30D0\u30FC\u30FB\u5229\u7528\u8005\u8A2D\u5B9A |\n| `DECLARE @p RELATIVE_DATE = TODAY(); ... WHERE \u65E5\u4ED8 = @p` | `TODAY()` \u306E\u307E\u307E server \u3078\u62BC\u3057\u4E0B\u3052 | kintone \u30B5\u30FC\u30D0\u30FC\u30FB\u5229\u7528\u8005\u8A2D\u5B9A |\n\n#### SELECT \u5B9A\u6570\u5217\u3068\u914D\u5217 IN\n\n```sql\nSET @batch = NOW();\nSET @ranks = ['A', 'B'];\nSELECT @batch AS \u30D0\u30C3\u30C1ID, \u9867\u5BA2No FROM APP100 WHERE \u9867\u5BA2\u30E9\u30F3\u30AF IN @ranks;\n```\n\n- `@x AS alias` \u306F\u6587\u5B57\u5217\u30FB\u6570\u5024\u3060\u3051\u3002\u914D\u5217\u306F SELECT \u5217\u306B\u7F6E\u3051\u306A\u3044\u3002`@x || field` \u306F\u5F93\u6765\u3069\u304A\u308A\u4E00\u822C\u30B9\u30AB\u30E9\u30FC\u5F0F\u3068\u3057\u3066\u6271\u3046\u3002\n- `IN @list` \u306F\u975E\u7A7A\u914D\u5217\u3092\u901A\u5E38\u306E literal IN \u3078\u5C55\u958B\u3059\u308B\u3002`IN (@x)` \u306F\u5F93\u6765\u3069\u304A\u308A\u30B9\u30AB\u30E9\u30FC 1 \u8981\u7D20\u3067\u3001\u914D\u5217\u5C55\u958B\u3067\u306F\u306A\u3044\u3002\n- \u7A7A\u914D\u5217\u306F `IN @empty`=\u507D\u3001`NOT IN @empty`=\u771F\u3068\u3057\u3066 AND/OR/NOT/\u62EC\u5F27\u3092\u7C21\u7D04\u3059\u308B\u3002SELECT \u306E\u6052\u507D WHERE \u306F\u30EC\u30B3\u30FC\u30C9 API \u3092\u547C\u3070\u305A\u7A7A\u5165\u529B\u3092\u5F8C\u6BB5\u3078\u6E21\u3059\u3002UPDATE/DELETE/\u975E ALL REORDER \u306E\u6700\u7D42 WHERE \u304C\u6052\u771F\u306B\u306A\u308B\u5834\u5408\u306F\u5168\u4EF6\u66F4\u65B0\u9632\u6B62\u306E\u305F\u3081\u5B9F\u884C\u524D\u30A8\u30E9\u30FC\u3001\u6052\u507D\u306F 0 \u4EF6 no-op\u3002\n\n**\u73FE\u6642\u70B9\u3067\u975E\u5BFE\u5FDC\uFF08\u4ECA\u5F8C\u306E\u30D5\u30A7\u30FC\u30BA\uFF09**: `NULL` \u306E\u4EE3\u5165\u30FB\u6570\u5024/\u6DF7\u5728\u914D\u5217\u30FB\u914D\u5217\u306E\u30B5\u30D6\u30AF\u30A8\u30EA\u4EE3\u5165\u30FB`IN (@list)` \u3067\u306E\u914D\u5217\u5C55\u958B\u30FB`SET` \u53F3\u8FBA\u3067\u306E\u5225\u5909\u6570\u53C2\u7167\u30FB\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u7D50\u679C\u3078\u306E\u7B97\u8853\u30FB\u95A2\u6570\u5F15\u6570\u3078\u306E `NOW()` \u76F4\u63A5\u6307\u5B9A\u30FB`LOGINUSER()`\u30FB`PRIMARY_ORGANIZATION()`\u3002\n\n> **`APP@profile` \u3068\u306E\u4F75\u7528**: `SET @now = NOW(); SELECT * FROM APP100@dev WHERE \u4F5C\u6210\u65E5\u6642 = @now` \u306E\u3088\u3046\u306B\u3001`@profile`\uFF08\u30A2\u30D7\u30EA\u6307\u5B9A\uFF09\u3068 `@\u5909\u6570` \u306F\u540C\u5C45\u3067\u304D\u307E\u3059\uFF08CLI / MCP \u304C profile \u3060\u3051\u3092\u5148\u306B\u6B63\u898F\u5316\u3059\u308B\u305F\u3081\u6DF7\u540C\u3057\u307E\u305B\u3093\uFF09\u3002\n\n### \u6CE8\u610F\n\n- **\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306F\u3042\u308A\u307E\u305B\u3093**\u3002\u30D0\u30C3\u30C1\u3082\u975E\u30A2\u30C8\u30DF\u30C3\u30AF\u3067\u3059\uFF08DML \u30D0\u30C3\u30C1\u5BFE\u5FDC\u5F8C\u3082\u3001\u9014\u4E2D\u5931\u6557\u6642\u306B\u524D\u534A\u306E\u307F\u53CD\u6620\u3055\u308C\u305F\u72B6\u614B\u304C\u8D77\u3053\u308A\u5F97\u307E\u3059\uFF09\n- MCP \u3067\u306F `CREATE TEMP TABLE` \u306E\u5B9F\u4F53\u5316\u7D50\u679C\u306F\u8FD4\u5374\u3055\u308C\u307E\u305B\u3093\uFF08`tempTable` \u540D\u3068 `rowCount` \u306E\u307F\uFF09\u3002\u4E2D\u9593\u7D50\u679C\u3092\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306B\u8F09\u305B\u306A\u3044\u305F\u3081\u306E\u8A2D\u8A08\u3067\u3059\n\n---", uri: "ksql://language-reference/25-batch-temp-tables" }, "26-assert": { heading: "26. ASSERT", text: '## 26. ASSERT\n\n> \u6761\u4EF6\u304C\u6210\u7ACB\u3057\u306A\u3051\u308C\u3070 `AssertError` \u3067\u5B9F\u884C\u3092\u6B62\u3081\u308B**\u5B9F\u884C\u6642\u30B2\u30FC\u30C8**\u3067\u3059\u3002DML \u524D\u306E\u4EF6\u6570\u30AC\u30FC\u30C9\u3084 CLI \u30D8\u30EB\u30B9\u30C1\u30A7\u30C3\u30AF\uFF08exit code \u76E3\u8996\uFF09\u306B\u4F7F\u3044\u307E\u3059\u3002\n\n```sql\nASSERT <\u5F0F> <\u6BD4\u8F03\u6F14\u7B97\u5B50> <\u5F0F>;\nASSERT <\u5F0F> BETWEEN <\u5F0F> AND <\u5F0F>;\n```\n\n- \u6BD4\u8F03\u6F14\u7B97\u5B50: `=` `<>` `!=` `<` `<=` `>` `>=` \u304A\u3088\u3073 `BETWEEN`\uFF08\u5883\u754C\u3092\u542B\u3080\uFF09\n- \u5F0F\u306B\u4F7F\u3048\u308B\u3082\u306E: **\u30EA\u30C6\u30E9\u30EB**\uFF08\u6570\u5024\u30FB\u6587\u5B57\u5217\uFF09\u3001**\u7B97\u8853\u5F0F**\uFF08\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u306E\u307F\uFF09\u3001**\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA**\uFF08`(SELECT ...)`\u3002APP\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3068\u3082\u53C2\u7167\u53EF\uFF09\u3001**\u30D0\u30C3\u30C1\u5909\u6570**\uFF08`@\u540D\u524D`\u3002\u2192 [\xA725 \u30D0\u30C3\u30C1\u5909\u6570](#25-\u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB)\uFF09\n- \u6BD4\u8F03\u306E\u578B\u898F\u5247\u306F WHERE \u53E5\u3068\u540C\u4E00\uFF08`=` / `<>` \u306F\u6587\u5B57\u5217\u6BD4\u8F03\u3001\u5927\u5C0F\u6BD4\u8F03\u306F\u53CC\u65B9\u304C\u6570\u5024\u306A\u3089\u6570\u5024\u6BD4\u8F03\uFF09\u3002**\u6570\u5024\u304B\u3069\u3046\u304B\u306F\u5024\u306E\u51FA\u3069\u3053\u308D\u3067\u6C7A\u307E\u308A\u307E\u3059**: \u6570\u5024\u30EA\u30C6\u30E9\u30EB\u30FB\u7B97\u8853\u5F0F\u30FB\u6570\u5024\u306E `@\u5909\u6570`\u30FB`COUNT` / `SUM` / `AVG` \u7B49\u306E\u6570\u5024\u96C6\u8A08\u30B5\u30D6\u30AF\u30A8\u30EA\uFF1D\u6570\u5024\u3002\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u30FB\u6587\u5B57\u5217\u306E `@\u5909\u6570`\uFF08\u5916\u90E8\u6CE8\u5165\u542B\u3080\uFF09\uFF1D\u6587\u5B57\u5217\uFF08\u8F9E\u66F8\u9806\u3002ISO \u65E5\u4ED8\u6587\u5B57\u5217\u306E\u6BD4\u8F03\u306F\u3053\u3061\u3089\uFF09\u3002\u7247\u65B9\u3067\u3082\u6587\u5B57\u5217\u306A\u3089\u8F9E\u66F8\u9806\u3067\u3059\uFF08v3.72.0 \u3067\u5927\u5C0F\u6BD4\u8F03\u304C\u3053\u306E\u898F\u5247\u3069\u304A\u308A\u306B\u4FEE\u6B63\u3055\u308C\u307E\u3057\u305F\u3002\u305D\u308C\u4EE5\u524D\u306F\u6570\u5024\u96C6\u8A08\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5927\u5C0F\u6BD4\u8F03\u304C\u8F9E\u66F8\u9806\u306B\u306A\u308B\u4E0D\u5177\u5408\u304C\u3042\u308A\u307E\u3059\uFF09\n\n```sql\n-- \u5178\u578B\u4F8B1: UPDATE \u524D\u306E\u4EF6\u6570\u30AC\u30FC\u30C9\n-- \uFF08UPDATE \u306E\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u53C2\u7167\u3067\u304D\u306A\u3044\u305F\u3081\u3001ASSERT \u3067\u76F4\u63A5\u4EF6\u6570\u3092\u691C\u8A3C\u3057\n-- UPDATE \u306B\u306F\u540C\u3058\u6761\u4EF6\u3092\u66F8\u304F\uFF09\nASSERT (SELECT COUNT(*) FROM APP100 WHERE \u58F2\u4E0A > 1000000) BETWEEN 1 AND 500;\n\nUPDATE APP100 SET \u72B6\u614B = \'\u5BFE\u8C61\' WHERE \u58F2\u4E0A > 1000000;\n```\n\n```sql\n-- \u5178\u578B\u4F8B2: \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u30B2\u30FC\u30C8 + SELECT-based DML \u306E\u30BD\u30FC\u30B9\u306B\u4F7F\u3046\n-- \uFF08INSERT/UPSERT ... SELECT \u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30BD\u30FC\u30B9\u5BFE\u5FDC\u306E\u305F\u3081\u3001\u691C\u8A3C\u3057\u305F #src \u3092\u305D\u306E\u307E\u307E\u66F8\u304D\u8FBC\u3081\u308B\uFF09\nCREATE TEMP TABLE #src AS\nSELECT \u9867\u5BA2\u540D, SUM(\u91D1\u984D) AS \u5408\u8A08 FROM APP200 GROUP BY \u9867\u5BA2\u540D;\n\nASSERT (SELECT COUNT(*) FROM #src) BETWEEN 1 AND 500;\n\nINSERT INTO APP300 (\u9867\u5BA2\u540D, \u5408\u8A08\u91D1\u984D) SELECT \u9867\u5BA2\u540D, \u5408\u8A08 FROM #src;\n```\n\n```bash\n# CLI \u30D8\u30EB\u30B9\u30C1\u30A7\u30C3\u30AF\uFF08\u4E0D\u6210\u7ACB\u306A\u3089 exit code 1\uFF09\nksql -e "ASSERT (SELECT COUNT(*) FROM APP1 WHERE \u7570\u5E38\u30D5\u30E9\u30B0 = \'1\') = 0"\n```\n\n### \u52D5\u4F5C\n\n- **read-only \u6271\u3044**\u3067\u3059\uFF08kintone \u306B\u66F8\u304D\u8FBC\u307E\u306A\u3044\uFF09\u3002read-only \u30D0\u30C3\u30C1\u30FBDML \u30D0\u30C3\u30C1\u306E\u3069\u3061\u3089\u306B\u3082\u66F8\u3051\u307E\u3059\u3002\u5358\u6587\u3067\u3082\u5B9F\u884C\u3067\u304D\u307E\u3059\n- \u4E0D\u6210\u7ACB\u306E\u5834\u5408\u306F `AssertError: assertion failed: <\u6761\u4EF6> (actual: <\u5B9F\u6E2C\u5024>).` \u3067\u305D\u306E\u6587\u304C\u30A8\u30E9\u30FC\u306B\u306A\u308A\u3001**\u30D0\u30C3\u30C1\u306F\u5E38\u306B\u505C\u6B62**\u3057\u307E\u3059\uFF08`continueOnError` \u6307\u5B9A\u3082\u7121\u8996\u3002\u4EE5\u964D\u306E\u6587\u306F `skipped` / `skippedReason: "assertion"`\uFF09\n- \u30D0\u30C3\u30C1\u6210\u529F\u6642\u306E ASSERT \u306F\u7D50\u679C\u3092\u6301\u305F\u306A\u3044\u6587\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\uFF08`statements[]` \u306F `status: "success"` \u306E\u307F\uFF09\n- \u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F**\u5FC5\u305A 1\u884C1\u5217**\u3092\u8981\u6C42\u3057\u307E\u3059\u30020\u884C\u30FB\u8907\u6570\u884C\u306F\u5B9F\u884C\u6642 `AssertError`\uFF080\u884C\u3092 NULL \u6271\u3044\u306B\u3057\u307E\u305B\u3093\uFF09\u3002\u8907\u6570\u5217\u306F select list \u304C\u660E\u793A\u7684\u306A\u3089\u30D1\u30FC\u30B9\u6642\u306B\u62D2\u5426\u3001`SELECT *` \u7B49\u306F\u5B9F\u884C\u6642\u306B\u691C\u8A3C\u3057\u307E\u3059\n- **GROUP BY \u306A\u3057\u306E\u96C6\u8A08\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u5BFE\u8C61 0 \u4EF6\u3067\u3082 1 \u884C\uFF08COUNT \u306F `0`\uFF09\u3092\u8FD4\u3059**\uFF08\xA78\u300C0 \u4EF6\u6642\u306E\u6319\u52D5\u300D\uFF09\u305F\u3081\u3001\u4E0A\u306E CLI \u4F8B\u306E\u3088\u3046\u306A `ASSERT (SELECT COUNT(*) ... WHERE \u7570\u5E38\u6761\u4EF6) = 0` \u306E\u5065\u5168\u6027\u30C1\u30A7\u30C3\u30AF\u304C\u8A72\u5F53 0 \u4EF6\uFF08\u5065\u5168\u6642\uFF09\u306B\u6210\u7ACB\u3057\u307E\u3059\u30020 \u884C\u30A8\u30E9\u30FC\u304C\u8D77\u304D\u308B\u306E\u306F\u3001\u975E\u96C6\u8A08\u30D7\u30ED\u30FC\u30D6\u306E\u7A7A\u632F\u308A\uFF08`SELECT \u30D5\u30A3\u30FC\u30EB\u30C9 FROM ... WHERE ...` \u304C 0 \u4EF6\uFF09\u3084 GROUP BY \u4ED8\u304D\u96C6\u8A08\u304C 0 \u884C\u306B\u306A\u308B\u5834\u5408\u3067\u3059\n\n### \u5236\u9650\uFF08\u521D\u671F\u7248\uFF09\n\n| \u9805\u76EE | \u5185\u5BB9 |\n|---|---|\n| `AND` / `OR` \u306E\u8907\u5408\u6761\u4EF6 | \u975E\u5BFE\u5FDC\uFF08\u8907\u6570\u306E `ASSERT` \u6587\u306B\u5206\u3051\u3066\u66F8\u304F\uFF09 |\n| \u88F8\u306E\u5024\u306E\u307F\uFF08`ASSERT 1`\uFF09 | \u975E\u5BFE\u5FDC\uFF08\u6BD4\u8F03\u6F14\u7B97\u5B50\u307E\u305F\u306F BETWEEN \u304C\u5FC5\u9808\uFF09 |\n| \u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167 | \u975E\u5BFE\u5FDC\uFF08FROM \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u306A\u3044\u305F\u3081\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u306F\u4F7F\u7528\u53EF\uFF09 |\n| \u95A2\u6570\u547C\u3073\u51FA\u3057 | \u5F0F\u306E\u76F4\u4E0B\u3067\u306F\u975E\u5BFE\u5FDC\uFF08\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3059\u308B\uFF09 |\n| \u30B5\u30D6\u30AF\u30A8\u30EA\u76F4\u5F8C\u306E\u7B97\u8853 | \u975E\u5BFE\u5FDC\uFF08`(SELECT ...) * 2` \u306F\u4E0D\u53EF\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3059\u308B\uFF09 |\n\n> **\u6CE8\u610F\uFF08\u65E2\u5B58\u5236\u9650\u3068\u306E\u7D44\u307F\u5408\u308F\u305B\uFF09**: `UPDATE` / `DELETE` \u306E\u30B5\u30D6\u30AF\u30A8\u30EA\u3067\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\uFF08`ArgumentError: temp table references in UPDATE are not supported yet.` \u2014 \xA725\uFF09\u3002`ASSERT` \u81EA\u4F53\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u53C2\u7167\u3067\u304D\u308B\u305F\u3081\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3067\u4EF6\u6570\u3092\u691C\u8A3C\u3057\u3064\u3064\u5F8C\u7D9A\u306E `UPDATE` / `DELETE` \u306B\u306F\u540C\u3058 WHERE \u6761\u4EF6\u3092\u76F4\u63A5\u66F8\u304F\u304B\u3001\u5F8C\u7D9A\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30BD\u30FC\u30B9\u5BFE\u5FDC\u306E `INSERT` / `UPSERT ... SELECT` \u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n---', uri: "ksql://language-reference/26-assert" }, "27-flow-dialect-1": { heading: "27. Flow dialect 1", text: "## 27. Flow dialect 1\n\n> \u30D0\u30C3\u30C1\u5B9F\u884C\u30E9\u30F3\u30CA\u30FC **kSQL Flow**\uFF08\u5225\u30EA\u30DD\u30B8\u30C8\u30EA\uFF09\u306E\u305F\u3081\u306E\u62E1\u5F35\u69CB\u6587\u30BB\u30C3\u30C8\u3067\u3059\u3002\u30B9\u30AF\u30EA\u30D7\u30C8\u5148\u982D\u306B `-- @ksql dialect: 1` \u3092**\u5BA3\u8A00\u3057\u305F\u3068\u304D\u3060\u3051**\u6709\u52B9\u306B\u306A\u308A\uFF08opt-in\uFF09\u3001\u5BA3\u8A00\u306E\u306A\u3044\u30B9\u30AF\u30EA\u30D7\u30C8\uFF08dialect 0\uFF1D\u65E2\u5B9A\uFF09\u306E\u6319\u52D5\u306F\u4E00\u5207\u5909\u308F\u308A\u307E\u305B\u3093\u3002dialect 0 \u3067\u672C\u7BC0\u306E\u69CB\u6587\u3092\u4F7F\u3046\u3068\u300C`-- @ksql dialect: 1` \u306E\u5BA3\u8A00\u304C\u5FC5\u8981\u3067\u3059\u300D\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002\uFF08v3.69.0\uFF09\n\n\u5BFE\u5FDC\u9762: CLI\uFF08`-f`\u30FB\u30B3\u30F3\u30BD\u30FC\u30EB\uFF09\uFF0FMCP\uFF08`ksql_validate` / `ksql_explain` / `ksql_query`\uFF09\uFF0F\u30D7\u30E9\u30B0\u30A4\u30F3\uFF0F\u516C\u5F0F API `@rex0220/kintone-sql-tools/flow`\u3002\n\n### 27.1 `-- @ksql` \u30D8\u30C3\u30C0\n\n\u30D5\u30A1\u30A4\u30EB\u5148\u982D\u306E\u9023\u7D9A\u3059\u308B\u30B3\u30E1\u30F3\u30C8\u884C\u306E\u3046\u3061 `-- @ksql key: value` \u5F62\u5F0F\u3092\u89E3\u6790\u3057\u307E\u3059\u3002\u884C\u672B\u306E `# \u30B3\u30E1\u30F3\u30C8` \u306F\u7121\u8996\u3057\u307E\u3059\u3002\n\n```sql\n-- @ksql name: monthly_sales_sync # \u8AD6\u7406\u540D\u3002\u7701\u7565\u6642\u306F null\uFF08\u30E9\u30F3\u30CA\u30FC\u304C\u30D5\u30A1\u30A4\u30EB\u540D\u3067\u88DC\u5B8C\uFF09\n-- @ksql depends_on: job_a, job_b # \u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u8AD6\u7406\u540D\u30EA\u30B9\u30C8\uFF08\u30A8\u30F3\u30B8\u30F3\u306F\u89E3\u6790\u306E\u307F\uFF09\n-- @ksql timeout: 600 # \u6B63\u306E\u6574\u6570\uFF08\u79D2\uFF09\u3002\u30A8\u30F3\u30B8\u30F3\u306F\u89E3\u6790\u306E\u307F\n-- @ksql dialect: 1 # 0 \u307E\u305F\u306F 1\u3002\u7701\u7565\u6642\u306F 0\uFF08\u65E2\u5B58\u4E92\u63DB\u30E2\u30FC\u30C9\uFF09\n```\n\n| \u898F\u5247 | \u6319\u52D5 |\n|---|---|\n| \u672A\u77E5\u306E\u30AD\u30FC | \u30A8\u30E9\u30FC\u306B\u305B\u305A**\u8B66\u544A**\uFF08\u524D\u65B9\u4E92\u63DB\uFF09 |\n| \u540C\u4E00\u30AD\u30FC\u306E\u91CD\u8907 | \u8B66\u544A\u30FB**\u6700\u521D\u306E\u5024**\u3092\u4FDD\u6301 |\n| `timeout` \u304C\u6B63\u306E\u6574\u6570\u3067\u306A\u3044 / `dialect` \u304C 0\u30FB1 \u4EE5\u5916 / `name`\u30FB`depends_on` \u304C\u7A7A | \u30A8\u30E9\u30FC\uFF08\u5B9F\u884C\u524D\u306B\u505C\u6B62\uFF09 |\n\n### 27.2 `ASSERT <\u6761\u4EF6>, '\u30E1\u30C3\u30BB\u30FC\u30B8'` / `ASSERT WARN` \u2014 \u7570\u5E38\u4E2D\u65AD\u3068\u8B66\u544A\u7D9A\u884C\n\n\u65E2\u5B58\u306E `ASSERT`\uFF08\xA726\uFF09\u306B\u3001**\u672B\u5C3E\u306E\u30E1\u30C3\u30BB\u30FC\u30B8**\u3068 **`WARN` \u4FEE\u98FE**\u304C\u52A0\u308F\u308A\u307E\u3059\u3002\u6761\u4EF6\u90E8\u306E\u6587\u6CD5\u30FB\u6BD4\u8F03\u898F\u5247\u306F \xA726 \u3068\u540C\u4E00\u3067\u3059\u3002\n\n```sql\nASSERT (SELECT COUNT(*) FROM APP100 WHERE \u91D1\u984D < 0) = 0,\n '\u3010\u7570\u5E38\u4E2D\u65AD\u3011\u30DE\u30A4\u30CA\u30B9\u306E\u58F2\u4E0A\u30C7\u30FC\u30BF\u304C\u5B58\u5728\u3059\u308B\u305F\u3081\u51E6\u7406\u3092\u505C\u6B62\u3057\u307E\u3057\u305F';\n\nASSERT WARN (SELECT COUNT(*) FROM #summary) < 10000, '\u4EF6\u6570\u304C\u60F3\u5B9A\u3088\u308A\u591A\u3044\uFF08\u7D9A\u884C\u3057\u307E\u3059\uFF09';\n```\n\n| \u5F62 | \u4E0D\u6210\u7ACB\u6642 | \u5F8C\u7D9A\u6587 |\n|---|---|---|\n| `ASSERT <\u6761\u4EF6>, 'msg'` | `AssertError`\uFF08msg \u3092\u542B\u3080\uFF09\u3067**\u4E2D\u65AD** | \u5B9F\u884C\u3057\u306A\u3044\uFF08skip\uFF09 |\n| `ASSERT WARN <\u6761\u4EF6>, 'msg'` | **\u8B66\u544A\u3092\u8A18\u9332\u3057\u3066\u7D9A\u884C** | \u5B9F\u884C\u3059\u308B |\n\n### 27.3 `EXIT SUCCESS IF <\u6761\u4EF6>, '\u30E1\u30C3\u30BB\u30FC\u30B8'` \u2014 \u6B63\u5E38\u306A\u65E9\u671F\u7D42\u4E86\n\n\u6761\u4EF6\u304C\u6210\u7ACB\u3057\u305F\u3089\u3001\u305D\u3053\u3067**\u6B63\u5E38\u7D42\u4E86**\u3057\u307E\u3059\uFF08\u5F8C\u7D9A\u6587\u306F `skippedReason: \"exit\"` \u3067 skip\u30FB\u30D0\u30C3\u30C1\u5168\u4F53\u306F\u6210\u529F\u6271\u3044\uFF09\u3002\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u5FC5\u9808\u3067\u3059\u3002\u30D0\u30C3\u30C1\u5C02\u7528\uFF08\u5358\u6587\u5B9F\u884C\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF09\u3002\n\n```sql\nEXIT SUCCESS IF (SELECT COUNT(*) FROM #summary) = 0,\n '\u96C6\u8A08\u5BFE\u8C61\u3068\u306A\u308B\u53D7\u6CE8\u30C7\u30FC\u30BF\u304C 0 \u4EF6\u306E\u305F\u3081\u30B9\u30AD\u30C3\u30D7';\n```\n\n> **ASSERT \u3068\u306E\u66F8\u304D\u5206\u3051\uFF08\u8A2D\u8A08\u4E0A\u306E\u7406\u7531\uFF09**: \u300C\u5BFE\u8C61 0 \u4EF6\u300D\u3092 ASSERT \u3067\u6B62\u3081\u308B\u3068\u3001\u6708\u521D\u3084\u4F11\u65E5\u306E\u305F\u3073\u306B\u8AA4\u30A2\u30E9\u30FC\u30C8\u304C\u51FA\u3066\u76E3\u8996\u304C\u5F62\u9AB8\u5316\u3057\u307E\u3059\u3002**\u696D\u52D9\u7570\u5E38\uFF1D`ASSERT`\uFF08\u5931\u6557\u30FB\u901A\u77E5\u5BFE\u8C61\uFF09\uFF0F\u5BFE\u8C61\u306A\u3057\uFF1D`EXIT SUCCESS IF`\uFF08\u6210\u529F\u30FB\u901A\u77E5\u4E0D\u8981\uFF09**\u3068\u8A9E\u5F59\u3092\u5206\u3051\u3066\u304F\u3060\u3055\u3044\u3002\n\n### 27.4 \u69CB\u6587\u30A8\u30A4\u30EA\u30A2\u30B9 \u2014 \u65E2\u5B58\u69CB\u6587\u3078\u306E\u6B63\u898F\u5316\n\n\u4EE5\u4E0B\u306F**\u30D1\u30FC\u30B9\u6642\u306B\u65E2\u5B58\u69CB\u6587\u3068\u540C\u4E00\u306E\u5185\u90E8\u8868\u73FE\u3078\u6B63\u898F\u5316**\u3055\u308C\u307E\u3059\uFF08\u5B9F\u884C\u30FBEXPLAIN \u306E\u6319\u52D5\u306F\u65E2\u5B58\u69CB\u6587\u3068\u540C\u4E00\uFF09\u3002\n\n| dialect 1 \u306E\u66F8\u304D\u65B9 | \u6B63\u898F\u5316\u5148\uFF08\u65E2\u5B58\uFF09 |\n|---|---|\n| `CREATE TEMP TABLE summary AS SELECT ...`\uFF08\u88F8\u540D\uFF09 | `CREATE TEMP TABLE #summary AS ...`\u3002`FROM summary` / `DROP TEMP TABLE summary` \u3082 `#summary` \u3068\u3057\u3066\u89E3\u6C7A |\n| `UPSERT INTO APPn (...) SELECT ... KEY (\u30AD\u30FC)` | `UPSERT ... ON DUPLICATE (\u30AD\u30FC)` |\n| `MERGE INTO APPn AS t USING src AS s ON t.k = s.k WHEN MATCHED THEN UPDATE SET ... WHEN NOT MATCHED THEN INSERT (...) VALUES (...)` | `UPSERT ... SELECT ... ON DUPLICATE (k)` |\n\n`MERGE` \u306E\u5236\u7D04:\n\n- \u30BF\u30FC\u30B2\u30C3\u30C8\u30FB`USING` \u30BD\u30FC\u30B9\u3068\u3082 **`AS` \u5225\u540D\u304C\u5FC5\u9808**\u3002\u30BD\u30FC\u30B9\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30FBCTE\u30FB`APPn` \u3092\u6307\u5B9A\u53EF\n- `ON` \u306F **\u5358\u4E00\u30AD\u30FC\u306E\u7B49\u5024\uFF08`t.k = s.k`\uFF09\u306E\u307F**\u3002\u8907\u6570\u6761\u4EF6\u30FB\u975E\u7B49\u5024\u306F\u30A8\u30E9\u30FC\uFF08\u56DE\u907F\u7B56: \u9023\u7D50\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\uFF09\n- **`WHEN MATCHED` / `WHEN NOT MATCHED` \u306E\u4E21\u53E5\u304C\u5FC5\u9808**\u3002\u7247\u5074\u3060\u3051\u306E MERGE \u306F\u30A8\u30E9\u30FC\uFF08\u66F4\u65B0\u306E\u307F\u306F `UPDATE ... FROM`\u3001\u633F\u5165\u306E\u307F\u306F `INSERT ... SELECT` \u3092\u4F7F\u7528\uFF09\n- \u540C\u4E00\u5217\u306B\u4E21\u53E5\u3067**\u7570\u306A\u308B\u5F0F**\u3092\u4E0E\u3048\u308B\u3068\u30A8\u30E9\u30FC\uFF08`s.` \u4FEE\u98FE\u3092\u9664\u3044\u3066\u540C\u3058\u5F0F\u306A\u3089\u53EF\u30FB\u6570\u5024\u306F\u5024\u3067\u6BD4\u8F03\uFF09\n- `ON` \u306E\u30AD\u30FC\u5217\u306F INSERT \u5217\u30EA\u30B9\u30C8\u306B\u542B\u3081\u308B\u3053\u3068\u3002\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306F\u5BFE\u8C61\u5916\n- `CHECK WHEN` / `VALIDATE ONLY` / `ON ERROR SKIP` \u306F\u65E2\u5B58 UPSERT \u3068\u540C\u69D8\u306B\u4F7F\u3048\u307E\u3059\n\n### 27.5 `@NOW()` / `@TODAY()` / `@MONTH_START()` / `@NEXT_MONTH_START()` \u2014 as-of \u56FA\u5B9A\u306E\u6642\u523B\u95A2\u6570\n\n**\u30B9\u30AF\u30EA\u30D7\u30C8\u5168\u4F53\u3067\u5358\u4E00\u306E\u57FA\u6E96\u6642\u523B\uFF08as-of\uFF09**\u304B\u3089\u5C0E\u51FA\u3055\u308C\u308B\u6642\u523B\u95A2\u6570\u3067\u3059\uFF08\u5F15\u6570\u306A\u3057\u306E `()` \u56FA\u5B9A\uFF09\u3002\u5B9F\u884C\u306E\u305F\u3073\u306B\u6642\u8A08\u3092\u8AAD\u307F\u76F4\u3055\u306A\u3044\u305F\u3081\u3001\u65E5\u8DE8\u304E\u306E\u9577\u6642\u9593\u5B9F\u884C\u3067\u3082\u6587\u306E\u9593\u3067\u57FA\u6E96\u304C\u30BA\u30EC\u305A\u3001\u57FA\u6E96\u6642\u523B\u3092\u6CE8\u5165\u3059\u308C\u3070**\u904E\u53BB\u65E5\u4ED8\u3067\u306E\u518D\u96C6\u8A08\uFF08\u30D0\u30C3\u30AF\u30D5\u30A3\u30EB\uFF09\u3092\u540C\u3058\u30B9\u30AF\u30EA\u30D7\u30C8\u3067\u518D\u73FE**\u3067\u304D\u307E\u3059\u3002\n\n| \u95A2\u6570 | \u5024 | \u4F8B |\n|---|---|---|\n| `@NOW()` | as-of \u306E UTC ISO 8601\uFF08\u30DF\u30EA\u79D2\u4ED8\u304D\uFF09 | `2026-08-21T09:00:00.000Z` |\n| `@TODAY()` | as-of \u3092\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3067\u898B\u305F\u66A6\u65E5 | `2026-08-21` |\n| `@MONTH_START()` | \u305D\u306E\u66A6\u65E5\u306E\u6708\u521D | `2026-08-01` |\n| `@NEXT_MONTH_START()` | \u7FCC\u6708\u521D | `2026-09-01` |\n\n- \u4F7F\u3048\u308B\u5834\u6240: `WHERE` \u306E\u6BD4\u8F03\u30FB`SELECT` \u5217\uFF08**\u5225\u540D\u7701\u7565\u53EF**\uFF09\u30FBDML \u306E\u5024\u30FB**`INSERT ... VALUES`\uFF08v3.72.0\u301C\uFF09**\u30FB`SET` / `DECLARE` \u306E\u53F3\u8FBA\u306A\u3069\u3001\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u66F8\u3051\u308B\u4F4D\u7F6E\u3002`UPSERT ... VALUES` \u3068 APPLY \u306E\u5024\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08`INSERT ... SELECT` / `UPSERT ... SELECT` \u3067\u6CE8\u5165\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\u8A55\u4FA1\u5F8C\u306F\u901A\u5E38\u306E\u30EA\u30C6\u30E9\u30EB\u3068\u3057\u3066\u6271\u308F\u308C\u3001`WHERE` \u306E\u62BC\u3057\u4E0B\u3052\u306B\u3082\u305D\u306E\u307E\u307E\u4E57\u308A\u307E\u3059\n- \u57FA\u6E96\u6642\u523B\u3068\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u306E\u6CE8\u5165\u306F\u516C\u5F0F API\uFF08`/flow`\u30FB\u30A8\u30F3\u30B8\u30F3\u30AA\u30D7\u30B7\u30E7\u30F3 `asOf` / `timezone`\uFF09\u3067\u884C\u3044\u307E\u3059\u3002**\u7701\u7565\u6642\u306F\u5B9F\u884C\u958B\u59CB\u6642\u523B\u30FB\u5B9F\u884C\u74B0\u5883\u306E\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3**\u3067\u3059\uFF08CLI / MCP \u304B\u3089\u306E\u5B9F\u884C\u306F\u73FE\u72B6\u3053\u306E\u65E2\u5B9A\u306E\u307F\uFF09\n- \u65E5\u6642\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u306E\u7BC4\u56F2\u6BD4\u8F03\u306F**\u534A\u958B\u533A\u9593**\u3067\u66F8\u3044\u3066\u304F\u3060\u3055\u3044: `\u53D7\u6CE8\u65E5 >= @MONTH_START() AND \u53D7\u6CE8\u65E5 < @NEXT_MONTH_START()`\n\n> **`@` \u306A\u3057\u306E `TODAY()` / `NOW()` / `THIS_MONTH()` \u7B49\uFF08\xA76\uFF09\u3068\u306E\u9055\u3044**: `@` \u306A\u3057\u306F**\u6761\u4EF6\u3054\u3068 kintone \u30B5\u30FC\u30D0\u30FC\u3078\u9001\u3089\u308C\u3001kintone \u306E\u6642\u8A08\u3067\u8A55\u4FA1**\u3055\u308C\u307E\u3059\u3002as-of \u3092\u6CE8\u5165\u3057\u3066\u3082\u56FA\u5B9A\u3055\u308C\u307E\u305B\u3093\u3002dialect 1 \u30B9\u30AF\u30EA\u30D7\u30C8\u306E WHERE \u3067\u3053\u308C\u3089\u3092\u4F7F\u3046\u3068**\u8B66\u544A**\u304C\u51FA\u307E\u3059\uFF08\u518D\u73FE\u6027\u304C\u5FC5\u8981\u306A\u3089 `@` \u4ED8\u304D\u3078\u3002\u62BC\u3057\u4E0B\u3052\u6027\u80FD\u3092\u512A\u5148\u3057\u3066\u610F\u56F3\u7684\u306B\u4F7F\u3046\u5834\u5408\u306F\u8B66\u544A\u3092\u7121\u8996\u3057\u3066\u69CB\u3044\u307E\u305B\u3093\uFF09\u3002\n\n### 27.6 validate \u62E1\u5F35\u3068\u8A3A\u65AD\n\ndialect 1 \u30B9\u30AF\u30EA\u30D7\u30C8\u306B\u306F\u8FFD\u52A0\u306E\u691C\u8A3C\u304C\u50CD\u304D\u307E\u3059\u3002\u8A3A\u65AD\u306F `severity`\uFF08error / warning\uFF09\u30FB\u30B3\u30FC\u30C9\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u30FB\u4F4D\u7F6E\u3092\u6301\u3061\u307E\u3059\u3002\n\n| \u30B3\u30FC\u30C9 | \u5185\u5BB9 | \u533A\u5206 |\n|---|---|---|\n| `KSQL1001`\u301C`KSQL1006` | \u30D8\u30C3\u30C0\u306E\u672A\u77E5\u30AD\u30FC\u30FB\u91CD\u8907\u30FB\u5024\u4E0D\u6B63 | \u8B66\u544A / \u30A8\u30E9\u30FC |\n| `KSQL1101` | `LAPP_` \u8AD6\u7406\u30A2\u30D7\u30EA\u304C\u672A\u89E3\u6C7A | \u30A8\u30E9\u30FC |\n| `KSQL1201`\u301C`KSQL1203` | \u5B57\u53E5\u30FB\u69CB\u6587\u30A8\u30E9\u30FC / dialect 1 \u5BA3\u8A00\u304C\u5FC5\u8981 | \u30A8\u30E9\u30FC |\n| `KSQL1301` | UPSERT / MERGE \u306E**\u8907\u5408\u30AD\u30FC**\uFF08\u56DE\u907F\u7B56: \u9023\u7D50\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\uFF09 | \u30A8\u30E9\u30FC |\n| `KSQL1302` | \u30AD\u30FC\u306E\u578B\u304C\u6587\u5B57\u5217\uFF081\u884C\uFF09\u30FB\u6570\u5024\u4EE5\u5916 | \u30A8\u30E9\u30FC |\n| `KSQL1303` | \u30AD\u30FC\u304C**\u91CD\u8907\u7981\u6B62**\u8A2D\u5B9A\u3067\u306A\u3044\uFF08\u8A2D\u5B9A\u3092\u53D6\u5F97\u3067\u304D\u306A\u3044\u74B0\u5883\u3067\u306F\u8B66\u544A\uFF09 | \u30A8\u30E9\u30FC / \u8B66\u544A |\n| `KSQL1304` | \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3078\u306E DML\uFF08SELECT \u306F\u53EF\uFF09 | \u30A8\u30E9\u30FC |\n| `KSQL1305` | \u7D20\u306E `INSERT`\uFF08\u51AA\u7B49\u6027\u306E\u305F\u3081 UPSERT / MERGE \u3092\u63A8\u5968\u3002strict \u6307\u5B9A\u3067\u30A8\u30E9\u30FC\uFF09 | \u8B66\u544A / \u30A8\u30E9\u30FC |\n| `KSQL1306` | `@` \u306A\u3057\u6642\u523B\u95A2\u6570\u306F as-of \u306E\u5BFE\u8C61\u5916 | \u8B66\u544A |\n\n- `KSQL1301`\u301C`KSQL1304` \u306F**\u5B9F\u884C\u6642\u306B\u3082\u66F8\u8FBC API \u3092\u547C\u3076\u524D\u306B\u691C\u67FB**\u3055\u308C\u3001\u9055\u53CD\u306F\u30A8\u30E9\u30FC\u3067\u505C\u6B62\u3057\u307E\u3059\uFF08\u5B9F\u884C\u524D\u306F\u5B89\u5168\u5074\u306B\u5012\u3057\u3001\u91CD\u8907\u7981\u6B62\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3067\u304D\u306A\u3044\u5834\u5408\u3082\u30A8\u30E9\u30FC\uFF09\n- \u8907\u5408\u30AD\u30FC\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DML \u306F **dialect 0 \u3067\u306F\u5F93\u6765\u3069\u304A\u308A**\u4F7F\u3048\u307E\u3059\uFF08\u672C\u691C\u8A3C\u306F dialect 1 \u9650\u5B9A\uFF09\n\n### 27.7 EXPLAIN \u306E\u63A8\u5B9A API \u6D88\u8CBB\n\n`@NOW()` \u7B49\u306E as-of \u95A2\u6570\u306F **EXPLAIN / dry-run \u7D4C\u8DEF\u3067\u3082\u8A55\u4FA1**\u3055\u308C\u307E\u3059\uFF08\u57FA\u6E96\u6642\u523B\u306F EXPLAIN \u958B\u59CB\u6642\u306B\u78BA\u5B9A\u3002\u516C\u5F0F API `explainScript` \u3067\u306F `asOf` / `timezone` \u3092\u6CE8\u5165\u53EF\u80FD\u30FBv3.70.0\uFF09\u3002\n\ndialect 1 \u30D0\u30C3\u30C1\u306E `EXPLAIN` \u306B\u306F\u3001\u5404\u6587\u306E**\u63A8\u5B9A API \u6D88\u8CBB**\uFF08HTTP \u30EA\u30AF\u30A8\u30B9\u30C8\u5358\u4F4D\uFF09\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3059\u3002\u8AAD\u53D6\uFF08500 \u4EF6/\u56DE\uFF09\u30FB\u30D5\u30A9\u30FC\u30E0\u60C5\u5831\u53D6\u5F97\u30FBUPSERT \u306E\u4E8B\u524D GET\uFF08\u91CD\u8907\u5224\u5B9A\uFF09\u30FB\u66F8\u8FBC\uFF08100 \u4EF6/\u56DE\uFF09\u3092\u5206\u89E3\u3057\u3066\u8868\u793A\u3057\u3001\u5B9F\u884C\u524D\u306B\u4EF6\u6570\u304C\u5206\u304B\u3089\u306A\u3044\u9805\u306F\u300C**\u4E0D\u660E\uFF08\u4E0A\u9650 N \u3068\u4EEE\u5B9A: \u6700\u5927 M \u56DE\uFF09**\u300D\u306E\u5F62\u5F0F\u3067\u793A\u3057\u307E\u3059\uFF08\u6570\u5B57\u3092\u634F\u9020\u3057\u307E\u305B\u3093\uFF09\u3002`bulkRequest` \u306F\u672A\u5B9F\u88C5\u306E\u305F\u3081\u3001\u66F8\u8FBC\u306F 1 \u30EA\u30AF\u30A8\u30B9\u30C8 100 \u4EF6\u3067\u6570\u3048\u307E\u3059\u3002\n\n### 27.8 \u30B5\u30F3\u30D7\u30EB\u30B8\u30E7\u30D6\uFF08\u5168\u90E8\u5165\u308A\uFF09\n\n```sql\n-- @ksql name: monthly_sales_sync\n-- @ksql depends_on: sync_master_customers\n-- @ksql timeout: 600\n-- @ksql dialect: 1\n\n-- Step 1: \u696D\u52D9\u7570\u5E38\u306A\u3089\u4E2D\u65AD\uFF08\u901A\u77E5\u5BFE\u8C61\uFF09\nASSERT (\n SELECT COUNT(*) FROM LAPP_\u53D7\u6CE8\n WHERE \u53D7\u6CE8\u65E5 >= @MONTH_START() AND \u53D7\u6CE8\u65E5 < @NEXT_MONTH_START() AND \u91D1\u984D < 0\n) = 0, '\u3010\u7570\u5E38\u4E2D\u65AD\u3011\u30DE\u30A4\u30CA\u30B9\u306E\u58F2\u4E0A\u30C7\u30FC\u30BF\u304C\u5B58\u5728\u3059\u308B\u305F\u3081\u51E6\u7406\u3092\u505C\u6B62\u3057\u307E\u3057\u305F';\n\n-- Step 2: \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u96C6\u8A08\uFF08\u88F8\u540D\u306F #\u4ED8\u304D\u306B\u6B63\u898F\u5316\u3055\u308C\u308B\uFF09\nCREATE TEMP TABLE temp_monthly_summary AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, COUNT(\u30EC\u30B3\u30FC\u30C9\u756A\u53F7) AS \u53D7\u6CE8\u4EF6\u6570, SUM(\u91D1\u984D) AS \u5F53\u6708\u58F2\u4E0A\u5408\u8A08\nFROM LAPP_\u53D7\u6CE8\nWHERE \u53D7\u6CE8\u65E5 >= @MONTH_START() AND \u53D7\u6CE8\u65E5 < @NEXT_MONTH_START() AND \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8\u5B8C\u4E86'\nGROUP BY \u9867\u5BA2\u30B3\u30FC\u30C9;\n\n-- Step 3: \u5BFE\u8C61 0 \u4EF6\u306F\u6B63\u5E38\u7D42\u4E86\uFF08\u901A\u77E5\u4E0D\u8981\uFF09\nEXIT SUCCESS IF (SELECT COUNT(*) FROM temp_monthly_summary) = 0,\n '\u96C6\u8A08\u5BFE\u8C61\u3068\u306A\u308B\u53D7\u6CE8\u30C7\u30FC\u30BF\u304C 0 \u4EF6\u306E\u305F\u3081\u30B9\u30AD\u30C3\u30D7';\n\n-- Step 4: \u30AD\u30FC\u4E00\u81F4\u3067\u66F4\u65B0\u30FB\u306A\u3051\u308C\u3070\u633F\u5165\uFF08\u30AD\u30FC\u306F\u91CD\u8907\u7981\u6B62\u8A2D\u5B9A\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\uFF09\nUPSERT INTO LAPP_\u9867\u5BA2\u30DE\u30B9\u30BF (\u9867\u5BA2\u30B3\u30FC\u30C9, \u5F53\u6708\u53D7\u6CE8\u4EF6\u6570, \u5F53\u6708\u58F2\u4E0A\u5B9F\u7E3E, \u6700\u7D42\u96C6\u8A08\u65E5\u6642)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u53D7\u6CE8\u4EF6\u6570, \u5F53\u6708\u58F2\u4E0A\u5408\u8A08, @NOW()\nFROM temp_monthly_summary\nKEY (\u9867\u5BA2\u30B3\u30FC\u30C9);\n```\n\n### 27.9 \u516C\u5F0F API `/flow` \u306E\u5B9F\u884C\u4E0A\u9650\u30AA\u30D7\u30B7\u30E7\u30F3\n\n- **\u8AAD\u53D6\u4E0A\u9650 `maxRecords`\uFF08\u65E2\u5B9A 10,000\uFF09**: \u6587\u5358\u4F4D\u306E\u8AAD\u53D6\u5019\u88DC\u884C\u6570\u4E0A\u9650\u3002`createExecutionContext` \u306E options \u3067\u6307\u5B9A\u3057\u3001`executeStatement`\uFF0F`previewStatement` \u306F\u540C\u3058\u5B9F\u884C\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306E\u5024\u3092\u5171\u6709\u3057\u307E\u3059\u3002`explainScript` \u306F\u81EA\u8EAB\u306E options \u306E `maxRecords` \u3092\u4F7F\u3044\u307E\u3059\uFF08\u5B9F\u884C\u30FBpreview\u30FBEXPLAIN \u306E 3 \u9762\u3067\u540C\u5024\u30FB\u5B9F\u6E2C v3.72.0\uFF09\n- **\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5B9F\u4F53\u5316\u4E0A\u9650 `tempTableMaxRows`\uFF08\u65E2\u5B9A 10,000\u30FB\u72EC\u7ACB\uFF09**: \u8D85\u904E\u306F `onLimitReached` \u306B\u304B\u304B\u308F\u3089\u305A\u5E38\u306B\u30A8\u30E9\u30FC\u3067\u3059\u3002`maxRecords` \u3060\u3051\u5F15\u304D\u4E0A\u3052\u3066\u3082 10,000 \u884C\u8D85\u306E\u5B9F\u4F53\u5316\u306F\u505C\u6B62\u3059\u308B\u305F\u3081\u3001\u5B9F\u4F53\u5316\u3092\u4F34\u3046\u30D0\u30C3\u30C1\u3067\u306F\u4E21\u65B9\u3092\u4F75\u305B\u3066\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: `{ maxRecords: 25000, tempTableMaxRows: 25000 }`\uFF09\n- **\u5024\u306E\u4E0A\u9650\u306F\u8A2D\u3051\u3066\u3044\u307E\u305B\u3093**\uFF08\u6B63\u306E\u6574\u6570\u3092\u53D7\u7406\uFF09\u3002\u305F\u3060\u3057\u8AAD\u53D6\u306F fetch-all \u65B9\u5F0F\u3067\u5019\u88DC\u884C\u304C\u5168\u4EF6\u30E1\u30E2\u30EA\u306B\u8F09\u308B\u305F\u3081\u3001\u300C\u53D7\u7406\u3055\u308C\u308B\u300D\u3053\u3068\u3068\u300C\u305D\u306E\u898F\u6A21\u3067\u52D5\u4F5C\u304C\u5B9F\u6E2C\u6E08\u307F\u3067\u3042\u308B\u300D\u3053\u3068\u306F\u5225\u3067\u3059\u3002\u5927\u304D\u306A\u5024\u3092\u5E38\u7528\u3059\u308B\u5834\u5408\u306F\u3001\u547C\u3073\u51FA\u3057\u5074\uFF08\u30E9\u30F3\u30CA\u30FC\u7B49\uFF09\u3067\u904B\u7528\u4E0A\u306E\u4E0A\u9650\u3092\u691C\u8A3C\u3059\u308B\u3053\u3068\u3092\u63A8\u5968\u3057\u307E\u3059\n\n---", uri: "ksql://language-reference/27-flow-dialect-1" } } }, recipes: { title: "kSQL \u30D0\u30C3\u30C1\u8A2D\u8A08\u30EC\u30B7\u30D4\u96C6", index: "# kSQL \u30D0\u30C3\u30C1\u8A2D\u8A08\u30EC\u30B7\u30D4\u96C6 index\n\nSafe, rerunnable batch design recipes for CLI, MCP, and the plugin.\n\nSource: `docs/ksql_batch_recipes.md`\n\n## \u8A2D\u8A08\u539F\u5247\uFF08\u30EA\u30E9\u30F3\u53EF\u80FD\u30D0\u30C3\u30C1\uFF09\n\nkSQL \u30D0\u30C3\u30C1\u306F**\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u3092\u6301\u305F\u305A\u975E\u30A2\u30C8\u30DF\u30C3\u30AF**\u3067\u3059\u3002\u3044\u3064\u5931\u6557\u3057\u3066\u3082**\u5148\u982D\u304B\u3089\u306E\u30EA\u30E9\u30F3\u3060\u3051\u3067\u6B63\u3057\u304F\u56DE\u5FA9\u3067\u304D\u308B**\u8A2D\u8A08\u306B\u3057\u307E\u3059\u3002\n\n1. **\u30B9\u30C6\u30FC\u30BF\u30B9\u99C6\u52D5**: \u5BFE\u8C61\u3092\u300C\u672A\u51E6\u7406 \u2192 \u51E6\u7406\u4E2D \u2192 \u51E6\u7406\u6E08\u300D\u3067\u7BA1\u7406\u3059\u308B\u3002\n2. **\u4E2D\u65AD\u5FA9\u65E7\u3092\u5148\u982D\u306B**: \u524D\u56DE\u306E\u4E2D\u65AD\u3067\u300C\u51E6\u7406\u4E2D\u300D\u306B\u6B8B\u3063\u305F\u5BFE\u8C61\u3092\u3001\u30EA\u30E9\u30F3\u5192\u982D\u3067\u300C\u672A\u51E6\u7406\u300D\u306B\u623B\u3059\uFF08R1 \u306E 0\uFF09\u3002\u3053\u308C\u304C\u7121\u3044\u3068 claim-first \u306F\u300C\u51E6\u7406\u4E2D\u300D\u3092\u62FE\u3048\u305A\u56DE\u5FA9\u3067\u304D\u306A\u3044\u3002\n3. **\u78BA\u4FDD \u2192 \u672C\u51E6\u7406 \u2192 \u5B8C\u4E86 \u306E\u9806\uFF08fail-fast\uFF09**: \u5BFE\u8C61\u3092\u81EA\u5206\u306E\u30D0\u30C3\u30C1 ID \u3067\u300C\u51E6\u7406\u4E2D\u300D\u306B\u78BA\u4FDD \u2192 \u30DE\u30B9\u30BF\u66F8\u304D\u8FBC\u307F \u2192 \u300C\u51E6\u7406\u6E08\u300D\u3002\u9014\u4E2D\u5931\u6557\u306F fail-fast \u3067\u5F8C\u6BB5\u306B\u9032\u307E\u305A\u3001\u6B21\u56DE\u30EA\u30E9\u30F3\u3067 0\uFF09\u304C\u56DE\u53CE\u3057\u3066\u518D\u51E6\u7406\u3059\u308B\u3002\u203B \u90E8\u5206\u6210\u529F\u3092\u691C\u51FA\u3057\u3066\u5DEE\u5206\u3060\u3051\u66F4\u65B0\u3059\u308B\u4ED5\u7D44\u307F\u3067\u306F\u306A\u3044\u3002\n4. **\u4EF6\u6570\u30B2\u30FC\u30C8**: \u78BA\u4FDD\u5BFE\u8C61\u306E\u4E0A\u9650\u306F\u78BA\u4FDD\u306E\u524D\u306B\u3001\u5B9F\u969B\u306B\u78BA\u4FDD\u3067\u304D\u305F\u4EF6\u6570\u306F\u78BA\u4FDD\u306E\u5F8C\u306B ASSERT \u3059\u308B\u3002**v3.72.0 \u672A\u6E80\u306E\u30A8\u30F3\u30B8\u30F3\u3067\u306F\u3001\u30B5\u30D6\u30AF\u30A8\u30EA\u4EF6\u6570\u306E\u5927\u5C0F\u6BD4\u8F03\u30FBBETWEEN \u304C\u8F9E\u66F8\u9806\u306B\u306A\u308B\u4E0D\u5177\u5408\uFF08B171\uFF09\u304C\u3042\u308A\u3001\u672C\u66F8\u306E\u30B2\u30FC\u30C8\u4F8B\u306F\u6841\u8DE8\u304E\u3067\u8AA4\u52D5\u4F5C\u3057\u307E\u3059\u3002v3.72.0 \u4EE5\u4E0A\u3067\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5B9F\u6E2C\u30FBv3.72.0\uFF09**\u3002**\u5DEE\u5206 0 \u4EF6\u3092\u6B63\u5E38\u3068\u3059\u308B\u304B\u7570\u5E38\u3068\u3059\u308B\u304B\u306F\u904B\u7528\u3067\u9078\u3076**\uFF08\u4E0B\u8A18\uFF09\u3002\n5. **\u51AA\u7B49**: `UPSERT`\uFF08\u30AD\u30FC\u4E00\u81F4\u3067\u66F4\u65B0\u30FB\u306A\u3051\u308C\u3070\u633F\u5165\uFF09\u3002\u305F\u3060\u3057**\u30AD\u30FC\u304C\u30BD\u30FC\u30B9\u30FB\u30DE\u30B9\u30BF\u53CC\u65B9\u3067\u4E00\u610F**\u304C\u524D\u63D0\u3002\n6. **\u6642\u523B\u30FB\u30D0\u30C3\u30C1 ID \u306E\u56FA\u5B9A**: `SET @now = NOW()` \u3092 1 \u56DE\u3060\u3051\u8A55\u4FA1\u3057\u3001\u78BA\u4FDD\u30FB\u5B8C\u4E86\u30FB\u7A81\u5408\u3067\u4F7F\u3044\u56DE\u3059\uFF081a \u3067\u306F `SET @b = @a` \u4E0D\u53EF\uFF09\u3002\n\n---\n\n## Sections\n\n- [R1. \u5DEE\u5206\u66F4\u65B0\u30D0\u30C3\u30C1\uFF08\u5FA9\u65E7 \u2192 \u78BA\u4FDD \u2192 \u51E6\u7406 \u2192 \u5B8C\u4E86\uFF09](ksql://recipes/r1)\n- [R2. \u4E8B\u524D\u30B2\u30FC\u30C8\uFF08\u4EF6\u6570\u30C1\u30A7\u30C3\u30AF\u30FBinserts/updates \u5185\u8A33\uFF09](ksql://recipes/r2)\n- [R3. \u66F4\u65B0\u524D\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\uFF08`#before`\uFF09](ksql://recipes/r3)\n- [R4. \u30D0\u30C3\u30C1\u5909\u6570\u306E\u6D3B\u7528\uFF08v2.1.0\uFF09](ksql://recipes/r4)\n- [R5. \u30EA\u30C6\u30E9\u30EB\u5024\u30EA\u30B9\u30C8\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5316\u3057\u3066\u4E00\u62EC\u51E6\u7406](ksql://recipes/r5)\n- [R6. \u4E0D\u826F\u30C7\u30FC\u30BF\u3092\u9694\u96E2\u3057\u3066\u6B8B\u308A\u3092\u6D41\u3059\uFF08`ON ERROR SKIP`\u30FBv2.13.0\uFF09](ksql://recipes/r6)\n- [R7. kintone \u306E REST API \u3068\u540C\u3058\u4E26\u3073\u3067\u5927\u91CF\u53D6\u5F97\u3059\u308B\uFF08`KORDER BY`\u30FBv3.0.0 / v3.1.0\uFF09](ksql://recipes/r7)\n- [R8. Shift_JIS \u3067\u51FA\u529B\u3067\u304D\u306A\u3044\u6F22\u5B57\u3092\u5909\u63DB\u3059\u308B\uFF08v3.2.0\uFF09](ksql://recipes/r8)\n- [R9. \u30C7\u30FC\u30BF\u54C1\u8CEA\u30C1\u30A7\u30C3\u30AF \u2014 \u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u30FB\u6587\u5B57\u6570\u4E88\u7B97\uFF08v3.2.0\uFF09](ksql://recipes/r9)\n- [R10. \u8868\u8A18\u306E\u6B63\u898F\u5316\u3092\u66F8\u304D\u623B\u3059\uFF08`UPDATE SET` \u306E\u6587\u5B57\u5217\u95A2\u6570\u30FBv3.2.0\uFF09](ksql://recipes/r10)\n- [R11. \u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A2\u30D7\u30EA\u3078\u53D6\u8FBC\u3080\uFF08`IMPORT`\u30FBv3.6.0\uFF09](ksql://recipes/r11)\n- [R12. cli-kintone \u3068 round-trip \u3059\u308B\uFF08`BY NAME`\u30FB\u30EC\u30B3\u30FC\u30C9\u756A\u53F7 UPDATE\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FBv3.6.0\uFF09](ksql://recipes/r12)\n- [R13. \u660E\u7D30\uFF0B\u5C0F\u8A08\u30FB\u7DCF\u8A08\u3092 1 \u30AF\u30A8\u30EA\u3067\u4F5C\u308B\uFF08`ROLLUP` / `GROUPING`\u30FBv3.17.0\uFF09](ksql://recipes/r13)\n- [R14. \u7D2F\u7A4D\u6B8B\u9AD8\uFF08\u53F0\u5E33\uFF09\u3092\u53D6\u5F15\u9806\u3067\u8A08\u7B97\u3059\u308B](ksql://recipes/r14)\n- [R15. \u5168\u4F53\u3067\u5272\u308B\uFF08\u69CB\u6210\u6BD4\u30FB\u7D2F\u7A4D\u69CB\u6210\u6BD4\u30FBABC\uFF09](ksql://recipes/r15)\n- [R16. \u524D\u6708\u6BD4\u3092\u51FA\u3059\uFF08`LAG`\uFF09](ksql://recipes/r16)\n- [R17. \u300C\u884C\u306E\u7121\u3044\u3082\u306E\u300D\u3092 0 \u3068\u3057\u3066\u4E26\u3079\u308B\uFF08\u30DE\u30B9\u30BF\u8D77\u70B9\u306E `LEFT JOIN`\uFF09](ksql://recipes/r17)\n- [R18. Flow dialect 1 \u3067\u6708\u6B21\u540C\u671F\u30B8\u30E7\u30D6\u3092\u66F8\u304F\uFF08`-- @ksql` \u30D8\u30C3\u30C0\u30FB`ASSERT`/`EXIT` \u30B2\u30FC\u30C8\u30FB`KEY()`\uFF09](ksql://recipes/r18)\n\nIndex URI: ksql://recipes", sections: { r1: { heading: "R1. \u5DEE\u5206\u66F4\u65B0\u30D0\u30C3\u30C1\uFF08\u5FA9\u65E7 \u2192 \u78BA\u4FDD \u2192 \u51E6\u7406 \u2192 \u5B8C\u4E86\uFF09", text: "## R1. \u5DEE\u5206\u66F4\u65B0\u30D0\u30C3\u30C1\uFF08\u5FA9\u65E7 \u2192 \u78BA\u4FDD \u2192 \u51E6\u7406 \u2192 \u5B8C\u4E86\uFF09\n\n\u89AA DML \u306E WHERE \u306B\u306F `IN (SELECT \u2026)` \u3092\u66F8\u3051\u306A\u3044\u305F\u3081\u3001**\u5BFE\u8C61\u3092\u30D0\u30C3\u30C1 ID \u3067\u78BA\u4FDD\u3057\u3066\u304B\u3089\u76F4\u63A5\u6761\u4EF6\u3067\u5B8C\u4E86**\u3055\u305B\u3001**\u4E2D\u65AD\u3067\u300C\u51E6\u7406\u4E2D\u300D\u306B\u6B8B\u3063\u305F\u5BFE\u8C61\u306F\u5192\u982D\u3067\u56DE\u53CE**\u3057\u307E\u3059\u3002\n\n```sql\nSET @now = NOW(); -- 1 \u56DE\u3060\u3051\u8A55\u4FA1\u3057\u3001\u78BA\u4FDD\u30FB\u5B8C\u4E86\u3067\u4F7F\u3044\u56DE\u3059\n\n-- 0) \u5FA9\u65E7: \u524D\u56DE\u306E\u4E2D\u65AD\u3067\u300C\u51E6\u7406\u4E2D\u300D\u306B\u6B8B\u3063\u305F\u5BFE\u8C61\u3092\u300C\u672A\u51E6\u7406\u300D\u306B\u623B\u3059\uFF08\u30EA\u30E9\u30F3\u56DE\u5FA9\u306E\u8981\uFF09\n-- \u78BA\u4FDD\u65E5\u6642\u306B\u7336\u4E88\u3092\u8A2D\u3051\u3001\u5F53\u65E5\u5B9F\u884C\u4E2D\u306E\u4ED6\u30D7\u30ED\u30BB\u30B9\u304C\u78BA\u4FDD\u3057\u305F\u884C\u3092\u6A2A\u53D6\u308A\u3057\u306A\u3044\n-- \uFF08WHERE \u306E \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 \u306F\u9078\u629E\u7CFB\u30D5\u30A3\u30FC\u30EB\u30C9\u60F3\u5B9A\u3067 IN\u3002SET \u306F = \u306E\u307E\u307E\uFF09\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u672A\u51E6\u7406'\nWHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u51E6\u7406\u4E2D') AND \u78BA\u4FDD\u65E5\u6642 < TODAY();\n\n-- 1) \u4EF6\u6570\u30B2\u30FC\u30C8\uFF08\u78BA\u4FDD\u5BFE\u8C61\u306E\u4E0A\u9650\u30020 \u4EF6\u3092\u6B63\u5E38\u306B\u3059\u308B\u306A\u3089 BETWEEN 0 \u2026\u3001\u7570\u5E38\u691C\u77E5\u3057\u305F\u3044\u306A\u3089 BETWEEN 1 \u2026\uFF09\nASSERT (SELECT COUNT(*) FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406')) BETWEEN 0 AND 10000;\n\n-- 2) \u78BA\u4FDD: \u672A\u51E6\u7406\u3092\u81EA\u5206\u306E\u30D0\u30C3\u30C1 ID \u3067\u300C\u51E6\u7406\u4E2D\u300D\u306B\uFF08\u76F4\u63A5\u6761\u4EF6\u30FB\u78BA\u4FDD\u65E5\u6642\u3082\u4ED8\u4E0E\uFF09\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u51E6\u7406\u4E2D', \u30D0\u30C3\u30C1ID = @now, \u78BA\u4FDD\u65E5\u6642 = @now\nWHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n\n-- 3) \u78BA\u4FDD\u3057\u305F\u5206\u3092\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\uFF08\u30D0\u30C3\u30C1 ID\uFF0B\u51E6\u7406\u4E2D\u306E\u76F4\u63A5\u6761\u4EF6\uFF09\nCREATE TEMP TABLE #tgt AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP100 WHERE \u30D0\u30C3\u30C1ID = @now AND \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u51E6\u7406\u4E2D');\n\n-- 4) \u78BA\u4FDD\u5F8C\u30B2\u30FC\u30C8\uFF08\u5B9F\u969B\u306B\u78BA\u4FDD\u3067\u304D\u305F\u4EF6\u6570\u306E\u4E0A\u9650\uFF09\uFF0B\u30AD\u30FC\u4E00\u610F\u30B2\u30FC\u30C8\uFF08\u51AA\u7B49\u6027\u306E\u524D\u63D0\uFF09\nASSERT (SELECT COUNT(*) FROM #tgt) <= 10000;\nASSERT (SELECT COUNT(*) FROM #tgt) = (SELECT COUNT(DISTINCT \u9867\u5BA2\u30B3\u30FC\u30C9) FROM #tgt);\n\n-- 5) \u672C\u51E6\u7406: \u30DE\u30B9\u30BF\u3078 UPSERT\uFF08UPSERT \u2026 SELECT \u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\u53EF\uFF09\nUPSERT INTO APP200 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM #tgt\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9);\n\n-- 6) \u5B8C\u4E86: \u78BA\u4FDD\u3057\u305F\u5206\u3092\u300C\u51E6\u7406\u6E08\u300D\u306B\uFF08\u76F4\u63A5\u6761\u4EF6\uFF09\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u51E6\u7406\u6E08', \u51E6\u7406\u65E5\u6642 = @now\nWHERE \u30D0\u30C3\u30C1ID = @now AND \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u51E6\u7406\u4E2D');\n```\n\n**\u306A\u305C\u3053\u306E\u5F62\u304B**\n- **0) \u306E\u5FA9\u65E7\u304C\u300C\u5148\u982D\u304B\u3089\u306E\u30EA\u30E9\u30F3\u3060\u3051\u3067\u56DE\u5FA9\u300D\u3092\u6210\u7ACB\u3055\u305B\u308B**: 5) \u3084 6) \u3067\u5931\u6557\u3059\u308B\u3068\u5BFE\u8C61\u306F\u300C\u51E6\u7406\u4E2D\u300D\u3067\u6B8B\u308B\u3002\u5FA9\u65E7\u304C\u7121\u3044\u3068\u3001\u6B21\u56DE\u30EA\u30E9\u30F3\u306F\u65B0\u3057\u3044 `@now` \u3067\u300C\u672A\u51E6\u7406\u300D\u3060\u3051\u3092\u898B\u308B\u305F\u3081\u53D6\u308A\u6B8B\u3059\u30020) \u304C\u7336\u4E88\uFF08`\u78BA\u4FDD\u65E5\u6642 < TODAY()`\uFF09\u4ED8\u304D\u3067\u56DE\u53CE\u3059\u308B\u306E\u3067\u3001\u7FCC\u5B9F\u884C\u3067\u518D\u51E6\u7406\u3055\u308C\u308B\u3002\n - **\u7336\u4E88\u306E\u610F\u5473**: `\u78BA\u4FDD\u65E5\u6642 < TODAY()` \u306F\u300C\u5F53\u65E5\u5B9F\u884C\u4E2D\u306E\u5225\u30D7\u30ED\u30BB\u30B9\u304C\u78BA\u4FDD\u3057\u305F\u884C\u3092\u6A2A\u53D6\u308A\u3057\u306A\u3044\u300D\u305F\u3081\u306E\u6700\u5C0F\u306E\u7336\u4E88\u3067\u3059\u3002\u5F53\u65E5\u4E2D\u306E\u518D\u5B9F\u884C\u3067\u56DE\u5FA9\u3057\u305F\u3044\u5834\u5408\u306F\u3001\u7336\u4E88\uFF08\u30EA\u30FC\u30B9\u671F\u9650\uFF09\u3092\u30B8\u30E7\u30D6\u5236\u5FA1\u5074\u3067\u6301\u3064\u304B\u3001\u624B\u52D5\u3067\u300C\u51E6\u7406\u4E2D \u2192 \u672A\u51E6\u7406\u300D\u306B\u623B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n- **\u78BA\u4FDD\uFF082\uFF09\u30FB\u5B8C\u4E86\uFF086\uFF09\u306F\u76F4\u63A5\u6761\u4EF6**\u3067\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3092\u53C2\u7167\u3057\u306A\u3044 \u2192 \u5B9F\u884C\u62D2\u5426\u3092\u907F\u3051\u308B\u3002\u672C\u51E6\u7406\uFF085\uFF09\u3060\u3051\u304C `UPSERT \u2026 SELECT FROM #tgt`\uFF08\u8A31\u53EF\uFF09\u3002\n- **\u591A\u91CD\u8D77\u52D5\u306E\u7DE9\u548C**: 2) \u3067\u300C\u51E6\u7406\u4E2D\u300D\u306B\u78BA\u4FDD\u3059\u308B\u305F\u3081\u3001\u5225\u5B9F\u884C\u304C\u540C\u3058\u300C\u672A\u51E6\u7406\u300D\u3092\u4E8C\u91CD\u306B\u62FE\u3044\u306B\u304F\u3044\u3002\u305F\u3060\u3057 kintone \u306B\u30EC\u30B3\u30FC\u30C9\u30ED\u30C3\u30AF\u306F\u7121\u304F\u3001**\u78BA\u4FDD UPDATE \u81EA\u4F53\u306F\u7AF6\u5408\u3057\u5F97\u308B\uFF1D\u5B8C\u5168\u306A\u6392\u4ED6\u3067\u306F\u306A\u3044**\u3002\u5225\u5B9F\u884C\u304C\u5148\u306B\u5168\u4EF6\u78BA\u4FDD\u3059\u308B\u3068\u3001\u3053\u306E\u30D0\u30C3\u30C1\u306E\u78BA\u4FDD\u306F 0 \u4EF6\u306B\u306A\u308A\u3001\u4EE5\u964D\u306F\u300C\u3084\u308B\u3053\u3068\u306A\u3057\u300D\u3067\u6B63\u5E38\u7D42\u4E86\u3059\u308B\uFF080 \u4EF6\u3092\u8A31\u5BB9\u3059\u308B\u5834\u5408\uFF09\u3002**\u53B3\u5BC6\u306A\u6392\u4ED6\u306F\u30B8\u30E7\u30D6\u5236\u5FA1\u5074**\uFF08cron \u306E\u591A\u91CD\u8D77\u52D5\u9632\u6B62\u30FB\u30ED\u30C3\u30AF\uFF09\u3067\u4FDD\u8A3C\u3002\n - `NOW()` \u306F**\u53B3\u5BC6\u306B\u4E00\u610F\u306A ID \u3067\u306F\u306A\u3044**\uFF08\u540C\u4E00\u30DF\u30EA\u79D2\u8D77\u52D5\u3067\u540C\u5024\uFF09\u3002\u78BA\u5B9F\u306A\u4E00\u610F\u6027\u304C\u8981\u308B\u5834\u5408\u306F\u547C\u3073\u51FA\u3057\u5074\u3067\u63A1\u756A\u3057\u305F ID \u3092 `DECLARE @batchId = ...` \uFF0B CLI `--var`\uFF0FMCP `variables` \u3067\u6CE8\u5165\u3059\u308B\uFF08R4 \u53C2\u7167\uFF09\u3002\n\n**\u5DEE\u5206 0 \u4EF6\uFF08\uFF1D\u7A7A\u65E5\uFF09\u306E\u6271\u3044**\n- \u65E5\u6B21 cron \u3067\u306F\u300C\u4ECA\u65E5\u306F\u5DEE\u5206\u306A\u3057\u300D\u306F\u6B63\u5E38\u7CFB\u3067\u3059\u30021) \u3092 `BETWEEN 0 AND 10000` \u306B\u3059\u308B\u3068 0 \u4EF6\u3067\u6B63\u5E38\u7D42\u4E86\u3057\u307E\u3059\u3002`BETWEEN 1 \u2026` \u306B\u3059\u308B\u3068 0 \u4EF6\u3067 ASSERT \u5931\u6557\uFF1D\u30A2\u30E9\u30FC\u30C8\u306B\u306A\u308B\u306E\u3067\u3001**\u5DEE\u5206\u30BC\u30ED\u3092\u7570\u5E38\u3068\u3057\u3066\u691C\u77E5\u3057\u305F\u3044\u5834\u5408\u306E\u307F**\u305D\u3061\u3089\u306B\u3057\u307E\u3059\u3002\n- 0 \u4EF6\u306E\u3068\u304D `#tgt` \u306F 0 \u884C\u3067\u3001`UPSERT \u2026 SELECT FROM #tgt` \u306F **`inserted=0 / updated=0` \u306E no-op** \u3068\u3057\u3066\u305D\u306E\u307E\u307E\u5B8C\u8D70\u3057\u307E\u3059\uFF08\u66F8\u304D\u8FBC\u307F API \u3082\u547C\u3070\u308C\u307E\u305B\u3093\uFF09\u3002**v2.1.1 \u4EE5\u964D**\u306E\u6319\u52D5\u3067\u3059\uFF08v2.1.0 \u4EE5\u524D\u306F\u7A7A\u30BD\u30FC\u30B9\u306E `UPSERT \u2026 SELECT` \u304C\u300CSELECT \u306E\u5217\u6570\uFF080\uFF09\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u300D\u3067\u505C\u6B62\u3057\u305F\u305F\u3081\u3001`BETWEEN 1` \u3067 0 \u4EF6\u3092\u66F8\u304D\u8FBC\u307F\u524D\u306B\u6B62\u3081\u308B\u30FB\u547C\u3073\u51FA\u3057\u5074\u3067\u4EF6\u6570\u3092\u5148\u306B\u78BA\u8A8D\u3057\u3066\u30B9\u30AD\u30C3\u30D7\u3001\u3068\u3044\u3063\u305F\u56DE\u907F\u7B56\u304C\u5FC5\u8981\u3067\u3057\u305F\u3002v2.1.1 \u3067\u3053\u308C\u3089\u306F\u4E0D\u8981\u3067\u3059\uFF09\u3002\u5B9F\u6A5F\u3067\u3082\u5DEE\u5206 0 \u4EF6\u30EA\u30E9\u30F3\u304C\u5168\u6587 0 \u4EF6\u3067\u5B8C\u8D70\u3059\u308B\u3053\u3068\u3092\u78BA\u8A8D\u6E08\u307F\u3067\u3059\u3002\n- **v2.11.0 \u4EE5\u964D**\u306F\u3001\u540C\u3058\u7A7A\u65E5\u306B `SELECT * FROM #tgt` \u3092 `INSERT` / `UPSERT` \u30BD\u30FC\u30B9\u306B\u3057\u3066\u3082\u3001\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5B9F\u4F53\u5316\u6642\u306E\u5217\u30B9\u30AD\u30FC\u30DE\u304C\u4FDD\u6301\u3055\u308C\u308B\u305F\u3081\u540C\u3058 no-op \u3067\u5B8C\u8D70\u3057\u307E\u3059\u3002\u5217\u3092\u660E\u793A\u3059\u308B\u73FE\u884C R1 \u30EC\u30B7\u30D4\u306E\u6319\u52D5\u306F\u4E0D\u5909\u3067\u3059\u3002\n\n**\u51AA\u7B49\u6027\u30FB\u30EA\u30E9\u30F3\u306E\u6CE8\u610F**\n- **\u30AD\u30FC\u4E00\u610F\u304C\u524D\u63D0**: `#tgt`\u30FB`APP200` \u53CC\u65B9\u3067 `\u9867\u5BA2\u30B3\u30FC\u30C9` \u304C\u4E00\u610F\u306E\u3068\u304D\u3060\u3051 UPSERT \u304C\u51AA\u7B49\u3002\u30BD\u30FC\u30B9\u5185\u30AD\u30FC\u91CD\u8907\u306F\u521D\u56DE\u306B\u91CD\u8907\u767B\u9332\u3055\u308C\uFF08\u6B21\u56DE\u4EE5\u964D\u306F\u66F4\u65B0\u306B\u56DE\u308B\u306E\u3067\u7121\u9650\u306B\u306F\u5897\u3048\u306A\u3044\u304C\u3001\u3067\u304D\u305F\u91CD\u8907\u306F\u6B8B\u308A\u6B63\u3057\u3044\u56DE\u5FA9\u3082\u4FDD\u8A3C\u3067\u304D\u306A\u3044\uFF09\u30014) \u3067\u6B62\u3081\u308B\u3002\u30DE\u30B9\u30BF\u5074\u91CD\u8907\u6642\u306F\u66F4\u65B0\u304C\u6700\u5927 `$id` \u306E 1 \u4EF6\u306E\u307F\u3002\n- **\u4E8B\u5F8C\u7A81\u5408\u306F\u4EFB\u610F\uFF08\u691C\u51FA\u529B\u306F\u4E0B\u304C\u3063\u305F\uFF09**: claim-first \u3067\u306F `#tgt` \u3092\u300C\u78BA\u4FDD\u5F8C\u306E `\u30D0\u30C3\u30C1ID=@now`\u300D\u304B\u3089\u4F5C\u308A 6) \u3082\u540C\u6761\u4EF6\u3067\u66F4\u65B0\u3059\u308B\u305F\u3081\u3001`\u51E6\u7406\u6E08\u4EF6\u6570 = #tgt\u4EF6\u6570` \u306F\u307B\u307C\u81EA\u660E\uFF08\u304B\u3064\u5931\u6557\u3059\u308C\u3070 fail-fast \u3067\u5230\u9054\u3057\u306A\u3044\uFF09\u3002\u4ED8\u3051\u308B\u306A\u3089\u6B21\u3092 6) \u306E\u5F8C\u306B\u3002\n ```sql\n ASSERT (SELECT COUNT(*) FROM APP100 WHERE \u30D0\u30C3\u30C1ID = @now AND \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u51E6\u7406\u6E08'))\n = (SELECT COUNT(*) FROM #tgt);\n ```\n\n---", uri: "ksql://recipes/r1" }, r2: { heading: "R2. \u4E8B\u524D\u30B2\u30FC\u30C8\uFF08\u4EF6\u6570\u30C1\u30A7\u30C3\u30AF\u30FBinserts/updates \u5185\u8A33\uFF09", text: "## R2. \u4E8B\u524D\u30B2\u30FC\u30C8\uFF08\u4EF6\u6570\u30C1\u30A7\u30C3\u30AF\u30FBinserts/updates \u5185\u8A33\uFF09\n\n\u66F8\u304D\u8FBC\u307F\u524D\u306B\u300C\u4F55\u4EF6\u3092\u65B0\u898F\u4F5C\u6210\u3057\u3001\u4F55\u4EF6\u3092\u66F4\u65B0\u3059\u308B\u304B\u300D\u3092\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u3067\u78BA\u8A8D\u3057\u307E\u3059\uFF08\u66F8\u304D\u8FBC\u307F\u306A\u3057\uFF09\u3002\n\n```sql\nCREATE TEMP TABLE #tgt AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n\n-- \u60F3\u5B9A\u5916\u4EF6\u6570\u306A\u3089\u505C\u6B62\uFF08\u30B2\u30FC\u30C8\u306F\u5148\u982D\u306B\uFF09\nASSERT (SELECT COUNT(*) FROM #tgt) BETWEEN 1 AND 10000;\n\n-- inserts\uFF08\u30DE\u30B9\u30BF\u672A\u5B58\u5728\uFF09\u3068 updates\uFF08\u30DE\u30B9\u30BF\u5B58\u5728\uFF09\u3092 1 \u7D50\u679C\u30BB\u30C3\u30C8\u3067\n-- COUNT(\u30D5\u30A3\u30FC\u30EB\u30C9) \u306F\u7A7A\u6587\u5B57\u30FBNULL\uFF08\uFF1DLEFT JOIN \u672A\u30DE\u30C3\u30C1\uFF09\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u6570\u3048\u308B\uFF08\xA78\uFF09\nSELECT\n COUNT(*) AS \u5BFE\u8C61\u4EF6\u6570,\n COUNT(m.\u9867\u5BA2\u30B3\u30FC\u30C9) AS updates,\n COUNT(*) - COUNT(m.\u9867\u5BA2\u30B3\u30FC\u30C9) AS inserts\nFROM #tgt t LEFT JOIN APP200 m ON t.\u9867\u5BA2\u30B3\u30FC\u30C9 = m.\u9867\u5BA2\u30B3\u30FC\u30C9;\n```\n\n> **1 \u7D50\u679C\u30BB\u30C3\u30C8\u306B\u307E\u3068\u3081\u308B\u7406\u7531**: \u30D7\u30E9\u30B0\u30A4\u30F3 UI \u306F**\u6700\u5F8C\u306B\u7D50\u679C\u3092\u8FD4\u3057\u305F\u6587\u3060\u3051**\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u3001`SELECT COUNT(*)` \u3092 2 \u672C\u4E26\u3079\u308B\u3068\u4E21\u65B9\u3092\u540C\u6642\u306B\u898B\u3089\u308C\u307E\u305B\u3093\u3002LEFT JOIN \u3067 1 \u884C\u306B\u307E\u3068\u3081\u308B\u3068\u5168\u5165\u53E3\u3067\u540C\u3058\u898B\u3048\u65B9\u306B\u306A\u308A\u307E\u3059\u3002`COUNT(m.\u9867\u5BA2\u30B3\u30FC\u30C9)` \u304C\u300C\u30DE\u30B9\u30BF\u306B\u30DE\u30C3\u30C1\u3057\u305F\u4EF6\u6570\uFF08\uFF1Dupdates\uFF09\u300D\u306B\u306A\u308B\u306E\u306F [\xA78 \u96C6\u8A08\u95A2\u6570](ksql_language_reference.md#8-group-by--\u96C6\u8A08\u95A2\u6570) \u306E\u300C`COUNT(\u30D5\u30A3\u30FC\u30EB\u30C9)` \u306F\u7A7A\u6587\u5B57\u30FBNULL \u3092\u30B9\u30AD\u30C3\u30D7\u300D\u4ED5\u69D8\u306B\u3088\u308A\u307E\u3059\u3002\n\n### \u5024\u306E\u59A5\u5F53\u6027\u3082\u5148\u306B\u898B\u308B\uFF08`VALIDATE ONLY`\u30FBv2.13.0\uFF09\n\n\u4EF6\u6570\u30B2\u30FC\u30C8\u306F\u300C\u4F55\u4EF6\u304B\u300D\u3057\u304B\u898B\u307E\u305B\u3093\u3002**\u5FC5\u9808\u30FB\u578B\u30FB\u7BC4\u56F2\u30FB\u6587\u5B57\u5217\u9577\u30FB\u9078\u629E\u80A2\u30FBUPSERT \u30AD\u30FC**\u304C\u901A\u308B\u304B\u306F `VALIDATE ONLY` \u3067\u66F8\u304D\u8FBC\u307F\u30BC\u30ED\u306E\u307E\u307E\u5168\u884C\u691C\u8A3C\u3067\u304D\u307E\u3059\uFF08[\xA717.1](ksql_language_reference.md#171-validate-only\u66F8\u304D\u8FBC\u307F\u524D\u691C\u8A3C)\uFF09\u3002\n\n```sql\nCREATE TEMP TABLE #tgt AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n\n-- \u66F8\u304D\u8FBC\u307E\u305A\u306B\u5168\u884C\u691C\u8A3C\u3002#err \u306B 1 \u884C = 1 \u30A8\u30E9\u30FC\uFF081 \u884C\u306B\u8907\u6570\u30A8\u30E9\u30FC\u306A\u3089\u8907\u6570\u884C\uFF09\nUPSERT INTO APP200 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM #tgt\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\nVALIDATE ONLY INTO #err;\n\n-- \u3069\u306E\u30AD\u30FC\u304C\u306A\u305C\u843D\u3061\u308B\u304B\u3092 1 \u884C\u306B\u307E\u3068\u3081\u3066\u78BA\u8A8D\uFF08GROUP_CONCAT \u306F v2.15.0\uFF09\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, GROUP_CONCAT($err_message SEPARATOR ' / ') AS \u30A8\u30E9\u30FC\u5185\u5BB9\nFROM #err GROUP BY \u9867\u5BA2\u30B3\u30FC\u30C9;\n```\n\n- `VALIDATE ONLY` \u306F **read-only \u6271\u3044**\u3067\u3001`ksql_query` / CLI \u304B\u3089 DML \u627F\u8A8D\u306A\u3057\u306B\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF08\u66F8\u304D\u8FBC\u307F 0 \u4EF6\uFF09\u3002\n- \u305F\u3060\u3057**\u5B8C\u5168\u306A\u5165\u529B\u3092\u8981\u6C42**\u3059\u308B\u305F\u3081\u3001`truncate` \u8A2D\u5B9A\u306F\u5E38\u306B `error` \u3078\u4E0A\u66F8\u304D\u3055\u308C\u307E\u3059\u3002\n- **\u901A\u904E\u306F kintone \u306E\u66F8\u304D\u8FBC\u307F\u6210\u529F\u3092\u4FDD\u8A3C\u3057\u307E\u305B\u3093**\uFF08\u6A29\u9650\u30FB\u7AF6\u5408\u30FB\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA JS \u306A\u3069\u3001\u30ED\u30FC\u30AB\u30EB\u3067\u5224\u5B9A\u3067\u304D\u306A\u3044\u8981\u56E0\u304C\u3042\u308B\u305F\u3081\uFF09\u3002\n\n> **\u78BA\u8A8D\u624B\u6BB5\u306E\u5F79\u5272\u5206\u62C5**: \u69CB\u6587\u30FB\u9759\u7684\u691C\u67FB \u2192 `ksql_validate`\uFF08kintone\u975E\u30A2\u30AF\u30BB\u30B9\uFF09\uFF0F\u5B9F\u884C\u8A08\u753B\uFF08**\u30D5\u30A9\u30FC\u30E0\u5B9A\u7FA9\u3068\u5FC5\u8981\u6642\u306E\u30D7\u30ED\u30BB\u30B9\u72B6\u614Bmetadata\u3060\u3051\u3092\u53D6\u5F97\u3057\u3001\u30EC\u30B3\u30FC\u30C9\u53D6\u5F97\u30FB\u66F8\u8FBC\u307F\u306A\u3057**\uFF09\u2192 `ksql_explain` / `--dry-run`\uFF0F\u5B9F\u30C7\u30FC\u30BF\u306E\u4EF6\u6570 \u2192 \u4E0A\u306E R2 \u3092 `ksql_query` / CLI \u3067**\u5B9F\u884C**\uFF08read-only\uFF09\uFF0F**\u5024\u306E\u59A5\u5F53\u6027** \u2192 `VALIDATE ONLY`\u3002\n>\n> **`ksql_validate` \u306F\u300C\u5B9F\u884C\u3067\u304D\u308B\u3053\u3068\u300D\u3092\u4FDD\u8A3C\u3057\u307E\u305B\u3093**\uFF08\u69CB\u6587\u30FB\u9759\u7684\u89E3\u6790\u306E\u307F\uFF09\u3002\u305F\u3068\u3048\u3070 `UPDATE \u2026 WHERE $id IN (SELECT \u2026 FROM #tmp)` \u306F `ksql_validate` \u304C `ok` \u3092\u8FD4\u3057\u307E\u3059\u304C\u3001\u5B9F\u884C\u6642\u306B `IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093` \u3067\u5931\u6557\u3057\u307E\u3059\uFF08\u4E0B\u8A18\u306E\u6CE8\u8A18\uFF09\u3002\u5B9F\u884C\u53EF\u5426\u306F read-only\uFF08`VALIDATE ONLY`\u30FB`SELECT`\uFF09\u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002\n\n---", uri: "ksql://recipes/r2" }, r3: { heading: "R3. \u66F4\u65B0\u524D\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\uFF08`#before`\uFF09", text: "## R3. \u66F4\u65B0\u524D\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\uFF08`#before`\uFF09\n\n\u4E0A\u66F8\u304D\u3055\u308C\u308B\u524D\u306E\u30DE\u30B9\u30BF\u306E\u5024\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306B\u9000\u907F\u3057\u3001\u7D50\u679C\u306B\u542B\u3081\u307E\u3059\uFF08\u5DEE\u5206\u306E\u8A18\u9332\u30FB\u76EE\u8996\u78BA\u8A8D\u7528\uFF09\u3002\n\n```sql\nCREATE TEMP TABLE #tgt AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n\n-- \u66F4\u65B0\u5BFE\u8C61\u306E\u300C\u66F4\u65B0\u524D\u306E\u5024\u300D\u3092\u9000\u907F\uFF08$ \u59CB\u307E\u308A\u306E\u5217\u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u4ED8\u3051\u308B\uFF09\nCREATE TEMP TABLE #before AS\nSELECT $id AS \u30EC\u30B3\u30FC\u30C9ID, \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP200\nWHERE \u9867\u5BA2\u30B3\u30FC\u30C9 IN (SELECT \u9867\u5BA2\u30B3\u30FC\u30C9 FROM #tgt);\n\n-- \u672C\u51E6\u7406\uFF08UPSERT \u2026 SELECT \u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\u53EF\uFF09\nUPSERT INTO APP200 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM #tgt\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9);\n\n-- \u9000\u907F\u3057\u305F\u66F4\u65B0\u524D\u306E\u5024\u3092\u78BA\u8A8D\uFF08\u30D0\u30C3\u30C1\u306F\u6700\u5F8C\u306E\u7D50\u679C\u30BB\u30C3\u30C8\u3092\u8868\u793A\uFF09\nSELECT * FROM #before;\n```\n\n\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306F\u30D0\u30C3\u30C1\u5185\u30B9\u30B3\u30FC\u30D7\uFF08\u547C\u3073\u51FA\u3057\u7D42\u4E86\u3067\u7834\u68C4\uFF09\u306A\u306E\u3067\u3001\u6052\u4E45\u4FDD\u5B58\u304C\u8981\u308B\u5834\u5408\u306F\u5225\u9014\u30A2\u30D7\u30EA\u3078 INSERT \u3057\u307E\u3059\u3002R1 \u306B\u7D44\u307F\u8FBC\u3080\u5834\u5408\u306F\u3001\u78BA\u4FDD\uFF08R1 \u306E 2\uFF09\u306E\u5F8C\u30FBUPSERT \u306E\u524D\u306B `#before` \u3092\u4F5C\u308A\u307E\u3059\u3002\n\n---", uri: "ksql://recipes/r3" }, r4: { heading: "R4. \u30D0\u30C3\u30C1\u5909\u6570\u306E\u6D3B\u7528\uFF08v2.1.0\uFF09", text: "## R4. \u30D0\u30C3\u30C1\u5909\u6570\u306E\u6D3B\u7528\uFF08v2.1.0\uFF09\n\n- **\u6642\u523B\u56FA\u5B9A**: `SET @now = NOW();` \u2026 \u4EE5\u964D\u306E\u3059\u3079\u3066\u306E\u6587\u3067\u540C\u3058\u6642\u523B\uFF08`NOW()` \u3092\u6587\u3054\u3068\u306B\u8A55\u4FA1\u3059\u308B\u3068\u5024\u304C\u3076\u308C\u308B\uFF09\u3002**1a \u3067\u306F\u5909\u6570\u304B\u3089\u5909\u6570\u3078\u306E\u4EE3\u5165\uFF08`SET @b = @a`\uFF09\u306F\u3067\u304D\u306A\u3044**\u305F\u3081\u3001\u540C\u3058\u5024\u3092\u8907\u6570\u7528\u9014\u306B\u4F7F\u3046\u306A\u3089\u540C\u3058 `@now` \u3092\u4F7F\u3044\u56DE\u3057\u307E\u3059\u3002\n- **\u6761\u4EF6\u5024\u306E DRY \u5316**:\n ```sql\n SET @cutoff = TODAY();\n DELETE FROM APP100 WHERE \u4F5C\u6210\u65E5\u6642 < @cutoff AND \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u51E6\u7406\u6E08');\n ```\n \u3053\u306E DELETE \u306F**\u540C\u4E00\u5B9F\u884C\u306E\u4E2D\u3067\u306F\u51AA\u7B49**\uFF08`@cutoff` \u306F\u305D\u306E\u5B9F\u884C\u3067\u56FA\u5B9A\uFF09\u3002\u305F\u3060\u3057 `TODAY()` \u306F\u30D0\u30C3\u30C1\u3054\u3068\u306B\u518D\u8A55\u4FA1\u3055\u308C\u308B\u305F\u3081\u3001**\u7FCC\u65E5\u306E\u30EA\u30E9\u30F3\u3067\u306F\u5BFE\u8C61\u7BC4\u56F2\u304C 1 \u65E5\u5E83\u304C\u308A\u307E\u3059**\uFF08\u540C\u3058 cutoff \u306B\u5BFE\u3057\u3066\u306F\u51AA\u7B49\u3060\u304C\u3001\u65E5\u3092\u307E\u305F\u3044\u3067\u540C\u3058\u5BFE\u8C61\u96C6\u5408\u3092\u4FDD\u8A3C\u3057\u306A\u3044\uFF09\u3002\u53B3\u5BC6\u306B\u540C\u3058\u5BFE\u8C61\u3092\u518D\u73FE\u3059\u308B\u306A\u3089\u56FA\u5B9A\u306E\u65E5\u4ED8\u30EA\u30C6\u30E9\u30EB\u3092\u4F7F\u3046\u3002\n- **\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9/\u8907\u6570\u9078\u629E\u30D5\u30A3\u30FC\u30EB\u30C9**: `=` \u3092\u4F7F\u3048\u306A\u3044\u30D5\u30A3\u30FC\u30EB\u30C9\u306F `IN (@\u5909\u6570)` \u3067\uFF08v2.1.0\uFF09\u3002\n ```sql\n SET @a = 'A'; SET @b = 'B';\n SELECT \u9867\u5BA2No FROM APP100 WHERE \u9867\u5BA2\u30E9\u30F3\u30AF IN (@a, @b);\n ```\n- **\u30D0\u30C3\u30C1\u7531\u6765\u30E9\u30D9\u30EB\u3068\u914D\u5217\u6761\u4EF6**: 1 \u3064\u306E\u914D\u5217\u3092\u8907\u6570\u6587\u3067\u4F7F\u3044\u56DE\u3057\u3001\u51E6\u7406\u30E9\u30D9\u30EB\u3092\u7D50\u679C\u3078\u4ED8\u3051\u308B\u3002\n ```sql\n SET @batch = NOW();\n SET @ranks = ['A', 'B'];\n SELECT @batch AS \u30D0\u30C3\u30C1ID, \u9867\u5BA2No FROM APP100 WHERE \u9867\u5BA2\u30E9\u30F3\u30AF IN @ranks;\n ```\n \u7A7A\u914D\u5217\u306E `IN @ranks` \u306F 0 \u4EF6\u3001`NOT IN @ranks` \u306F\u5168\u4EF6\u6761\u4EF6\u306B\u306A\u308B\u3002\u66F4\u65B0\u7CFB\u3067\u6700\u7D42 WHERE \u304C\u5168\u4EF6\u6761\u4EF6\u3078\u7C21\u7D04\u3055\u308C\u308B\u5834\u5408\u306F\u5B89\u5168\u306E\u305F\u3081\u62D2\u5426\u3055\u308C\u308B\u3002\n- **\u4EF6\u6570\u30B2\u30FC\u30C8\u306E DRY \u5316\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u4EE3\u5165\u30FBv2.3.0\uFF1DPhase 1b\uFF09**: `SET @cnt = (SELECT COUNT(*) ...)` \u3067\u4EF6\u6570\u3092**\u4E00\u5EA6\u3060\u3051**\u53D6\u5F97\u3057\u3001\u30B2\u30FC\u30C8\u30FB\u8A18\u9332\u30FB\u5F8C\u7D9A\u6761\u4EF6\u3067\u4F7F\u3044\u56DE\u3059\u3002\n ```sql\n SET @cnt = (SELECT COUNT(*) FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406'));\n ASSERT @cnt BETWEEN 0 AND 10000; -- \u60F3\u5B9A\u5916\u4EF6\u6570\u306A\u3089\u505C\u6B62\n UPDATE APP100 SET \u5BFE\u8C61\u4EF6\u6570\u30E1\u30E2 = @cnt WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n ```\n - \u30B5\u30D6\u30AF\u30A8\u30EA\u306F **SET \u6642\u306B 1 \u56DE\u3060\u3051\u5B9F\u884C**\uFF08\u8907\u6570\u6587\u3067 `@cnt` \u3092\u53C2\u7167\u3057\u3066\u3082\u518D\u5B9F\u884C\u3057\u306A\u3044\uFF09\u3002**\u5148\u884C\u3057\u3066\u4F5C\u6210\u3057\u305F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB**\uFF08`SET @cnt = (SELECT COUNT(*) FROM #tgt)`\uFF09\u3084**\u5148\u884C\u5909\u6570**\uFF08`... WHERE \u671F\u9650 < @cutoff`\uFF09\u3082\u53C2\u7167\u53EF\u3002\n - **1 \u884C 1 \u5217**\u304C\u5FC5\u9808\u3002`GROUP BY` \u306A\u3057\u306E\u96C6\u8A08\u306F 0 \u4EF6\u3067\u3082 1 \u884C\uFF08`COUNT` \u306F `0`\uFF09\u3092\u8FD4\u3059\u305F\u3081\u3001\u4EF6\u6570\u53D6\u5F97\u306F\u5DEE\u5206 0 \u4EF6\u3067\u3082\u6210\u7ACB\u3059\u308B\uFF08\xA78\uFF09\u3002SET \u306E\u8A55\u4FA1\u5931\u6557\u306F `continueOnError` \u306B\u95A2\u308F\u3089\u305A\u30D0\u30C3\u30C1\u505C\u6B62\uFF08fail-fast\uFF09\u3002\n - **R2 \u306E\u4E8B\u524D\u30B2\u30FC\u30C8\u3092 DRY \u5316**\u3059\u308B\u4F8B\uFF08`(SELECT COUNT(*) FROM #tgt)` \u3092\u76F4\u63A5\u66F8\u304F\u4EE3\u308F\u308A\u306B\uFF09:\n ```sql\n CREATE TEMP TABLE #tgt AS SELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D FROM APP100 WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n SET @cnt = (SELECT COUNT(*) FROM #tgt);\n ASSERT @cnt BETWEEN 1 AND 10000;\n ```\n- **\u5B9A\u578B\u30D0\u30C3\u30C1\u306E\u5916\u90E8\u30D1\u30E9\u30E1\u30FC\u30BF\u5316\uFF08v2.4.0\uFF1DPhase 1c\uFF09**: SQL \u5074\u3067\u65E2\u5B9A\u5024\u3092\u5BA3\u8A00\u3057\u3001CLI/MCP \u3060\u3051\u5FC5\u8981\u6642\u306B\u5DEE\u3057\u66FF\u3048\u308B\u3002\n ```sql\n DECLARE @since = '2026-01-01';\n SELECT \u9867\u5BA2No FROM APP100 WHERE \u767B\u9332\u65E5 >= @since;\n ```\n CLI \u306F `--var since=2026-07-01`\u3001MCP \u306F `variables: { \"since\": \"2026-07-01\" }`\u3002\u30D7\u30E9\u30B0\u30A4\u30F3\u306F\u65E2\u5B9A\u5024\u3067\u540C\u3058 SQL \u3092\u5B9F\u884C\u3059\u308B\u3002`--var` \u306F\u79D8\u5BC6\u60C5\u5831\u306B\u306F\u4F7F\u7528\u3057\u306A\u3044\u3002\n\n\u5909\u6570\u306E\u8A73\u7D30\u30FB\u5236\u7D04\u306F\u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 [\xA725 \u30D0\u30C3\u30C1\u5909\u6570](ksql_language_reference.md#25-\u30D0\u30C3\u30C1\u5B9F\u884C\u3068\u4E00\u6642\u30C6\u30FC\u30D6\u30EB) \u3092\u53C2\u7167\u3002\n\n---", uri: "ksql://recipes/r4" }, r5: { heading: "R5. \u30EA\u30C6\u30E9\u30EB\u5024\u30EA\u30B9\u30C8\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5316\u3057\u3066\u4E00\u62EC\u51E6\u7406", text: "## R5. \u30EA\u30C6\u30E9\u30EB\u5024\u30EA\u30B9\u30C8\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u5316\u3057\u3066\u4E00\u62EC\u51E6\u7406\n\n\u5916\u90E8\uFF08CSV\u30FB\u5225\u30B7\u30B9\u30C6\u30E0\uFF09\u7531\u6765\u306E **\u56FA\u5B9A\u30EA\u30B9\u30C8**\u3092 **`FROM` \u306A\u3057\u306E `SELECT \u2026 UNION ALL \u2026`** \u3067\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306B\u5B9F\u4F53\u5316\u3057\u3001\u30B2\u30FC\u30C8 \u2192 \u53D6\u308A\u8FBC\u307F\uFF08`UPSERT \u2026 SELECT`\uFF09\u3059\u308B\u3002\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306F\u3001**`ASSERT` \u304B\u3089\u306F `IN` \u30B5\u30D6\u30AF\u30A8\u30EA\uFF0F`COUNT`** \u3067\u3001**`INSERT \u2026 SELECT` / `UPSERT \u2026 SELECT` \u304B\u3089\u306F `FROM` \u30BD\u30FC\u30B9**\u3068\u3057\u3066\u518D\u5229\u7528\u3059\u308B\u3002\n\n```sql\n-- 1) \u5916\u90E8\u30EA\u30B9\u30C8\u3092\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306B\u5B9F\u4F53\u5316\uFF08\u66F8\u304D\u8FBC\u307F\u53EF\u80FD\u30AD\u30FC\u300C\u53D6\u5F15\u5148\u30B3\u30FC\u30C9\u300D\u3068\u5024\u3092\u6301\u3064\uFF09\nCREATE TEMP TABLE #incoming AS\n SELECT '1001' AS \u53D6\u5F15\u5148\u30B3\u30FC\u30C9, '\u5B8C\u4E86' AS \u72B6\u614B\n UNION ALL SELECT '1005', '\u5B8C\u4E86'\n UNION ALL SELECT '1012', '\u5B8C\u4E86';\n\n-- 2) \u4E8B\u524D\u30B2\u30FC\u30C8: \u53D6\u308A\u8FBC\u307F\u4EF6\u6570\u3092\u78BA\u8A8D\uFF08ASSERT \u306F COUNT \u3067 #t \u3092\u53C2\u7167\uFF09\nASSERT (SELECT COUNT(*) FROM #incoming) BETWEEN 1 AND 1000;\n\n-- 3) \u53D6\u308A\u8FBC\u307F: \u66F8\u304D\u8FBC\u307F\u53EF\u80FD\u30AD\u30FC\u3067\u767B\u9332/\u66F4\u65B0\uFF08UPSERT \u2026 SELECT \u306F #t \u3092 FROM \u30BD\u30FC\u30B9\u306B\uFF09\nUPSERT INTO APP100 (\u53D6\u5F15\u5148\u30B3\u30FC\u30C9, \u72B6\u614B)\n SELECT \u53D6\u5F15\u5148\u30B3\u30FC\u30C9, \u72B6\u614B FROM #incoming\n ON DUPLICATE (\u53D6\u5F15\u5148\u30B3\u30FC\u30C9);\n```\n\n- **DRY**: \u5916\u90E8\u30EA\u30B9\u30C8\u3092 `#incoming` \u306E 1 \u7B87\u6240\u306B\u96C6\u7D04\u3057\u3001`ASSERT`\uFF08`COUNT` / `IN` \u30B5\u30D6\u30AF\u30A8\u30EA\uFF09\u3068 `UPSERT \u2026 SELECT`\uFF08`FROM` \u30BD\u30FC\u30B9\uFF09\u304B\u3089\u518D\u5229\u7528\u3059\u308B\u3002\n- **`UPSERT` \u306B\u306F\u30AD\u30FC\u304C\u5FC5\u9808**: `ON DUPLICATE (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9)` \u304C\u5FC5\u8981\u3067\u3001\u30AD\u30FC\u306F**\u30A2\u30D7\u30EA\u5074\u306E\u66F8\u304D\u8FBC\u307F\u53EF\u80FD\u30D5\u30A3\u30FC\u30EB\u30C9**\uFF08\u4F8B: `\u53D6\u5F15\u5148\u30B3\u30FC\u30C9` / `\u5916\u90E8ID`\uFF09\u3002**\u30B7\u30B9\u30C6\u30E0\u30D5\u30A3\u30FC\u30EB\u30C9 `$id` \u306F UPSERT \u30AD\u30FC\u306B\u3067\u304D\u306A\u3044**\u3002\n- **\u91CD\u8981\u306A\u5236\u7D04 \u2014 `UPDATE` / `DELETE` \u306E `WHERE` \u306B `IN (SELECT \u2026)` \u306F\u66F8\u3051\u306A\u3044**\uFF08`\u2026 WHERE $id IN (SELECT id FROM #t)` \u306F**\u5B9F\u884C\u6642**\u306B `IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093`\u3002\u6CE8\u610F\u306E\u300C\u30B5\u30D6\u30AF\u30A8\u30EA\u53C2\u7167\u306E\u975E\u5BFE\u79F0\u300D\u53C2\u7167\uFF09\u3002**\u5BFE\u8C61\u30A2\u30D7\u30EA\u306E\u65E2\u5B58\u884C\u3092 `$id` \u3067\u66F4\u65B0/\u524A\u9664**\u3057\u305F\u3044\u5834\u5408\u306F\u3001`UPDATE APP100 SET \u72B6\u614B='\u5B8C\u4E86' WHERE $id IN ('1001','1005','1012')` \u306E\u3088\u3046\u306B **`UPDATE` / `DELETE` \u5074\u3067\u306F\u30EA\u30B9\u30C8\u3092\u76F4\u63A5 `IN (...)` \u306B\u518D\u63B2**\u3059\u308B\uFF08\u3053\u306E\u7D4C\u8DEF\u3067\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E DRY \u306F\u52B9\u304B\u306A\u3044\uFF09\u3002**\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306E\u5024\u3067\u66F4\u65B0\u3059\u308B**\u306A\u3089 `UPDATE \u2026 FROM`\uFF08v2.12.0\u30FBR6\uFF09\u304C\u4F7F\u3048\u308B\u3002\n- **\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\uFF08\u81EA\u52D5\u30D0\u30A4\u30F3\u30C9\u3067\u306F\u306A\u3044\uFF09**: \u4E0A\u8A18\u306E\u5024\u306F **SQL \u6587\u4E2D\u306B\u30EA\u30C6\u30E9\u30EB\u3068\u3057\u3066\u8A18\u8FF0**\u3057\u3066\u304A\u308A\u3001kSQL \u304C\u5916\u90E8\u30EA\u30B9\u30C8\u3092\u81EA\u52D5\u3067\u30D0\u30A4\u30F3\u30C9\u3059\u308B\u6A5F\u80FD\u3067\u306F\u306A\u3044\u3002\u5916\u90E8\u5024\u304B\u3089 SQL \u3092\u751F\u6210\u3059\u308B\u5834\u5408\u306F\u3001**ID \u3092\u6570\u5B57\u3060\u3051\u306B\u691C\u8A3C**\u3059\u308B\u304B\u3001**\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u306E `'` \u3092 `''` \u306B\u30A8\u30B9\u30B1\u30FC\u30D7**\u3059\u308B\u3053\u3068\uFF08\u8AA4\u308C\u3070\u30A4\u30F3\u30B8\u30A7\u30AF\u30B7\u30E7\u30F3\u304C\u8D77\u3053\u308A\u5F97\u308B\uFF09\u3002\n- **kintone \u5185\u304B\u3089\u5C0E\u3051\u308B\u96C6\u5408**\u306A\u3089 `#incoming` \u3092\u4F7F\u308F\u305A\u76F4\u63A5 `IN (SELECT \u2026 FROM APPxxx WHERE \u2026)` \u306E\u65B9\u304C\u7C21\u5358\u3002R5 \u306F **kintone \u5916\u7531\u6765\u306E\u56FA\u5B9A\u30EA\u30B9\u30C8**\u304C\u5BFE\u8C61\u3002\n- **\u524D\u63D0\u30D0\u30FC\u30B8\u30E7\u30F3**: `CREATE TEMP TABLE AS <FROM \u306A\u3057 SELECT / UNION>` \u306E\u5B9F\u4F53\u5316\u306F **v2.10.0 \u4EE5\u964D**\uFF08\u305D\u308C\u4EE5\u524D\u306F 0 \u884C\u306B\u306A\u308B\u4E0D\u5177\u5408\u304C\u3042\u3063\u305F\uFF09\u3002\n\n---", uri: "ksql://recipes/r5" }, r6: { heading: "R6. \u4E0D\u826F\u30C7\u30FC\u30BF\u3092\u9694\u96E2\u3057\u3066\u6B8B\u308A\u3092\u6D41\u3059\uFF08`ON ERROR SKIP`\u30FBv2.13.0\uFF09", text: "## R6. \u4E0D\u826F\u30C7\u30FC\u30BF\u3092\u9694\u96E2\u3057\u3066\u6B8B\u308A\u3092\u6D41\u3059\uFF08`ON ERROR SKIP`\u30FBv2.13.0\uFF09\n\nR1 \u306F fail-fast \u3067\u3001**1 \u4EF6\u306E\u4E0D\u826F\u30C7\u30FC\u30BF\u304C\u30D0\u30C3\u30C1\u5168\u4F53\u3092\u6B62\u3081\u307E\u3059**\u3002\u591C\u9593\u306E\u7121\u4EBA\u30D0\u30C3\u30C1\u3067\u306F\u300C\u4E0D\u826F\u884C\u3060\u3051\u9664\u3051\u3066\u6B8B\u308A\u306F\u6D41\u3057\u3001\u7FCC\u671D\u306B\u539F\u56E0\u3092\u898B\u308B\u300D\u307B\u3046\u304C\u671B\u307E\u3057\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002`ON ERROR SKIP INTO #err` \u306F\u3001**\u66F8\u304D\u8FBC\u307F\u524D\u306E\u30ED\u30FC\u30AB\u30EB\u691C\u8A3C\uFF08\u5FC5\u9808\u30FB\u578B\u30FB\u7BC4\u56F2\u30FB\u6587\u5B57\u5217\u9577\u30FB\u9078\u629E\u80A2\u30FB\u30AD\u30FC\uFF09\u306B\u843D\u3061\u305F\u884C\u3060\u3051**\u3092 `#err` \u3078\u9694\u96E2\u3057\u3001\u5408\u683C\u884C\u3060\u3051\u3092\u66F8\u304D\u8FBC\u307F\u307E\u3059\u3002\n\n```sql\nSET @now = NOW();\n\n-- 1) \u78BA\u4FDD\uFF08R1 \u3068\u540C\u3058 claim-first\u3002\u76F4\u63A5\u6761\u4EF6\u3067\u66F4\u65B0\uFF09\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u51E6\u7406\u4E2D', \u30D0\u30C3\u30C1ID = @now, \u78BA\u4FDD\u65E5\u6642 = @now\nWHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n\nCREATE TEMP TABLE #tgt AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, \u4F4F\u6240 FROM APP100\nWHERE \u30D0\u30C3\u30C1ID = @now AND \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u51E6\u7406\u4E2D');\n\nASSERT (SELECT COUNT(*) FROM #tgt) BETWEEN 0 AND 10000;\n\n-- 2) \u672C\u51E6\u7406: NG \u884C\u306F #err \u3078\u9694\u96E2\u3057\u3001\u5408\u683C\u884C\u3060\u3051\u66F8\u304F\u3002\u9694\u96E2\u304C 100 \u884C\u3092\u8D85\u3048\u305F\u3089\u4F55\u3082\u66F8\u304B\u305A\u505C\u6B62\nUPSERT INTO APP200 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, \u4F4F\u6240)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u9867\u5BA2\u540D, \u4F4F\u6240 FROM #tgt\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9)\nON ERROR SKIP INTO #err REJECT LIMIT 100;\n\n-- 3) \u30A8\u30E9\u30FC\u884C\u306E\u66F8\u304D\u623B\u3057: \u696D\u52D9\u30AD\u30FC\u5358\u4F4D\u306B\u5168\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u9023\u7D50\u3057\u3066 1 \u884C\u5316\nCREATE TEMP TABLE #err_summary AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, GROUP_CONCAT($err_message SEPARATOR ' / ') AS \u30A8\u30E9\u30FC\u5185\u5BB9\nFROM #err GROUP BY \u9867\u5BA2\u30B3\u30FC\u30C9;\n\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u30A8\u30E9\u30FC', \u30A8\u30E9\u30FC\u5185\u5BB9 = e.\u30A8\u30E9\u30FC\u5185\u5BB9, \u51E6\u7406\u65E5\u6642 = @now\nFROM #err_summary e\nWHERE APP100.\u9867\u5BA2\u30B3\u30FC\u30C9 = e.\u9867\u5BA2\u30B3\u30FC\u30C9 AND APP100.\u30D0\u30C3\u30C1ID = @now;\n\n-- 4) \u6B63\u5E38\u884C\u306E\u5B8C\u4E86: #err \u306B\u7121\u3044\u696D\u52D9\u30AD\u30FC\u3092 temp \u3067\u78BA\u5B9A\u3057\u3066\u304B\u3089\u66F4\u65B0\nCREATE TEMP TABLE #ok AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9 FROM #tgt\nWHERE \u9867\u5BA2\u30B3\u30FC\u30C9 NOT IN (SELECT \u9867\u5BA2\u30B3\u30FC\u30C9 FROM #err);\n\nUPDATE APP100\nSET \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 = '\u51E6\u7406\u6E08', \u51E6\u7406\u65E5\u6642 = @now\nFROM #ok o\nWHERE APP100.\u9867\u5BA2\u30B3\u30FC\u30C9 = o.\u9867\u5BA2\u30B3\u30FC\u30C9 AND APP100.\u30D0\u30C3\u30C1ID = @now;\n```\n\n**\u306A\u305C\u3053\u306E\u5F62\u304B**\n\n- **3) \u3068 4) \u304C `UPDATE \u2026 FROM`\uFF08v2.12.0 / \u696D\u52D9\u30AD\u30FC\u7D50\u5408\u306F v2.13.0\uFF09**: `#err` \u306F UPSERT \u306E**\u5165\u529B\u30DA\u30A4\u30ED\u30FC\u30C9\u5217\u3057\u304B\u6301\u305F\u305A**\u3001\u5DEE\u5206\u30A2\u30D7\u30EA\u306E `$id` \u3092\u6301\u3061\u307E\u305B\u3093\u3002\u305D\u306E\u305F\u3081 `$id` \u7D50\u5408\u3067\u306F\u66F8\u304D\u623B\u305B\u305A\u3001**\u696D\u52D9\u30AD\u30FC\u7D50\u5408**\u304C\u5FC5\u8981\u3067\u3059\u3002\n- **`AND APP100.\u30D0\u30C3\u30C1ID = @now` \u3092\u5FC5\u305A\u4ED8\u3051\u308B**: `UPDATE \u2026 FROM` \u306F\u7D50\u5408\u7B49\u5024\u3068\u30BF\u30FC\u30B2\u30C3\u30C8\u7D5E\u308A\u8FBC\u307F\u3092\u4E21\u65B9\u66F8\u3051\u307E\u3059\u3002\u3053\u308C\u304C\u7121\u3044\u3068\u3001**\u4ECA\u56DE\u306E\u30D0\u30C3\u30C1\u304C\u78BA\u4FDD\u3057\u3066\u3044\u306A\u3044\u540C\u4E00\u30AD\u30FC\u306E\u884C\u307E\u3067\u66F4\u65B0**\u3055\u308C\u5F97\u307E\u3059\u3002\n- **4) \u306F `#ok` \u3092 `SELECT` \u3067\u5148\u306B\u78BA\u5B9A\u3055\u305B\u308B**: `UPDATE \u2026 WHERE \u9867\u5BA2\u30B3\u30FC\u30C9 NOT IN (SELECT \u2026 FROM #err)` \u3068\u66F8\u304D\u305F\u304F\u306A\u308A\u307E\u3059\u304C\u3001**DML \u306E `WHERE` \u306B `IN (SELECT \u2026)` \u306F\u66F8\u3051\u307E\u305B\u3093**\uFF08\u4E0B\u8A18\u306E\u6CE8\u8A18\uFF09\u3002`NOT IN (SELECT \u2026)` \u306F **`SELECT` \u6587\uFF08`CREATE TEMP TABLE \u2026 AS SELECT`\uFF09\u306A\u3089\u4F7F\u3048\u307E\u3059**\u3002\n- **`GROUP_CONCAT` \u3067\u5168\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u6B8B\u3059\uFF08v2.15.0\uFF09**: 1 \u884C\u306B\u8907\u6570\u30A8\u30E9\u30FC\u304C\u3042\u308B\u3068 `#err` \u306F\u8907\u6570\u884C\u306B\u306A\u308A\u307E\u3059\u3002`UPDATE \u2026 FROM` \u306F**\u8907\u6570\u30DE\u30C3\u30C1\u3092\u5B9F\u884C\u524D\u30A8\u30E9\u30FC**\u306B\u3059\u308B\u305F\u3081\u3001\u696D\u52D9\u30AD\u30FC\u5358\u4F4D\u3078 1 \u884C\u5316\u304C\u5FC5\u9808\u3067\u3059\u3002`MIN($err_message)` \u3060\u3068\u4EE3\u8868 1 \u4EF6\u3057\u304B\u6B8B\u308A\u307E\u305B\u3093\u304C\u3001`GROUP_CONCAT` \u306A\u3089\u5168\u4EF6\u3092\u9023\u7D50\u3067\u304D\u307E\u3059\u3002\n- **`REJECT LIMIT n`**: \u9694\u96E2\u304C n \u884C\u3092\u8D85\u3048\u305F\u3089**\u5168\u884C\u691C\u8A3C\u3092\u7D42\u3048\u305F\u3046\u3048\u3067\u66F8\u304D\u8FBC\u307F\u30BC\u30ED\u3067\u505C\u6B62**\u3057\u307E\u3059\uFF08\u90E8\u5206\u66F8\u304D\u8FBC\u307F\u306F\u8D77\u304D\u307E\u305B\u3093\uFF09\u3002`#err` \u306F\u7D50\u679C\u3068\u3057\u3066\u8FD4\u308B\u306E\u3067\u539F\u56E0\u8ABF\u67FB\u306B\u4F7F\u3048\u307E\u3059\u3002\u300C\u4E0D\u826F\u304C\u5927\u91CF\uFF1D\u4E0A\u6D41\u306E\u7570\u5E38\u300D\u3092\u691C\u77E5\u3059\u308B\u30B2\u30FC\u30C8\u3067\u3059\u3002\n\n**\u9694\u96E2\u3055\u308C\u308B\u7BC4\u56F2\uFF08\u91CD\u8981\uFF09**\n\n- \u9694\u96E2\u3067\u304D\u308B\u306E\u306F **kSQL \u304C API \u9001\u4FE1\u524D\u306B\u30ED\u30FC\u30AB\u30EB\u3067\u5224\u5B9A\u3067\u304D\u308B\u30A8\u30E9\u30FC\u3060\u3051**\uFF08Tier 0\uFF09\u3067\u3059\u3002**kintone API \u306E\u5B9F\u884C\u6642\u30A8\u30E9\u30FC**\uFF08\u6A29\u9650\u30FB\u7AF6\u5408\u30FB\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA JS \u306B\u3088\u308B\u4FDD\u5B58\u62D2\u5426\u306A\u3069\uFF09\u306F**\u5F93\u6765\u3069\u304A\u308A fail-fast**\u3067\u3001\u884C\u5358\u4F4D\u306B\u9694\u96E2\u3055\u308C\u307E\u305B\u3093\u3002\n- \u9006\u306B\u3001\u30ED\u30FC\u30AB\u30EB\u691C\u8A3C\u306F**\u66F8\u304D\u8FBC\u307F\u7D4C\u8DEF\u3088\u308A\u53B3\u3057\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059**\u3002\u691C\u8A3C\u3092\u901A\u3063\u3066\u3082\u66F8\u304D\u8FBC\u307F\u6210\u529F\u306F\u4FDD\u8A3C\u3055\u308C\u307E\u305B\u3093\u3002\n- **\u524D\u63D0\u30D0\u30FC\u30B8\u30E7\u30F3**: `ON ERROR SKIP` / `VALIDATE ONLY` / \u696D\u52D9\u30AD\u30FC\u7D50\u5408\u306F **v2.13.0 \u4EE5\u964D**\u3001`GROUP_CONCAT` \u3068 `#err` \u5217\u306E\u578B\u4F1D\u64AD\u306F **v2.15.0 \u4EE5\u964D**\u3002\n\n---", uri: "ksql://recipes/r6" }, r7: { heading: "R7. kintone \u306E REST API \u3068\u540C\u3058\u4E26\u3073\u3067\u5927\u91CF\u53D6\u5F97\u3059\u308B\uFF08`KORDER BY`\u30FBv3.0.0 / v3.1.0\uFF09", text: "## R7. kintone \u306E REST API \u3068\u540C\u3058\u4E26\u3073\u3067\u5927\u91CF\u53D6\u5F97\u3059\u308B\uFF08`KORDER BY`\u30FBv3.0.0 / v3.1.0\uFF09\n\nCSV \u9023\u643A\u3084\u7A81\u5408\u3067\u300C**kintone REST API \u306E\u4E26\u3073\uFF08\u578B\u5225\u9806\u5E8F\uFF09**\u300D\u304C\u8981\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002v3.0.0 \u4EE5\u964D\u3001\u901A\u5E38\u306E `ORDER BY` \u306F\u300C\u3069\u306E\u5B9F\u884C\u9762\uFF08CLI / MCP / \u30D7\u30E9\u30B0\u30A4\u30F3\uFF09\u3067\u3082\u30FB\u4F55\u5EA6\u5B9F\u884C\u3057\u3066\u3082\u540C\u3058\u7D50\u679C\u306B\u306A\u308B\u300D\u3088\u3046\u306B **kSQL \u304C\u578B\u3054\u3068\u306B\u5B9A\u7FA9\u3057\u305F\u4E26\u3073**\uFF08\u6570\u5024\u306F\u6570\u5024\u9806\u30FB\u6587\u5B57\u5217\u306F Unicode \u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u9806\u3002[\u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 \xA710](ksql_language_reference.md#10-order-by)\uFF09\u3067\u4E26\u3079\u307E\u3059\u3002\u3053\u306E\u305F\u3081\u3001**kintone \u304C\u30D5\u30A3\u30FC\u30EB\u30C9\u578B\u3054\u3068\u306B\u6301\u3064\u72EC\u81EA\u306E\u4E26\u3073** \u2014 \u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u30FB\u30E9\u30B8\u30AA\u30DC\u30BF\u30F3\u306E\u9078\u629E\u80A2\u5B9A\u7FA9\u9806\u3001\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u30D7\u30ED\u30BB\u30B9\u5B9A\u7FA9\u9806\u306A\u3069 \u2014 \u3068\u306F\u4E00\u81F4\u3057\u306A\u3044\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002kintone \u5074\u306E\u4E26\u3073\u304C\u5FC5\u8981\u306A\u5834\u5408\u306F **`KORDER BY`** \u3092\u4F7F\u3044\u307E\u3059\u3002\u4E00\u89A7\u753B\u9762\u3068\u540C\u3058\u4E26\u3073\u306B**\u8FD1\u3065\u3051\u308B**\u306B\u306F\u3001\u753B\u9762\u3068\u540C\u3058\u30AD\u30FC\u30FB\u65B9\u5411\u3092\u6307\u5B9A\u3057\u3001\u540C\u5024\u7FA4\u306E\u9806\u5E8F\u306F\u6697\u9ED9\u4FDD\u8A3C\u3055\u308C\u306A\u3044\u305F\u3081**\u6700\u5F8C\u306E\u30AD\u30FC\u3078 `$id ASC` \u3092\u660E\u793A**\u3057\u307E\u3059\uFF08kSQL \u306F\u6697\u9ED9\u8FFD\u52A0\u3057\u307E\u305B\u3093\uFF09\u3002\n\n```sql\n-- kintone \u56FA\u6709\u9806\u306E\u307E\u307E\u5148\u982D 10,001 \u4EF6\uFF08v3.1.0 \u304B\u3089\u5358\u767A GET \u306B\u53CE\u307E\u3089\u306A\u3044\u7A93\u3082\u53EF\uFF09\nSELECT $id, \u90F5\u4FBF\u756A\u53F7, \u4F4F\u62401\nFROM APP730\nKORDER BY \u90F5\u4FBF\u756A\u53F7 ASC, $id ASC\nLIMIT 10001\n```\n\n- **`LIMIT` \u306F\u5FC5\u9808**\u3002**\u5358\u767A API \u306B\u306A\u308B\u306E\u306F `LIMIT \u2264 500` \u304B\u3064 `OFFSET \u2264 10000` \u304B\u3064 `LIMIT \u2264 maxRecords` \u306E 3 \u6761\u4EF6\u3092\u6E80\u305F\u3059\u5834\u5408**\u3067\u3001\u3053\u306E\u3068\u304D OFFSET \u306F\u30B5\u30FC\u30D0\u30FC\u304C\u8AAD\u307F\u98DB\u3070\u3059\u305F\u3081 `maxRecords` \u306E\u5F15\u304D\u4E0A\u3052\u306F\u4E0D\u8981\u3067\u3059\uFF08\u4F8B: `LIMIT 500 OFFSET 10000` \u306F `maxRecords=500` \u306E\u307E\u307E\u3067\u6210\u529F\uFF09\n- 3 \u6761\u4EF6\u304B\u3089\u5916\u308C\u308B\u7A93\u306F **Cursor API**\uFF08v3.1.0\uFF09\u3067 500 \u4EF6\u305A\u3064\u9023\u7D50\u3057\u307E\u3059\uFF08\u7D50\u679C\u9806\u306F raw API \u3068\u5B8C\u5168\u4E00\u81F4\u3059\u308B\u3053\u3068\u3092\u5B9F\u6E2C\u6E08\u307F\uFF09\u3002**Cursor \u306E\u3068\u304D\u3060\u3051**\u8D70\u67FB\u4EF6\u6570 `OFFSET + LIMIT` \u2264 \u5B9F\u884C\u6642 `maxRecords` \u304C\u6761\u4EF6\u306B\u306A\u308A\u307E\u3059\uFF08OFFSET \u5206\u3092 kSQL \u304C\u53D7\u4FE1\u3057\u3066\u8AAD\u307F\u6368\u3066\u308B\u305F\u3081\uFF09\u3002CLI/MCP \u306E\u65E2\u5B9A\u306F 500 \u306A\u306E\u3067\u3001\u4E0A\u306E\u4F8B\u306F `--max-records 10001`\uFF08MCP \u306F `maxRecords: 10001`\uFF09\u3078\u5F15\u304D\u4E0A\u3052\u307E\u3059\u3002\u8D85\u904E\u306F\u5B9F\u884C\u524D\u306E planning error\uFF08\u9ED9\u3063\u3066\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3057\u307E\u305B\u3093\uFF09\n- \u30AB\u30FC\u30BD\u30EB\u306E\u5BFE\u8C61\u96C6\u5408\u306F\u4F5C\u6210\u6642\u70B9\u3067\u56FA\u5B9A\u3067\u3059\u304C**\u5024\u306F\u53D6\u5F97\u6642\u70B9**\u3067\u3059\u3002\u66F4\u65B0\u304C\u8D70\u308B\u6642\u9593\u5E2F\u306E\u5B9F\u884C\u306F\u907F\u3051\u3066\u304F\u3060\u3055\u3044\u3002\u30AB\u30FC\u30BD\u30EB\u67A0\uFF081 \u30C9\u30E1\u30A4\u30F3 10 \u500B\u306E\u5171\u6709\u30FB\u540C\u6642\u4E0A\u9650 `cursorMaxActive`\uFF09\u30FB\u518D\u8A66\u884C\u7981\u6B62\u30FBcleanup \u8B66\u544A\u306E\u8A73\u7D30\u306F [v3.1.0 \u79FB\u884C\u30AC\u30A4\u30C9](ksql_v3_1_migration_guide.md)\u3092\u53C2\u7167\n- \u6761\u4EF6: \u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT\u30FB\u5358\u4E00\u30A2\u30D7\u30EA\u30FBWHERE \u5B8C\u5168\u62BC\u3057\u4E0B\u3052\u30FB\u578B allowlist \u7B49\uFF08\u8A73\u7D30\u306F[\u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 \xA710](ksql_language_reference.md#10-order-by)\uFF09\n\n---", uri: "ksql://recipes/r7" }, r8: { heading: "R8. Shift_JIS \u3067\u51FA\u529B\u3067\u304D\u306A\u3044\u6F22\u5B57\u3092\u5909\u63DB\u3059\u308B\uFF08v3.2.0\uFF09", text: "## R8. Shift_JIS \u3067\u51FA\u529B\u3067\u304D\u306A\u3044\u6F22\u5B57\u3092\u5909\u63DB\u3059\u308B\uFF08v3.2.0\uFF09\n\ncli-kintone \u306E CSV \u3092 Shift_JIS \u3067\u51FA\u529B\u3059\u308B\u3068\u3001CP932 \u306B\u7121\u3044\u6F22\u5B57\u3092\u542B\u3080\u30EC\u30B3\u30FC\u30C9\u3067\u51FA\u529B\u30A8\u30E9\u30FC\u306B\u306A\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002`TRANSLATE` \u3092\u4F7F\u3044\u3001\u8A72\u5F53\u3059\u308B 40 \u5B57\u3092 Shift_JIS \u3067\u6271\u3048\u308B\u5B57\u4F53\u3078 1 \u5BFE 1 \u3067\u5909\u63DB\u3057\u307E\u3059\u3002\u5909\u63DB\u8868\u306F [\u8A08\u7B97\u5F0F\u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u306E\u5B9F\u4F8B](https://qiita.com/rex0220/items/9db98b2cf027b686e0b5) \u3068\u540C\u3058\u3082\u306E\u3067\u3059\u3002\n\n| | \u5909\u63DB\u8868 |\n|---|---|\n| \u5909\u63DB\u5143 | `\u555E\u7130\u9DD7\u6451\u9EB4\u5653\u4FE0\u9830\u8EC0\u4FF1\u7E6B\u59F8\u9E7C\u5699\u6522\u{20B9F}\u7E61\u8523\u91AC\u87EC\u6414\u7626\u9A52\u7C1E\u5861\u985A\u79B1\u7006\u541E\u56CA\u525D\u6F51\u91B1\u5C5B\u5E77\u9EB5\u840A\u5C62\u6CAA\u881F` |\n| \u5909\u63DB\u5148 | `\u5516\u7114\u9D0E\u63B4\u9EB9\u5618\u4FA0\u982C\u8EAF\u5036\u7E4B\u598D\u9E78\u565B\u6505\u53F1\u7E4D\u848B\u91A4\u8749\u63BB\u75E9\u9A28\u7BAA\u586B\u985B\u7977\u6D9C\u5451\u56A2\u5265\u6E8C\u9197\u5C4F\u5E76\u9EBA\u83B1\u5C61\u6FFE\u874B` |\n\n```sql\nSELECT\n TRANSLATE(\u4F1A\u793E\u540D,\n '\u555E\u7130\u9DD7\u6451\u9EB4\u5653\u4FE0\u9830\u8EC0\u4FF1\u7E6B\u59F8\u9E7C\u5699\u6522\u{20B9F}\u7E61\u8523\u91AC\u87EC\u6414\u7626\u9A52\u7C1E\u5861\u985A\u79B1\u7006\u541E\u56CA\u525D\u6F51\u91B1\u5C5B\u5E77\u9EB5\u840A\u5C62\u6CAA\u881F',\n '\u5516\u7114\u9D0E\u63B4\u9EB9\u5618\u4FA0\u982C\u8EAF\u5036\u7E4B\u598D\u9E78\u565B\u6505\u53F1\u7E4D\u848B\u91A4\u8749\u63BB\u75E9\u9A28\u7BAA\u586B\u985B\u7977\u6D9C\u5451\u56A2\u5265\u6E8C\u9197\u5C4F\u5E76\u9EBA\u83B1\u5C61\u6FFE\u874B'\n ) AS \u4F1A\u793E\u540D,\n \u4F4F\u6240\nFROM APP100;\n```\n\n`\u{20B9F}` \u306F UTF-16 \u3067\u306F 2 \u30B3\u30FC\u30C9\u30E6\u30CB\u30C3\u30C8\u3067\u3059\u304C\u3001`TRANSLATE` \u306F\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u5358\u4F4D\u3067\u5909\u63DB\u8868\u3092\u305D\u308D\u3048\u308B\u305F\u3081\u3001\u5F8C\u7D9A\u306E\u5BFE\u5FDC\u3082\u305A\u308C\u307E\u305B\u3093\u3002\u5909\u63DB\u5143\u3068\u5909\u63DB\u5148\u306E\u6587\u5B57\u6570\u304C\u7570\u306A\u308B\u5834\u5408\u306F\u3001\u6B20\u843D\u6587\u5B57\u3092\u9ED9\u3063\u3066\u524A\u9664\u305B\u305A `ArgumentError` \u3067\u505C\u6B62\u3057\u307E\u3059\u3002\u5909\u63DB\u5F8C\u306E SELECT \u7D50\u679C\u3092 cli-kintone \u306E CSV \u51FA\u529B\u5BFE\u8C61\u306B\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n**kintone \u5074\u306E\u5024\u305D\u306E\u3082\u306E\u3092\u5909\u63DB\u3057\u3066\u66F8\u304D\u623B\u3059\uFF08`UPDATE`\u30FBv3.2.0\u301C\uFF09**\n\nCSV \u51FA\u529B\u306E\u305F\u3073\u306B\u5909\u63DB\u3059\u308B\u306E\u3067\u306F\u306A\u304F\u3001\u30EC\u30B3\u30FC\u30C9\u306E\u5024\u81EA\u4F53\u3092 Shift_JIS \u3067\u6271\u3048\u308B\u5B57\u4F53\u3078\u305D\u308D\u3048\u305F\u3044\u5834\u5408\u306F `UPDATE` \u3067\u66F8\u304D\u623B\u3057\u307E\u3059\u3002\n\n\u5F62 A: \u5BFE\u8C61\u5168\u884C\u3092\u305D\u306E\u307E\u307E\u5909\u63DB\u3059\u308B\uFF081 \u6587\uFF09\n\n```sql\nUPDATE APP100\nSET \u4F1A\u793E\u540D = TRANSLATE(\u4F1A\u793E\u540D,\n '\u555E\u7130\u9DD7\u6451\u9EB4\u5653\u4FE0\u9830\u8EC0\u4FF1\u7E6B\u59F8\u9E7C\u5699\u6522\u{20B9F}\u7E61\u8523\u91AC\u87EC\u6414\u7626\u9A52\u7C1E\u5861\u985A\u79B1\u7006\u541E\u56CA\u525D\u6F51\u91B1\u5C5B\u5E77\u9EB5\u840A\u5C62\u6CAA\u881F',\n '\u5516\u7114\u9D0E\u63B4\u9EB9\u5618\u4FA0\u982C\u8EAF\u5036\u7E4B\u598D\u9E78\u565B\u6505\u53F1\u7E4D\u848B\u91A4\u8749\u63BB\u75E9\u9A28\u7BAA\u586B\u985B\u7977\u6D9C\u5451\u56A2\u5265\u6E8C\u9197\u5C4F\u5E76\u9EBA\u83B1\u5C61\u6FFE\u874B')\nWHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n```\n\n- \u89AA DML \u306E `WHERE` \u306B\u306F\u95A2\u6570\u3092\u66F8\u3051\u306A\u3044\u305F\u3081\u3001\u5F62 A \u306F WHERE \u6761\u4EF6\u306E**\u5168\u884C**\u3078 PUT \u3057\u307E\u3059\u3002\u5909\u63DB\u5BFE\u8C61\u306E\u5B57\u3092\u542B\u307E\u306A\u3044\u884C\u3082\u66F4\u65B0\u6271\u3044\u306B\u306A\u308A\u3001\u66F4\u65B0\u65E5\u6642\u304C\u5909\u308F\u308A\u901A\u77E5\u30FBWebhook\u30FB\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA JS \u304C\u767A\u706B\u3057\u5F97\u307E\u3059\uFF08R10 \u5F62 A \u3068\u540C\u3058\u6CE8\u610F\uFF09\u3002\u526F\u4F5C\u7528\u3092\u6291\u3048\u305F\u3044\u30FB\u30EA\u30E9\u30F3\u3057\u305F\u3044\u5834\u5408\u306F\u5F62 B \u3078\u3002\n\n\u5F62 B: \u5909\u63DB\u304C\u5FC5\u8981\u306A\u884C\u3060\u3051\u3078\u7D5E\u308B\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\uFF09\n\n```sql\n-- \u5909\u63DB\u3059\u308B\u3068\u5024\u304C\u5909\u308F\u308B\u884C\uFF08\uFF1D\u5909\u63DB\u5BFE\u8C61\u5B57\u3092\u542B\u3080\u884C\uFF09\u3060\u3051\u3092\u5B9F\u4F53\u5316\nCREATE TEMP TABLE #sjis AS\n SELECT $id AS \u5BFE\u8C61id,\n TRANSLATE(\u4F1A\u793E\u540D, '\u555E\u2026\u881F', '\u5516\u2026\u874B') AS \u5909\u63DB\u5F8C\n FROM APP100\n WHERE \u4F1A\u793E\u540D <> TRANSLATE(\u4F1A\u793E\u540D, '\u555E\u2026\u881F', '\u5516\u2026\u874B');\nUPDATE APP100 SET \u4F1A\u793E\u540D = n.\u5909\u63DB\u5F8C FROM #sjis AS n WHERE APP100.$id = n.\u5BFE\u8C61id;\n```\n\n- `'\u555E\u2026\u881F'` / `'\u5516\u2026\u874B'` \u306F\u4E0A\u306E\u5168 40 \u5B57\uFF08\u5909\u63DB\u5143 / \u5909\u63DB\u5148\uFF09\u306E**\u7701\u7565\u8868\u8A18**\u3067\u3059\u3002\u5B9F\u969B\u306B\u306F\u7701\u7565\u305B\u305A\u5168\u5B57\u3092\u66F8\u304D\u307E\u3059\u3002\n- SELECT \u5074\u306E `WHERE` \u306B\u306F\u95A2\u6570\u3092\u66F8\u3051\u308B\u306E\u3067\u3001`\u4F1A\u793E\u540D <> TRANSLATE(\u2026)`\uFF08\uFF1D\u5909\u63DB\u3059\u308B\u3068\u5024\u304C\u5909\u308F\u308B\u884C\uFF09\u3060\u3051\u3092\u9078\u3079\u307E\u3059\u3002\u5BFE\u8C61 0 \u4EF6\u3067\u3082 `UPDATE \u2026 FROM` \u306F no-op \u3067\u5B8C\u8D70\u3057\u307E\u3059\uFF08\u30EA\u30E9\u30F3\u5B89\u5168\uFF09\u3002\n- \u66F8\u304D\u8FBC\u307F\u524D\u306E\u4E8B\u524D\u78BA\u8A8D\u306F\u672B\u5C3E\u306B `VALIDATE ONLY` \u3092\u4ED8\u3051\u308B\u3068\u3001\u66F8\u304D\u8FBC\u307F 0 \u3067\u691C\u8A3C\u3060\u3051\u3067\u304D\u307E\u3059\uFF08\u4F8B: `UPDATE APP100 SET \u4F1A\u793E\u540D = TRANSLATE(\u2026) WHERE \u2026 VALIDATE ONLY`\uFF09\u3002\n\n---", uri: "ksql://recipes/r8" }, r9: { heading: "R9. \u30C7\u30FC\u30BF\u54C1\u8CEA\u30C1\u30A7\u30C3\u30AF \u2014 \u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u30FB\u6587\u5B57\u6570\u4E88\u7B97\uFF08v3.2.0\uFF09", text: "## R9. \u30C7\u30FC\u30BF\u54C1\u8CEA\u30C1\u30A7\u30C3\u30AF \u2014 \u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u30FB\u6587\u5B57\u6570\u4E88\u7B97\uFF08v3.2.0\uFF09\n\n`LENGTH`\uFF08UTF-16 \u30B3\u30FC\u30C9\u30E6\u30CB\u30C3\u30C8\uFF1Dkintone \u306E\u300C\u6587\u5B57\u6570\u300D\uFF09\u3068 `LENGTH_CHAR`\uFF08\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\uFF09\u306E**\u5DEE\u306F\u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u306E\u500B\u6570**\u3067\u3059\u3002\u7D75\u6587\u5B57\u3084 `\u{20B9F}`\u30FB`\u{20BB7}`\uFF08\u5E38\u7528\u6F22\u5B57\u30FB\u4EBA\u540D\u3067\u666E\u901A\u306B\u73FE\u308C\u308B\uFF09\u3092\u542B\u3080\u884C\u3092\u3001\u5916\u90E8\u9023\u643A\u306E\u524D\u306B\u6D17\u3044\u51FA\u305B\u307E\u3059\u3002\n\n```sql\n-- \u30B5\u30ED\u30B2\u30FC\u30C8\u30DA\u30A2\u3092\u542B\u3080\u884C\u3092\u691C\u51FA\uFF08\u5DEE = \u30DA\u30A2\u6570\uFF09\nSELECT $id, \u4F1A\u793E\u540D,\n LENGTH(\u4F1A\u793E\u540D) AS \u6587\u5B57\u6570,\n LENGTH(\u4F1A\u793E\u540D) - LENGTH_CHAR(\u4F1A\u793E\u540D) AS \u30DA\u30A2\u6570\nFROM APP100\nWHERE LENGTH(\u4F1A\u793E\u540D) - LENGTH_CHAR(\u4F1A\u793E\u540D) > 0\n```\n\n- SELECT \u306E `WHERE` \u306F\u95A2\u6570\u30FB\u7B97\u8853\u5F0F\u3092\u66F8\u3051\u307E\u3059\uFF08FULL_SCAN \u3067 JS \u8A55\u4FA1\uFF09\u3002**\u89AA DML \u306E `WHERE` \u306B\u306F\u66F8\u3051\u306A\u3044**\u70B9\u304C\u5BFE\u7167\u7684\u3067\u3059\uFF08R10\uFF09\n- `\xE9\xE9` \u306E\u3088\u3046\u306A\u300CUTF-8 \u3060\u3068 2 \u30D0\u30A4\u30C8\uFF0F1 \u30E6\u30CB\u30C3\u30C8\u300D\u306E\u6587\u5B57\u306F\u5DEE 0 \u306B\u306A\u308A\u8AA4\u691C\u77E5\u3057\u307E\u305B\u3093\uFF08\u30D0\u30A4\u30C8\u6570\u6BD4\u8F03\u3067\u306F\u539F\u7406\u7684\u306B\u5224\u5B9A\u3067\u304D\u306A\u304B\u3063\u305F\u30B1\u30FC\u30B9\uFF09\n- kintone \u306E `maxLength` \u306F UTF-16 \u3067\u6570\u3048\u308B\u305F\u3081\u3001**\u4E0A\u9650\u30C1\u30A7\u30C3\u30AF\u306F\u5F93\u6765\u3069\u304A\u308A `LENGTH`** \u3092\u4F7F\u3044\u307E\u3059\u3002\u300C\u4EBA\u304C\u6570\u3048\u308B\u6587\u5B57\u6570\u300D\u306B\u8FD1\u3044\u306E\u306F `LENGTH_CHAR` \u3067\u3059\uFF08IVS\u30FB\u7D50\u5408\u6587\u5B57\u30FBZWJ \u7D75\u6587\u5B57\u306F\u5BFE\u8C61\u5916\uFF09\n\n---", uri: "ksql://recipes/r9" }, r10: { heading: "R10. \u8868\u8A18\u306E\u6B63\u898F\u5316\u3092\u66F8\u304D\u623B\u3059\uFF08`UPDATE SET` \u306E\u6587\u5B57\u5217\u95A2\u6570\u30FBv3.2.0\uFF09", text: "## R10. \u8868\u8A18\u306E\u6B63\u898F\u5316\u3092\u66F8\u304D\u623B\u3059\uFF08`UPDATE SET` \u306E\u6587\u5B57\u5217\u95A2\u6570\u30FBv3.2.0\uFF09\n\nv3.2.0 \u304B\u3089\u6587\u5B57\u5217\u95A2\u6570\u3092 `UPDATE SET` \u306B\u76F4\u63A5\u66F8\u3051\u307E\u3059\uFF08\u5F93\u6765\u306F `CASE WHEN 1=1 THEN \u2026 ELSE \u2026 END` \u3067\u5305\u3080\u304B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\u304C\u5FC5\u8981\u3067\u3057\u305F\uFF09\u3002\n\n**\u5F62 A: \u5BFE\u8C61\u5168\u884C\u3092\u305D\u306E\u307E\u307E\u6B63\u898F\u5316\u3059\u308B\uFF081 \u6587\uFF09**\n\n```sql\n-- \u96FB\u8A71\u756A\u53F7\u306E\u30CF\u30A4\u30D5\u30F3\u30FB\u7A7A\u767D\u3092\u9664\u53BB\u3057\u3066\u66F8\u304D\u623B\u3059\nUPDATE APP100\nSET \u96FB\u8A71\u756A\u53F7 = REPLACE(REPLACE(\u96FB\u8A71\u756A\u53F7, '-', ''), ' ', '')\nWHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n```\n\n```sql\n-- \u9867\u5BA2\u30B3\u30FC\u30C9\u3092 8 \u6841\u30BC\u30ED\u57CB\u3081\u3078\uFF08\u5148\u982D\u30BC\u30ED\u306F\u6587\u5B57\u5217\u306E\u307E\u307E\u4FDD\u6301\u3055\u308C\u308B\uFF09\nUPDATE APP100 SET \u9867\u5BA2\u30B3\u30FC\u30C9 = LPAD(\u9867\u5BA2\u30B3\u30FC\u30C9, 8, '0') WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406');\n```\n\n- **\u89AA DML \u306E `WHERE` \u306B\u95A2\u6570\u306F\u66F8\u3051\u306A\u3044**\u305F\u3081\u3001\u5F62 A \u306F\u300C\u5909\u63DB\u304C\u4E0D\u8981\u306A\u884C\u300D\u3082\u542B\u3081\u3066 WHERE \u6761\u4EF6\u306E\u5168\u884C\u3078 PUT \u3057\u307E\u3059\u3002**\u5024\u306F\u51AA\u7B49\u3067\u3082\u526F\u4F5C\u7528\u306F\u51AA\u7B49\u3067\u306F\u3042\u308A\u307E\u305B\u3093** \u2014 \u540C\u5024\u3067\u3082\u66F4\u65B0\u6271\u3044\u306B\u306A\u308A\u3001\u66F4\u65B0\u65E5\u6642\u304C\u5909\u308F\u308A\u3001\u901A\u77E5\u30FBWebhook\u30FB\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA JS \u304C\u767A\u706B\u3057\u5F97\u307E\u3059\u3002\u30EA\u30E9\u30F3\u3084\u526F\u4F5C\u7528\u3092\u6291\u3048\u305F\u3044\u5834\u5408\u306F\u5F62 B \u304C\u5B89\u5168\u3067\u3059\u3002`VALIDATE ONLY` \u306F**\u691C\u8A3C\u30A8\u30E9\u30FC\u306E\u6709\u7121**\u3092\u66F8\u304D\u8FBC\u307F\u30BC\u30ED\u3067\u4E8B\u524D\u78BA\u8A8D\u3059\u308B\u3082\u306E\u3067\uFF08\u30A8\u30E9\u30FC\u884C\u3060\u3051\u304C\u8FD4\u308B\uFF09\u3001\u6B63\u5E38\u884C\u306E\u5909\u63DB\u5F8C\u306E\u5024\u4E00\u89A7\u3092\u30D7\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u6A5F\u80FD\u3067\u306F\u3042\u308A\u307E\u305B\u3093\n- `UPDATE \u2026 FROM` \u3068\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306E `SET` \u306B\u306F\u95A2\u6570\u3092\u76F4\u63A5\u66F8\u3051\u307E\u305B\u3093\uFF08\u660E\u793A\u30A8\u30E9\u30FC\uFF09\n\n**\u5F62 B: \u5909\u63DB\u304C\u5FC5\u8981\u306A\u884C\u3060\u3051\u3078\u7D5E\u308B\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u7D4C\u7531\u30FB\u5F93\u6765\u306E\u5B9A\u77F3\uFF09**\n\n```sql\nCREATE TEMP TABLE #norm AS\n SELECT $id AS \u5BFE\u8C61id,\n REPLACE(REPLACE(\u96FB\u8A71\u756A\u53F7, '-', ''), ' ', '') AS \u6B63\u898F\u5316\n FROM APP100\n WHERE \u51E6\u7406\u30B9\u30C6\u30FC\u30BF\u30B9 IN ('\u672A\u51E6\u7406')\n AND LENGTH(\u96FB\u8A71\u756A\u53F7) > LENGTH(REPLACE(REPLACE(\u96FB\u8A71\u756A\u53F7, '-', ''), ' ', ''));\nUPDATE APP100 SET \u96FB\u8A71\u756A\u53F7 = n.\u6B63\u898F\u5316 FROM #norm AS n WHERE APP100.$id = n.\u5BFE\u8C61id;\n```\n\nSELECT \u5074\u306E `WHERE` \u306A\u3089\u95A2\u6570\u3067\u300C\u5909\u63DB\u3059\u308B\u3068\u5909\u308F\u308B\u884C\u300D\u3060\u3051\u3092\u9078\u3079\u307E\u3059\u3002\u5BFE\u8C61 0 \u4EF6\u3067\u3082 `UPDATE \u2026 FROM` \u306F no-op \u3067\u5B8C\u8D70\u3057\u307E\u3059\uFF08\u30EA\u30E9\u30F3\u5B89\u5168\uFF09\u3002\n\n---", uri: "ksql://recipes/r10" }, r11: { heading: "R11. \u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A2\u30D7\u30EA\u3078\u53D6\u8FBC\u3080\uFF08`IMPORT`\u30FBv3.6.0\uFF09", text: "## R11. \u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30A2\u30D7\u30EA\u3078\u53D6\u8FBC\u3080\uFF08`IMPORT`\u30FBv3.6.0\uFF09\n\nCSV / JSON \u30D5\u30A1\u30A4\u30EB\u3092\u3001**\u5909\u63DB\u30FB\u691C\u8A3C\u30FB\u4E0D\u826F\u884C\u9694\u96E2\u4ED8\u304D\u3067**\u30A2\u30D7\u30EA\u3078\u53D6\u8FBC\u3080\u81EA\u5DF1\u5B8C\u7D50\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8\u3002\u30BD\u30FC\u30B9\u306F**\u9762\u304C\u540D\u524D\u4ED8\u304D\u3067\u4F9B\u7D66**\u3057\u3001SQL \u306B\u30D1\u30B9\u3092\u57CB\u3081\u307E\u305B\u3093\uFF08`IMPORT` \u306F source \u4F9B\u7D66\u6642\u306E\u307F\u6709\u52B9\uFF1Doff-by-default\uFF09\u3002\n\n| \u9762 | \u30BD\u30FC\u30B9\u4F9B\u7D66 |\n|---|---|\n| CLI | `--import-csv <name>=<path>` / `--import-json <name>=<path>` |\n| MCP | `importSources: [{ name, text \\| base64, encoding? }]`\uFF08inline\u30FB\u30D1\u30B9\u4E0D\u53EF\uFF09 |\n| \u30D7\u30E9\u30B0\u30A4\u30F3 | \u30D8\u30C3\u30C0\u30FC\u306E\u300C\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E\u300D\uFF08\u30BD\u30FC\u30B9\u540D\uFF1D\u62E1\u5F35\u5B50\u3092\u9664\u53BB\u3057\u8B58\u5225\u5B50\u306B\u4F7F\u3048\u306A\u3044\u6587\u5B57\u3092 `_` \u306B\u6B63\u898F\u5316\u3002`sales.csv` \u2192 `sales`\u3001`sales 2026.csv` \u2192 `sales_2026`\uFF09 |\n\n**\u30D5\u30E9\u30C3\u30C8 CSV \u3092\u5C04\u5F71\u3057\u3066 UPSERT**\uFF08`CAST` \u3067\u6570\u5024\u5316\u30FB\u696D\u52D9\u30AD\u30FC\u3067\u91CD\u8907\u5224\u5B9A\uFF09:\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D)\nFROM CSV sales\nSELECT code, CAST(amount AS NUMBER) AS \u91D1\u984D\nON DUPLICATE (\u9867\u5BA2\u30B3\u30FC\u30C9);\n```\n\n**\u4E0D\u826F\u884C\u3092\u9694\u96E2\u3057\u3066\u6B8B\u308A\u3092\u6D41\u3059**\uFF08`ON ERROR SKIP`\u30FBR6 \u3068\u540C\u3058\u601D\u60F3\uFF09:\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D) FROM CSV sales BY NAME\nON ERROR SKIP INTO #err;\nSELECT * FROM #err;\n```\n\n**JSON**\uFF08\u53B3\u5BC610\u9032\u30FB\u7CBE\u5EA6\u5BFE\u8C61\u306E NUMBER \u306F string \u4F9B\u7D66\u30FB\u5168\u968E\u5C64 duplicate key \u62D2\u5426\uFF09:\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D) FROM JSON payload;\n```\n\n- `VALIDATE ONLY` \u3067**\u66F8\u8FBC\u307F\u524D\u306B\u5168\u884C\u691C\u8A3C**\uFF08`ksql_validate` \u306F\u69CB\u6587\u306E\u307F\u30FB\u5B9F\u884C\u53EF\u5426\u306F VALIDATE ONLY \u3067\u78BA\u8A8D\u3059\u308B\uFF09\u3002\n- `CHECK WHEN \u2026 THEN \u2026`\uFF08B37\uFF09\u3067\u884C\u30EC\u30D9\u30EB\u696D\u52D9\u30EB\u30FC\u30EB\u3092\u4ED8\u4E0E\u3067\u304D\u308B\u3002\n- **\u53D6\u8FBC\u884C\u6570\u306E\u4E0A\u9650 `maxRecords` \u306F\u9762\u30FB\u7D4C\u8DEF\u3067\u7570\u306A\u308B**\uFF08\u8D85\u904E\u306F fail-closed\u30FB\u30B5\u30A4\u30EC\u30F3\u30C8\u5207\u308A\u6368\u3066\u306A\u3057\uFF09: CLI=\u65E2\u5B9A **500**\uFF08`--max-records`\uFF09\uFF0F\u30D7\u30E9\u30B0\u30A4\u30F3=\u521D\u671F **3000**\uFF08UI \u53EF\u5909\uFF09\uFF0FMCP=\u901A\u5E38 mutation \u306F `dmlMaxRows`\uFF08\uFF0B1\uFF09\u3067\u89E3\u6C7A\u30FB`ON ERROR SKIP` / `VALIDATE ONLY` \u306F runtime `maxRecords` \u306B\u623B\u308B\u3002CSV \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u7F6E\u63DB\u3067\u306F\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u5168\u4EF6\u8D70\u67FB\u306B\u3082\u540C\u4E0A\u9650\u304C\u52B9\u304F\uFF08\u5F8C\u8FF0\uFF09\u3002", uri: "ksql://recipes/r11" }, r12: { heading: "R12. cli-kintone \u3068 round-trip \u3059\u308B\uFF08`BY NAME`\u30FB\u30EC\u30B3\u30FC\u30C9\u756A\u53F7 UPDATE\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FBv3.6.0\uFF09", text: "## R12. cli-kintone \u3068 round-trip \u3059\u308B\uFF08`BY NAME`\u30FB\u30EC\u30B3\u30FC\u30C9\u756A\u53F7 UPDATE\u30FB\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u30FBv3.6.0\uFF09\n\nkintone \u516C\u5F0F CLI `cli-kintone` \u3067 export \u3057\u305F CSV \u3092\u3001\u305D\u306E\u307E\u307E kSQL \u3078\u623B\u305B\u307E\u3059\u3002\n\n**\u30D5\u30E9\u30C3\u30C8 export \u3092\u53D6\u8FBC\u3080**\uFF08\u30D8\u30C3\u30C0\uFF1D\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9\u540D\u3067\u5BFE\u5FDC\u30FB\u975E\u66F8\u8FBC\u307F\u5217\u306F\u76E3\u67FB\u4ED8\u304D\u7121\u8996\u30FB\u8907\u6570\u5024\u306F\u30BB\u30EB\u5185 LF\uFF09:\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u91D1\u984D, \u62C5\u5F53\u8005)\nFROM CSV exported BY NAME IGNORE UNKNOWN COLUMNS;\n```\n\n**\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u3092\u30AD\u30FC\u306B\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3092\u66F4\u65B0**\uFF08\u7D14 UPDATE\u30FBINSERT 0\u30FB\u756A\u53F7\u306F\u7167\u5408\u5C02\u7528\uFF09:\n```sql\nIMPORT UPDATE INTO APP100 (\u91D1\u984D)\nFROM CSV exported BY NAME\nMATCH RECORD NUMBER SOURCE `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7`;\n```\n\n**\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB**\uFF08\u610F\u5473\u8AD6\u304C source \u3067\u7570\u306A\u308B\uFF09:\n- **JSON**\uFF08\u30CD\u30B9\u30C8\u914D\u5217\u30FB**\u65B0\u898F INSERT / \u696D\u52D9\u30AD\u30FC UPSERT**\u30FB\u884C ID \u306A\u3057\u5168\u7F6E\u63DB\uFF09:\n```sql\nIMPORT INTO APP100 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u660E\u7D30(\u54C1\u540D, \u6570\u91CF)) FROM JSON payload;\n```\n- **CSV `*` \u5F62\u5F0F**\uFF08cli-kintone export\u30FB**\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u306E UPDATE \u5168\u7F6E\u63DB**\u30FB\u884C ID \u7DAD\u6301\u66F4\u65B0/\u6B20\u843D\u524A\u9664\uFF09:\n```sql\nIMPORT UPDATE INTO APP100 (\u660E\u7D30(\u54C1\u540D, \u6570\u91CF) ROW ID SOURCE `\u660E\u7D30_\u884CID`)\nFROM CSV exported BY NAME\nMATCH RECORD NUMBER SOURCE `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7`\nREPLACE SUBTABLES (\u660E\u7D30);\n```\n\n**cli-kintone \u3068\u306E\u4F7F\u3044\u5206\u3051**:\n\n| \u7528\u9014 | \u63A8\u5968 |\n|---|---|\n| \u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u8FBC\u307F\u306E\u53D6\u8FBC\u30FB\u5358\u7D14\u306A\u4E00\u62EC\u30ED\u30FC\u30C9 | **cli-kintone** |\n| \u53D6\u8FBC\u6642\u306E\u5909\u63DB\uFF08`CAST`/\u95A2\u6570\uFF09\u30FB\u696D\u52D9\u30C1\u30A7\u30C3\u30AF\u30FB\u4E0D\u826F\u884C\u9694\u96E2\u30FBSQL \u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u7D71\u5408\u30FBMCP/\u30D6\u30E9\u30A6\u30B6\u304B\u3089 | **kSQL IMPORT** |\n\n- **\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\uFF08FILE\uFF09\u306F kSQL IMPORT \u975E\u5BFE\u5FDC**\uFF08cli-kintone \u3092\u4F7F\u3046\uFF09\u3002\n- **CSV \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F UPDATE \u5C02\u7528**\uFF08`REPLACE SUBTABLES` \u3067\u5168\u7F6E\u63DB\uFF09\u3002**\u65B0\u898F INSERT \u306F JSON**\u3002\n- **\u7834\u58CA\u7684\u5168\u7F6E\u63DB\u306F\u9762\u304C\u524A\u9664\u5185\u8A33\u3092 confirm \u8868\u793A\u3067\u304D\u308B\u3068\u304D\u3060\u3051\u5B9F\u884C**\uFF08fail-closed\uFF09\uFF0B\u524A\u9664\u4EF6\u6570\u3092\u660E\u793A\u3002\u5168\u7F6E\u63DB\u306E\u6307\u5B9A\u306F\u30BD\u30FC\u30B9\u7A2E\u5225\u3067\u7570\u306A\u308B\uFF1D**CSV \u306F `REPLACE SUBTABLES` \u5FC5\u9808\uFF0FJSON \u306F\u30CD\u30B9\u30C8\u914D\u5217\u304C\u5168\u7F6E\u63DB\u5BFE\u8C61**\uFF08JSON UPSERT \u3082\u65E2\u5B58\u5B50\u884C\u3092\u524A\u9664\u3059\u308B\u304C `REPLACE SUBTABLES` \u306F\u66F8\u304B\u306A\u3044\u30FB\u66F8\u304F\u3068\u69CB\u6587\u30A8\u30E9\u30FC\uFF09\u3002\n- **MCP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB mutation \u3092 fail-closed**\uFF08\u524A\u9664\u5185\u8A33\u3092\u5BFE\u8A71\u627F\u8A8D\u3067\u304D\u306A\u3044\u305F\u3081\uFF09\u2192 \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u66F8\u8FBC\u307F\u306F CLI / \u30D7\u30E9\u30B0\u30A4\u30F3\u3001MCP \u306F `ksql_query` \u306E `VALIDATE ONLY`\uFF0F`ksql_explain` \u306E `EXPLAIN` \u307E\u3067\u3002\n- **CSV \u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u7F6E\u63DB\u306E\u8D70\u67FB\u4E0A\u9650**: \u884C ID \u6240\u6709\u6A29\u691C\u67FB\u3067\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u3092\u5168\u4EF6\u8D70\u67FB\u3059\u308B\u305F\u3081\u3001\u53D6\u8FBC\u89AA\u304C\u5C11\u6570\u3067\u3082\u65E2\u5B58\u30EC\u30B3\u30FC\u30C9\u304C `maxRecords` \u3092\u8D85\u3048\u308B\u3068 fail-closed \u306B\u306A\u308B\u3002\n- \u6A19\u6E96\u30B9\u30DA\u30FC\u30B9\u30FB**\u30B2\u30B9\u30C8\u30B9\u30DA\u30FC\u30B9**\u306E\u4E21\u65B9\u3067\u52D5\u4F5C\u3059\u308B\u3002\n\n---", uri: "ksql://recipes/r12" }, r13: { heading: "R13. \u660E\u7D30\uFF0B\u5C0F\u8A08\u30FB\u7DCF\u8A08\u3092 1 \u30AF\u30A8\u30EA\u3067\u4F5C\u308B\uFF08`ROLLUP` / `GROUPING`\u30FBv3.17.0\uFF09", text: "## R13. \u660E\u7D30\uFF0B\u5C0F\u8A08\u30FB\u7DCF\u8A08\u3092 1 \u30AF\u30A8\u30EA\u3067\u4F5C\u308B\uFF08`ROLLUP` / `GROUPING`\u30FBv3.17.0\uFF09\n\n\u30EC\u30DD\u30FC\u30C8\u3084\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E\u5B9A\u756A\u300C\u4F1A\u793E\u5225\u306E\u660E\u7D30\u306B**\u5168\u4F53\u5408\u8A08\u3092 1 \u884C\u8DB3\u3059**\u300D\u3092\u3001`GROUP BY ROLLUP` \u3068 `GROUPING()` \u3067 1 \u30AF\u30A8\u30EA\u30FB1 \u7D50\u679C\u30BB\u30C3\u30C8\u306B\u307E\u3068\u3081\u307E\u3059\u3002B64\uFF08v3.16.0\uFF09\u306E\u6761\u4EF6\u4ED8\u304D\u96C6\u8A08 `SUM(CASE WHEN \u2026 END)` \u3068\u305D\u306E\u307E\u307E\u4F75\u7528\u3067\u304D\u307E\u3059\u3002\n\n```sql\nSELECT\n CASE WHEN GROUPING(\u4F1A\u793E\u540D) = 1 THEN '\u5408\u8A08' ELSE \u4F1A\u793E\u540D END AS \u4F1A\u793E\u540D,\n COUNT(*) AS \u6848\u4EF6\u6570,\n SUM(\u58F2\u4E0A) AS \u58F2\u4E0A\u5408\u8A08,\n SUM(CASE WHEN \u5546\u8AC7\u30D5\u30A7\u30FC\u30BA = '\u53D7\u6CE8' THEN \u58F2\u4E0A ELSE 0 END) AS \u53D7\u6CE8\u6E08\u58F2\u4E0A,\n SUM(CASE WHEN \u5546\u8AC7\u30D5\u30A7\u30FC\u30BA IN ('\u63D0\u6848\u4E2D','\u5185\u793A') THEN \u58F2\u4E0A ELSE 0 END) AS \u898B\u8FBC\u58F2\u4E0A,\n SUM(CASE WHEN \u5546\u8AC7\u30D5\u30A7\u30FC\u30BA = '\u53D7\u6CE8' THEN 1 ELSE 0 END) AS \u53D7\u6CE8\u4EF6\u6570\nFROM APP100\nGROUP BY ROLLUP(\u4F1A\u793E\u540D)\nORDER BY GROUPING(\u4F1A\u793E\u540D), \u58F2\u4E0A\u5408\u8A08 DESC\n```\n\n\u7D50\u679C\u306F\u300C\u4F1A\u793E\u5225\u306E\u660E\u7D30\u884C\uFF08`GROUPING(\u4F1A\u793E\u540D)=0`\uFF09\u300D\u306B\u7D9A\u3044\u3066\u3001\u6700\u5F8C\u306B\u300C\u7DCF\u8A08\u884C\uFF08`=1`\uFF09\u300D\u304C 1 \u884C\u4ED8\u304D\u307E\u3059\u3002\n\n| \u4F1A\u793E\u540D | \u6848\u4EF6\u6570 | \u58F2\u4E0A\u5408\u8A08 | \u53D7\u6CE8\u6E08\u58F2\u4E0A | \u898B\u8FBC\u58F2\u4E0A | \u53D7\u6CE8\u4EF6\u6570 |\n|---|--:|--:|--:|--:|--:|\n| \uFF08\u5404\u793E\u306E\u660E\u7D30\u2026\u58F2\u4E0A\u5408\u8A08\u306E\u964D\u9806\uFF09 | \u2026 | \u2026 | \u2026 | \u2026 | \u2026 |\n| **\u5408\u8A08** | **20** | **81,800,000** | **40,800,000** | **41,000,000** | **8** |\n\n**\u30DD\u30A4\u30F3\u30C8**\n\n- `GROUPING(field)` \u306F\u3001\u305D\u306E\u884C\u3067 `field` \u304C\u96C6\u7D04\u3055\u308C\u305F\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u306A\u3089 `1`\u3001\u30B0\u30EB\u30FC\u30D7\u30AD\u30FC\u3067\u6B8B\u3063\u3066\u3044\u308C\u3070 `0`\u3002**\u7DCF\u8A08\u884C\u306E `\u4F1A\u793E\u540D` \u306F\u7A7A\u6587\u5B57**\u306B\u306A\u308B\u306E\u3067\u3001`CASE WHEN GROUPING(\u4F1A\u793E\u540D)=1 THEN '\u5408\u8A08' \u2026` \u3067\u30E9\u30D9\u30EB\u5316\u3057\u307E\u3059\u3002\u6A5F\u68B0\u7684\u306B\u5224\u5225\u3057\u305F\u3044\u3068\u304D\u306F `GROUPING(\u4F1A\u793E\u540D) AS g` \u3092\u5217\u306B\u51FA\u3057\u307E\u3059\uFF08\u5B9F\u30C7\u30FC\u30BF\u306E\u7A7A\u30BB\u30EB\u3068\u7DCF\u8A08\u884C\u3092\u5024\u3060\u3051\u3067\u306F\u533A\u5225\u3067\u304D\u306A\u3044\u305F\u3081\uFF09\u3002\n- **`ORDER BY GROUPING(\u4F1A\u793E\u540D), \u58F2\u4E0A\u5408\u8A08 DESC`** \u3067\u3001\u660E\u7D30\uFF08`0`\uFF09\u3092\u5148\u306B\u30FB\u7DCF\u8A08\uFF08`1`\uFF09\u3092\u672B\u5C3E\u306B\u7F6E\u3051\u307E\u3059\u3002\n- **\u968E\u5C64\u5C0F\u8A08**\u306F\u8907\u6570\u5217 ROLLUP \u3067: `GROUP BY ROLLUP(\u5730\u57DF, \u4F1A\u793E\u540D)` \u306F\u300C\u5730\u57DF\xD7\u4F1A\u793E\u306E\u660E\u7D30 \u2192 \u5730\u57DF\u5C0F\u8A08 \u2192 \u7DCF\u8A08\u300D\u3092\u51FA\u3057\u307E\u3059\uFF08`GROUPING(\u5730\u57DF)` / `GROUPING(\u4F1A\u793E\u540D)` \u3067\u5404\u6BB5\u3092\u5224\u5225\uFF09\u3002\u51FA\u3059\u968E\u5C64\u3092\u9078\u3073\u305F\u3044\u3068\u304D\u306F `GROUP BY GROUPING SETS ((\u5730\u57DF, \u4F1A\u793E\u540D), (\u5730\u57DF), ())` \u3068\u660E\u793A\u3057\u307E\u3059\u3002\n\n**\u6CE8\u610F\uFF08v3.18.0 \u6642\u70B9\uFF09**\n\n- grouping item \u3068 `GROUPING()` \u306E\u5F15\u6570\u306F**\u7269\u7406\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u307F**\uFF08\u5F0F\u30FBSELECT alias\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB/CTE \u5B9F\u4F53\u5316\u5217\u306F\u4E0D\u53EF\uFF09\u3002\n- \u5C0F\u8A08\u30FB\u7DCF\u8A08\u306F**\u5168\u5165\u529B\u306B\u4F9D\u5B58**\u3059\u308B\u305F\u3081\u5E38\u306B\u5B8C\u5168\u5165\u529B\u304C\u5FC5\u8981\u3067\u3059\u3002`onLimit=truncate` \u306F\u4F7F\u3048\u305A\u3001\u53D6\u5F97\u4E0A\u9650\u306B\u9054\u3059\u308B\u3068**\u90E8\u5206\u7D50\u679C\u3092\u8FD4\u3055\u305A\u30A8\u30E9\u30FC**\uFF08fail-closed\uFF09\u3002\u5C55\u958B\u5F8C\u306E set \u6570\u30FBitem \u6570\u30FB\u751F\u6210\u884C\u6570\u306B\u3082\u5B89\u5168\u4E0A\u9650\u304C\u3042\u308A\u307E\u3059\u3002\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u306A\u306E\u3067 `ksql_query` \u3067\u5B9F\u884C\u3067\u304D\u307E\u3059\u3002\n- **v3.18.0 \u3067\u5BFE\u5FDC**: `CUBE(a, b, ...)`\uFF08\u5168 `2^n` \u7D44\u5408\u305B\uFF1D\u5404\u8EF8\u306E\u5C0F\u8A08\u3068\u7DCF\u8A08\u3002`2^n` \u304C\u4E0A\u9650\u8D85\u306A\u3089\u53D6\u5F97\u524D\u306B\u62D2\u5426\uFF09\u3001`HAVING` \u5185 `GROUPING()`\uFF08`= 1` \u3067\u7DCF\u8A08\u30FB\u5C0F\u8A08\u3060\u3051\u3001`= 0` \u3067\u660E\u7D30\u3060\u3051\uFF09\u3001`SELECT DISTINCT` \u3068\u306E\u4F75\u7528\uFF08`GROUPING()` \u3092\u6295\u5F71\u3057\u306A\u3044\u3068\u8868\u793A\u5024\u4E00\u81F4\u884C\u306F 1 \u884C\u306B\u96C6\u7D04\uFF09\u3002\n- **\u672A\u5BFE\u5FDC**: `KORDER BY`\u30FB\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u3068\u306E\u4F75\u7528\u3001`GROUPING()` \u306E\u5F0F\u5F15\u6570\u30FB\u8907\u6570\u5F15\u6570\u30FB`GROUPING_ID`\u3001grouping-set \u306E\u5165\u308C\u5B50\u30FB\u901A\u5E38 item \u3068\u306E\u6DF7\u5728\u3002\u8A73\u7D30\u306F\u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 [\xA78](ksql_language_reference.md#8-group-by--\u96C6\u8A08\u95A2\u6570)\u3002", uri: "ksql://recipes/r13" }, r14: { heading: "R14. \u7D2F\u7A4D\u6B8B\u9AD8\uFF08\u53F0\u5E33\uFF09\u3092\u53D6\u5F15\u9806\u3067\u8A08\u7B97\u3059\u308B", text: "## R14. \u7D2F\u7A4D\u6B8B\u9AD8\uFF08\u53F0\u5E33\uFF09\u3092\u53D6\u5F15\u9806\u3067\u8A08\u7B97\u3059\u308B\n\n\u540C\u3058\u65E5\u306E\u8907\u6570\u53D6\u5F15\u30921\u4EF6\u305A\u3064\u53CD\u6620\u3059\u308B\u53F0\u5E33\u3067\u306F\u3001\u65E2\u5B9A\u306E `RANGE` \u3067\u306F\u306A\u304F `ROWS` \u3092\u660E\u793A\u3057\u3001\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u3092\u30BF\u30A4\u30D6\u30EC\u30FC\u30AF\u30AD\u30FC\u306B\u3057\u307E\u3059\u3002\n\n```sql\nSELECT \u88FD\u54C1\u540D, \u65E5\u4ED8, \u30EC\u30B3\u30FC\u30C9\u756A\u53F7, \u500B\u6570_\u5728\u5EAB\u8A08\u7B97\u7528,\n SUM(\u500B\u6570_\u5728\u5EAB\u8A08\u7B97\u7528) OVER (\n PARTITION BY \u88FD\u54C1\u540D\n ORDER BY \u65E5\u4ED8, \u30EC\u30B3\u30FC\u30C9\u756A\u53F7\n ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW\n ) AS \u7D2F\u7A4D\u5728\u5EAB\nFROM APP4228\nORDER BY \u88FD\u54C1\u540D, \u65E5\u4ED8, \u30EC\u30B3\u30FC\u30C9\u756A\u53F7\n```\n\n- `PARTITION BY \u88FD\u54C1\u540D` \u3067\u88FD\u54C1\u3054\u3068\u306B\u6B8B\u9AD8\u3092\u5206\u3051\u307E\u3059\u3002\n- `ROWS` \u306F\u540C\u65E5\u53D6\u5F15\u30821\u884C\u305A\u3064\u53CD\u6620\u3057\u307E\u3059\u3002\u65E5\u6B21\u7DE0\u3081\u6B8B\u9AD8\u304C\u6B32\u3057\u3044\u5834\u5408\u306F\u30D5\u30EC\u30FC\u30E0\u53E5\u3092\u7701\u7565\u3057\u3001\u65E2\u5B9A `RANGE` \u3092\u4F7F\u3044\u307E\u3059\u3002\n- `ORDER BY \u65E5\u4ED8, \u30EC\u30B3\u30FC\u30C9\u756A\u53F7` \u306E\u3088\u3046\u306B\u4E00\u610F\u306B\u306A\u308B\u30AD\u30FC\u307E\u3067\u6307\u5B9A\u3059\u308B\u3068\u3001\u540C\u65E5\u5185\u306E\u9806\u5E8F\u3082\u6C7A\u5B9A\u7684\u306B\u306A\u308A\u307E\u3059\u3002\n- \u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u306F\u5B8C\u5168\u5165\u529B\u304C\u5FC5\u8981\u3067\u3059\u3002`maxRecords` \u3092\u5165\u529B\u4EF6\u6570\u4EE5\u4E0A\u306B\u8A2D\u5B9A\u3057\u3001\u4E0A\u9650\u5230\u9054\u6642\u306F\u90E8\u5206\u6B8B\u9AD8\u3092\u63A1\u7528\u305B\u305A\u30A8\u30E9\u30FC\u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002", uri: "ksql://recipes/r14" }, r15: { heading: "R15. \u5168\u4F53\u3067\u5272\u308B\uFF08\u69CB\u6210\u6BD4\u30FB\u7D2F\u7A4D\u69CB\u6210\u6BD4\u30FBABC\uFF09", text: "## R15. \u5168\u4F53\u3067\u5272\u308B\uFF08\u69CB\u6210\u6BD4\u30FB\u7D2F\u7A4D\u69CB\u6210\u6BD4\u30FBABC\uFF09\n\n**\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306E\u7D50\u679C\u306F\u540C\u3058 SELECT \u306E\u5F0F\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002** \u5272\u308A\u7B97\u30FB`ROUND`\u30FB`CASE` \u306F\u6B21\u306E\u6BB5\u3078\u79FB\u3057\u307E\u3059\u3002\n\u7DCF\u8A08\u3082\u300C1 \u884C\u306B\u7573\u3093\u3060\u5225\u306E\u96C6\u8A08\u300D\u3067\u306F\u306A\u304F **`SUM(x) OVER ()` \u3067\u5168\u884C\u306B\u8F09\u308B\u5217**\u3068\u3057\u3066\u51FA\u3059\u306E\u304C\u8981\u70B9\u3067\u3001\n\u3053\u308C\u3067 JOIN \u3082\u76F8\u95A2\u30B5\u30D6\u30AF\u30A8\u30EA\u3082\u8981\u3089\u306A\u304F\u306A\u308A\u307E\u3059\u3002\n\n```sql\nWITH base AS (\n SELECT \u88FD\u54C1\u540D, SUM(\u500B\u6570) AS \u51FA\u5EAB\u91CF\n FROM APP4228 WHERE \u5165\u51FA\u5EAB\u533A\u5206 = '\u51FA\u5EAB' GROUP BY \u88FD\u54C1\u540D\n), ranked AS (\n SELECT \u88FD\u54C1\u540D, \u51FA\u5EAB\u91CF,\n SUM(\u51FA\u5EAB\u91CF) OVER () AS \u7DCF\u8A08,\n SUM(\u51FA\u5EAB\u91CF) OVER (\n ORDER BY \u51FA\u5EAB\u91CF DESC, \u88FD\u54C1\u540D\n ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW\n ) AS \u7D2F\u8A08\n FROM base\n)\nSELECT \u88FD\u54C1\u540D, \u51FA\u5EAB\u91CF,\n ROUND(\u51FA\u5EAB\u91CF * 100.0 / \u7DCF\u8A08, 1) AS \u69CB\u6210\u6BD4,\n ROUND(\u7D2F\u8A08 * 100.0 / \u7DCF\u8A08, 1) AS \u7D2F\u7A4D\u69CB\u6210\u6BD4\nFROM ranked\nORDER BY \u51FA\u5EAB\u91CF DESC, \u88FD\u54C1\u540D\n```\n\n\u6BB5\u306E\u5F79\u5272\u306F 3 \u3064\u306B\u5206\u304B\u308C\u307E\u3059\u3002**\u3053\u306E\u5206\u3051\u65B9\u81EA\u4F53\u304C\u5236\u7D04\u3078\u306E\u5BFE\u51E6**\u3067\u3059\u3002\n\n| \u6BB5 | \u3059\u308B\u3053\u3068 |\n|---|---|\n| `base` | \u96C6\u8A08\u3057\u3066\u7C92\u5EA6\u3092\u6C7A\u3081\u308B\uFF08\u3053\u3053\u3067\u306F\u88FD\u54C1\u3054\u3068\uFF09 |\n| `ranked` | **\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u5217\u3068\u3057\u3066\u51FA\u3059\u3060\u3051**\u3002\u5F0F\u3067\u306F\u5305\u307E\u306A\u3044 |\n| \u6700\u7D42 SELECT | \u51FA\u305F\u5217\u3092\u4F7F\u3063\u3066\u5272\u308B\u30FB\u4E38\u3081\u308B\u30FB\u533A\u5206\u3059\u308B |\n\n- **`ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW` \u3092\u660E\u793A\u3057\u307E\u3059\u3002** \u65E2\u5B9A\u306F `RANGE` \u3067\u3001\n **\u540C\u984D\u306E\u884C\u304C\u3059\u3079\u3066\u540C\u3058\u7D2F\u8A08\u5024**\u306B\u306A\u308A\u307E\u3059\uFF08\u540C\u984D\u304C\u4E26\u3076\u3068\u7D2F\u7A4D\u69CB\u6210\u6BD4\u304C\u98DB\u3073\u307E\u3059\uFF09\u3002\n- **`ORDER BY` \u306F\u30BF\u30A4\u307E\u3067\u6C7A\u3081\u307E\u3059\u3002** \u4E0A\u306E\u4F8B\u306E `, \u88FD\u54C1\u540D` \u304C\u305D\u308C\u3067\u3001\n \u540C\u984D\u304C\u3042\u308B\u3068\u7D2F\u7A4D\u306E\u5272\u308A\u5F53\u3066\u304C\u4E0D\u5B9A\u306B\u306A\u308A\u307E\u3059\u3002\n- **`100.0` \u3068\u66F8\u304D\u307E\u3059\u3002** \u6574\u6570\u3069\u3046\u3057\u306E\u9664\u7B97\u306B\u3057\u306A\u3044\u305F\u3081\u3067\u3059\u3002\n- \u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u306F\u5B8C\u5168\u5165\u529B\u304C\u5FC5\u8981\u3067\u3059\u3002`maxRecords` \u3092\u5165\u529B\u4EF6\u6570\u4EE5\u4E0A\u306B\u3057\u3001\n \u4E0A\u9650\u5230\u9054\u6642\u306F\u90E8\u5206\u7D50\u679C\u3092\u63A1\u3089\u305A\u30A8\u30E9\u30FC\u3068\u3057\u3066\u6271\u3044\u307E\u3059\uFF08`onLimit=truncate` \u306F\u9069\u7528\u3055\u308C\u307E\u305B\u3093\uFF09\u3002\n\nABC \u533A\u5206\u307E\u3067\u4ED8\u3051\u308B\u306A\u3089\u3001\u6700\u7D42\u6BB5\u306B `CASE` \u3092\u8DB3\u3057\u307E\u3059\uFF08**\u7D2F\u7A4D\u69CB\u6210\u6BD4\u306E\u5F0F\u3092 `CASE` \u306E\u4E2D\u306B\u76F4\u63A5\u66F8\u3051\u307E\u3059**\u3002\n\u30A6\u30A3\u30F3\u30C9\u30A6\u306F\u3082\u3046 `ranked` \u3067\u5217\u306B\u306A\u3063\u3066\u3044\u308B\u305F\u3081\u3067\u3059\uFF09\u3002\n\n```sql\nSELECT \u88FD\u54C1\u540D, \u51FA\u5EAB\u91CF,\n ROUND(\u7D2F\u8A08 * 100.0 / \u7DCF\u8A08, 1) AS \u7D2F\u7A4D\u69CB\u6210\u6BD4,\n CASE WHEN \u7D2F\u8A08 * 100.0 / \u7DCF\u8A08 <= 80 THEN 'A'\n WHEN \u7D2F\u8A08 * 100.0 / \u7DCF\u8A08 <= 95 THEN 'B'\n ELSE 'C' END AS \u533A\u5206\nFROM ranked\nORDER BY \u51FA\u5EAB\u91CF DESC, \u88FD\u54C1\u540D\n```\n\n\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3067\u3082\u540C\u3058\u5F62\u304C\u66F8\u3051\u307E\u3059\uFF08`CREATE TEMP TABLE #base AS ...; CREATE TEMP TABLE #ranked AS ...; SELECT ...`\uFF09\u3002\n**1 \u6587\u3067\u5B8C\u7D50\u3059\u308B CTE \u306E\u307B\u3046\u304C\u3001\u4FDD\u5B58\u30AF\u30A8\u30EA\u306B\u3082 CLI \u306B\u3082\u305D\u306E\u307E\u307E\u8F09\u305B\u3089\u308C\u307E\u3059\u3002**", uri: "ksql://recipes/r15" }, r16: { heading: "R16. \u524D\u6708\u6BD4\u3092\u51FA\u3059\uFF08`LAG`\uFF09", text: "## R16. \u524D\u6708\u6BD4\u3092\u51FA\u3059\uFF08`LAG`\uFF09\n\n\u6708\u6B21\u96C6\u7D04\u306E\u76F4\u524D\u884C\u3092 `LAG` \u3067\u53C2\u7167\u3057\u3001\u524D\u6708\u6BD4\u3092\u51FA\u3057\u307E\u3059\u3002\u30A6\u30A3\u30F3\u30C9\u30A6\u7D50\u679C\u3092\u540C\u3058SELECT\u306E\u5F0F\u306B\u542B\u3081\u3089\u308C\u306A\u3044\u305F\u3081\u3001**\u6708\u6B21\u96C6\u7D04 \u2192 \u524D\u6708\u5217 \u2192 \u6BD4\u7387\u8A08\u7B97**\u306E3\u6BB5\u306B\u5206\u3051\u307E\u3059\u3002\n\n```sql\nWITH \u6708\u6B21 AS (\n SELECT DATE_FORMAT(\u65E5\u4ED8, '%Y-%m') AS \u5E74\u6708, SUM(\u500B\u6570) AS \u51FA\u5EAB\u6570\n FROM APP4228\n WHERE \u5165\u51FA\u5EAB\u533A\u5206 = '\u51FA\u5EAB'\n GROUP BY \u5E74\u6708\n), \u524D\u6708\u4ED8\u304D AS (\n SELECT \u5E74\u6708, \u51FA\u5EAB\u6570,\n LAG(\u51FA\u5EAB\u6570) OVER (ORDER BY \u5E74\u6708) AS \u524D\u6708\n FROM \u6708\u6B21\n)\nSELECT \u5E74\u6708, \u51FA\u5EAB\u6570, \u524D\u6708,\n CASE WHEN \u524D\u6708 = '' THEN ''\n ELSE ROUND((\u51FA\u5EAB\u6570 - \u524D\u6708) * 100.0 / \u524D\u6708, 1) END AS \u524D\u6708\u6BD4\nFROM \u524D\u6708\u4ED8\u304D\nORDER BY \u5E74\u6708\n```\n\n- \u5148\u982D\u6708\u306F\u53C2\u7167\u5148\u304C\u306A\u3044\u305F\u3081 `\u524D\u6708 = ''`\u3002\u6700\u7D42\u6BB5\u306E `CASE` \u3067\u524D\u6708\u6BD4\u3082\u7A7A\u6587\u5B57\u306B\u3057\u307E\u3059\u3002\n **`= 0` \u3067\u306F\u6355\u307E\u308A\u307E\u305B\u3093**\uFF08\u7A7A\u6587\u5B57\u306F\u7B97\u8853\u3067\u306F 0 \u306B\u306A\u308A\u307E\u3059\u304C\u3001\u6BD4\u8F03\u3067\u306F 0 \u3068\u7B49\u3057\u304F\u306A\u3044\u305F\u3081\uFF09\u3002`CASE WHEN \u524D\u6708 = 0` \u3068\u66F8\u304F\u3068\u5148\u982D\u884C\u304C `NaN` \u306B\u306A\u308A\u307E\u3059\u3002\n **\u540C\u3058\u7F60\u306F\u524D\u6708\u6BD4\u4EE5\u5916\u3067\u3082\u8E0F\u307F\u307E\u3059**\uFF1D**\u5728\u5EAB\u65E5\u6570**\uFF08\u5728\u5EAB \xF7 \u51FA\u5EAB\u30DA\u30FC\u30B9\uFF09\u30FB**\u5358\u4FA1**\u30FB**1 \u4EF6\u3042\u305F\u308A**\u30FB**\u56DE\u8EE2\u7387**\u306A\u3069\u3001**\u5206\u6BCD\u304C\u300C\u52D5\u304D\u306E\u7121\u3044\u5BFE\u8C61\u300D\u3067\u7A7A\u306B\u306A\u308B\u6307\u6A19**\u3002\u524D\u6708\u6BD4\u3060\u3051\u3092\u63A2\u3057\u3066\u3044\u308B\u3068\u6C17\u3065\u304D\u307E\u305B\u3093\u3002\n- `LAG(\u51FA\u5EAB\u6570)` \u306E\u7D50\u679C\u306F\u6570\u5024\u578B\u306E\u6BD4\u8F03\u898F\u5247\u3092\u5F15\u304D\u7D99\u3050\u305F\u3081\u3001\u5F8C\u6BB5\u306E\u8A08\u7B97\u30FB\u4E26\u3079\u66FF\u3048\u3067\u6587\u5B57\u5217\u9806\u306B\u306F\u306A\u308A\u307E\u305B\u3093\u3002\n- `ORDER BY \u5E74\u6708` \u304C\u91CD\u8907\u3057\u5F97\u308B\u7C92\u5EA6\u306A\u3089\u3001\u305D\u306E\u8868\u306E\u4E2D\u3067\u4E00\u610F\u306B\u306A\u308B\u5217\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002**CTE \u306B\u306F `\u30EC\u30B3\u30FC\u30C9\u756A\u53F7` \u304C\u7121\u3044\u306E\u3067\u3001\u5143\u306E\u96C6\u7D04\u30AD\u30FC\u3092\u3059\u3079\u3066\u542B\u3081\u307E\u3059**\u3002\n **\u3053\u306E\u4F8B\u306F\u6708\u6B21\u96C6\u7D04\u306A\u306E\u3067 `\u5E74\u6708` \u306F 1 \u884C\u306B\u5B9A\u307E\u308A\u307E\u3059\u304C\u3001\u5B9F\u884C\u3059\u308B\u3068\u5168\u9806\u5E8F\u306E\u8B66\u544A\u304C\u51FA\u307E\u3059\u3002** \u30A8\u30F3\u30B8\u30F3\u304C\u96C6\u7D04\u7D50\u679C\u306E\u4E00\u610F\u6027\u3092\u9759\u7684\u306B\u8A3C\u660E\u3067\u304D\u306A\u3044\u305F\u3081\u3067\u3059\u3002\u305F\u3060\u3057\u3001\u5404 window partition \u5185\u3067 `ORDER BY` \u5024\u306E\u7D44\u304C\u5165\u529B\u884C\u3092\u4E00\u610F\u306B\u8B58\u5225\u3059\u308B\u3068\u30AF\u30A8\u30EA\u69CB\u9020\u307E\u305F\u306F\u4FDD\u8A3C\u6E08\u307F\u5236\u7D04\u304B\u3089\u78BA\u8A8D\u3067\u304D\u308B\u5834\u5408\u306B\u9650\u308A\u3001\u8B66\u544A\u306F\u7121\u8996\u3067\u304D\u307E\u3059\u3002**\u3053\u306E\u4F8B\u306F\u5143\u306E\u96C6\u7D04\u30AD\u30FC `\u5E74\u6708` \u3092\u3059\u3079\u3066\u542B\u3080\u305F\u3081\u3001\u305D\u306E\u80AF\u5B9A\u4F8B\u3067\u3059\u3002** \u751F\u6210\u5217\u30FB\u518D\u5E30\u306E\u6DF1\u3055\u5217\u30FB`$id` \u7531\u6765\u3068\u3044\u3046\u7406\u7531\u3060\u3051\u3067\u306F\u7121\u8996\u3067\u304D\u307E\u305B\u3093\u3002\n- \u6708\u304C\u6B20\u3051\u3066\u3044\u308B\u5834\u5408\u3001`LAG` \u306F\u300C\u66A6\u4E0A\u306E\u524D\u6708\u300D\u3067\u306F\u306A\u304F\u300C\u76F4\u524D\u306B\u5B58\u5728\u3059\u308B\u884C\u300D\u3092\u8FD4\u3057\u307E\u3059\u3002\u6B20\u640D\u6708\u306E0\u57CB\u3081\u304C\u5FC5\u8981\u306A\u3089\u3001\u5148\u306B\u6708\u30DE\u30B9\u30BF\u7B49\u3067\u884C\u3092\u4F5C\u3063\u3066\u304B\u3089\u9069\u7528\u3057\u307E\u3059\u3002\n- \u5B8C\u5168\u5165\u529B\u304C\u5FC5\u8981\u3067\u3059\u3002`maxRecords` \u3092\u5165\u529B\u4EF6\u6570\u4EE5\u4E0A\u306B\u3057\u3001\u53D6\u5F97\u4E0A\u9650\u5230\u9054\u6642\u306F\u90E8\u5206\u7D50\u679C\u3092\u63A1\u7528\u3057\u307E\u305B\u3093\u3002", uri: "ksql://recipes/r16" }, r17: { heading: "R17. \u300C\u884C\u306E\u7121\u3044\u3082\u306E\u300D\u3092 0 \u3068\u3057\u3066\u4E26\u3079\u308B\uFF08\u30DE\u30B9\u30BF\u8D77\u70B9\u306E `LEFT JOIN`\uFF09", text: "## R17. \u300C\u884C\u306E\u7121\u3044\u3082\u306E\u300D\u3092 0 \u3068\u3057\u3066\u4E26\u3079\u308B\uFF08\u30DE\u30B9\u30BF\u8D77\u70B9\u306E `LEFT JOIN`\uFF09\n\n**`GROUP BY` \u306F\u30C7\u30FC\u30BF\u306E\u3042\u308B\u884C\u3057\u304B\u4F5C\u308A\u307E\u305B\u3093\u3002** \u96C6\u8A08\u5BFE\u8C61\u304C 0 \u4EF6\u306E\u3082\u306E\u306F**\u884C\u3054\u3068\u6D88\u3048\u307E\u3059**\u3002\n\u30A8\u30E9\u30FC\u3082\u8B66\u544A\u3082\u51FA\u306A\u3044\u306E\u3067\u3001**\u300C0 \u3060\u3063\u305F\u300D\u3068\u300C\u305D\u3082\u305D\u3082\u7121\u304B\u3063\u305F\u300D\u306E\u533A\u5225\u304C\u4ED8\u304D\u307E\u305B\u3093**\u3002\n\n**\u691C\u51FA\u3057\u305F\u3044\u306E\u304C\u307E\u3055\u306B\u305D\u306E 0 \u4EF6**\u306E\u3068\u304D\uFF08\u52D5\u304D\u304C\u6B62\u307E\u3063\u305F\u88FD\u54C1\u30FB\u53D6\u5F15\u306E\u7121\u3044\u53D6\u5F15\u5148\uFF09\u306B\u52B9\u304D\u307E\u3059\u3002\n\n### \u6D88\u3048\u308B\u4F8B\n\n```sql\n-- \u76F4\u8FD1 90 \u65E5\u306B\u51FA\u5EAB\u306E\u3042\u308B\u88FD\u54C1\u3057\u304B\u51FA\u306A\u3044\nSELECT \u88FD\u54C1\u540D, SUM(\u500B\u6570) AS \u51FA\u5EAB\u6570\nFROM APP4228\nWHERE \u5165\u51FA\u5EAB\u533A\u5206 = '\u51FA\u5EAB' AND \u65E5\u4ED8 >= '2026-05-08'\nGROUP BY \u88FD\u54C1\u540D\n```\n\n**\u30DE\u30B9\u30BF\u306B 8 \u88FD\u54C1\u3042\u3063\u3066\u3082 6 \u884C\u3057\u304B\u8FD4\u308A\u307E\u305B\u3093**\uFF08\u5B9F\u6E2C\uFF09\u3002\u51FA\u5EAB\u30BC\u30ED\u306E 2 \u88FD\u54C1\u304C\u6D88\u3048\u307E\u3059\u3002\n\n### \u30DE\u30B9\u30BF\u8D77\u70B9\u306B\u3059\u308B\u3068 0 \u304C\u51FA\u308B\n\n**\u8D77\u70B9\u3092\u30DE\u30B9\u30BF\u5074\u306B\u7F6E\u304D\u3001\u6761\u4EF6\u306F `WHERE` \u3067\u306F\u306A\u304F `CASE` \u306B\u5165\u308C\u307E\u3059\u3002**\n\n```sql\nSELECT m.\u88FD\u54C1\u540D,\n SUM(CASE WHEN t.\u65E5\u4ED8 >= '2026-05-08' AND t.\u5165\u51FA\u5EAB\u533A\u5206 = '\u51FA\u5EAB'\n THEN t.\u500B\u6570 ELSE 0 END) AS \u51FA\u5EAB\u6570\nFROM APP4229 m LEFT JOIN APP4228 t ON m.\u88FD\u54C1\u540D = t.\u88FD\u54C1\u540D\nGROUP BY m.\u88FD\u54C1\u540D\nORDER BY m.\u88FD\u54C1\u540D\n```\n\n**8 \u884C\u304C\u8FD4\u308A\u3001\u51FA\u5EAB\u30BC\u30ED\u306E\u88FD\u54C1\u306F 0 \u306B\u306A\u308A\u307E\u3059**\uFF08\u5B9F\u6E2C\uFF09\u3002\n\n- **\u6761\u4EF6\u3092 `WHERE` \u306B\u66F8\u3044\u3066\u306F\u3044\u3051\u307E\u305B\u3093\u3002** `WHERE` \u306F `LEFT JOIN` \u306E\u5F8C\u306B\u52B9\u304F\u306E\u3067\u3001\n \u4E00\u81F4\u3057\u306A\u304B\u3063\u305F\u884C\u304C\u305D\u3053\u3067\u843D\u3061\u3066**\u5143\u306E\u554F\u984C\u306B\u623B\u308A\u307E\u3059**\n- **\u6570\u3048\u308B\u3068\u304D\u3082\u540C\u3058**\u3067\u3059\u3002`COUNT(*)` \u306F `LEFT JOIN` \u306E\u7A7A\u884C\u3082 1 \u3068\u6570\u3048\u308B\u305F\u3081\u3001\n `SUM(CASE WHEN ... THEN 1 ELSE 0 END)` \u3092\u4F7F\u3044\u307E\u3059\n- \u30DE\u30B9\u30BF\u5074\u306B\u7121\u3044\u5024\u304C\u660E\u7D30\u306B\u3042\u308B\u3068\u3001\u305D\u306E\u884C\u306F**\u3053\u306E\u5F62\u3067\u306F\u51FA\u307E\u305B\u3093**\uFF08\u30DE\u30B9\u30BF\u304C\u6BCD\u96C6\u5408\u306B\u306A\u308A\u307E\u3059\uFF09\n\n### \u65E5\u4ED8\u8EF8\u306F `GENERATE_SERIES` \u3067\u4F5C\u308B\uFF08v3.59.0\u30FB\u6708\uFF0F\u5E74 step \u306F v3.63.0\uFF09\n\nkintone \u306B\u65E5\u4ED8\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3\u306E\u30A2\u30D7\u30EA\u306F\u3042\u308A\u307E\u305B\u3093\u304C\u3001**`WITH` \u306E CTE \u672C\u4F53\u306B `GENERATE_SERIES` \u3092\u66F8\u3051\u3070\u3001\n\u30EC\u30B3\u30FC\u30C9\u3092 1 \u4EF6\u3082\u8AAD\u307E\u305A\u306B\u65E5\u4ED8\u7CFB\u5217\u3092\u4F5C\u308C\u307E\u3059**\uFF08[\u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 \xA713](ksql_language_reference.md#13-with-\u53E5cte)\uFF09\u3002\n\u8D77\u70B9\u3092\u3053\u306E\u7CFB\u5217\u306B\u7F6E\u3051\u3070\u3001\u30DE\u30B9\u30BF\u3068\u540C\u3058\u5F62\u3067**\u53D6\u5F15\u306E\u7121\u3044\u65E5\u3092 0 \u3068\u3057\u3066\u4E26\u3079\u3089\u308C\u307E\u3059**\u3002\n\n```sql\nWITH \u65E5\u4ED8\u7CFB\u5217 AS (\n GENERATE_SERIES('2026-07-01', '2026-07-31', '1 day') AS \u65E5\u4ED8\n),\n\u65E5\u5225 AS (\n SELECT \u65E5\u4ED8, SUM(\u500B\u6570) AS \u51FA\u5EAB\u6570\n FROM APP4228\n WHERE \u5165\u51FA\u5EAB\u533A\u5206 = '\u51FA\u5EAB' AND \u65E5\u4ED8 >= '2026-07-01' AND \u65E5\u4ED8 <= '2026-07-31'\n GROUP BY \u65E5\u4ED8\n)\nSELECT s.\u65E5\u4ED8,\n CASE WHEN t.\u51FA\u5EAB\u6570 = '' THEN 0 ELSE t.\u51FA\u5EAB\u6570 END AS \u51FA\u5EAB\u6570\nFROM \u65E5\u4ED8\u7CFB\u5217 AS s LEFT JOIN \u65E5\u5225 AS t ON s.\u65E5\u4ED8 = t.\u65E5\u4ED8\nORDER BY s.\u65E5\u4ED8\n```\n\n**31 \u884C\u304C\u8FD4\u308A\u3001\u51FA\u5EAB\u306E\u7121\u3044 5 \u65E5\u304C 0 \u3067\u4E26\u3073\u307E\u3059**\uFF08\u5B9F\u6E2C\u3002`GROUP BY` \u3060\u3051\u306A\u3089 26 \u884C\u3067\u3001\u305D\u306E 5 \u65E5\u306F\u884C\u3054\u3068\u6D88\u3048\u307E\u3059\uFF09\u3002\n\n- **`LEFT JOIN` \u3067\u4E00\u81F4\u3057\u306A\u304B\u3063\u305F\u5074\u306F 0 \u3067\u306F\u306A\u304F\u7A7A\u6587\u5B57**\u3067\u3059\u3002`CASE WHEN \u2026 = '' THEN 0` \u307E\u3067\u66F8\u3044\u3066\u521D\u3081\u3066 0 \u57CB\u3081\u306B\u306A\u308A\u307E\u3059\n- \u6708\u6B21\u306F `GENERATE_SERIES('2025-08-01', '2026-08-01', '1 month') AS \u6708` \u3067\u6708\u521D\u7CFB\u5217\u3092\u4F5C\u308A\u3001\n `DATE_FORMAT(\u6708, '%Y-%m')` \u3092\u5E74\u6708\u30AD\u30FC\u306B\u3057\u3066\u6708\u6B21\u96C6\u8A08\u3068\u7D50\u5408\u3057\u307E\u3059\uFF08start \u306F\u6708\u521D\u9650\u5B9A\uFF09\u3002\n **\u7A7A\u6708\u304C\u3042\u308B\u3068 `LAG` \u306F\u300C\u76F4\u524D\u306B\u5B58\u5728\u3059\u308B\u6708\u300D\u3068\u6BD4\u3079\u3066\u3057\u307E\u3046**\uFF08\u9759\u304B\u306B 2 \u304B\u6708\u524D\u6BD4\u306B\u306A\u308B\uFF09\u306E\u3067\u3001\u524D\u6708\u6BD4\u306F 0 \u57CB\u3081\u3057\u3066\u304B\u3089\u53D6\u308A\u307E\u3059\n- \u96C6\u8A08\u5074\u3092 `THIS_MONTH()` \u306A\u3069\u306E\u76F8\u5BFE\u65E5\u4ED8\u3067\u7D5E\u308A\u305F\u3044\u5834\u5408\u306F\u3001CTE \u3092 JOIN \u306E\u5165\u529B\u306B\u3057\u305F\u5F62\u3067\u306F\u4F7F\u3048\u306A\u3044\u305F\u3081\u3001\n \u5148\u306B `CREATE TEMP TABLE #\u65E5\u5225 AS SELECT \u2026 WHERE \u65E5\u4ED8 = THIS_MONTH() GROUP BY \u2026;` \u3067\u5B9F\u4F53\u5316\u3057\u3066\u304B\u3089\u7CFB\u5217\u3068 JOIN \u3057\u307E\u3059\n- \u300C\u65E5\u4ED8 \xD7 \u88FD\u54C1\u300D\u306E\u3088\u3046\u306B\u8EF8\u304C 2 \u672C\u3042\u308B\u3068\u304D\u306F\u3001\u7CFB\u5217\u3068\u5C0F\u3055\u3044\u30DE\u30B9\u30BF\u3092 `CROSS JOIN` \u3067\u683C\u5B50\u306B\u3057\u3066\u304B\u3089\u5B9F\u7E3E\u3092\u5F53\u3066\u307E\u3059\uFF08v3.63.0\u30FB\u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 \xA77\uFF09\u3002\n `ON` \u306F\u7B49\u5F0F 1 \u672C\u3060\u3051\u306A\u306E\u3067\u3001\u4E21\u5074\u3067 `CONCAT(DATE_FORMAT(\u65E5\u4ED8, '%Y-%m-%d'), '|', \u88FD\u54C1\u540D)` \u306E\u3088\u3046\u306A\u9023\u7D50\u30AD\u30FC\u3092\u4F5C\u3063\u3066\u7D50\u5408\u3057\u307E\u3059\n- \u751F\u6210\u884C\u6570\u306F\u540C\u4E00 `WITH` \u6587\u3067\u5408\u8A08 10,000 \u884C\u307E\u3067\uFF08\u65E5\u6B21\u3067\u7D04 27 \u5E74\u5206\uFF09\u3002`WHERE` \u3084 `LIMIT` \u3092\u4ED8\u3051\u3066\u3082\u514D\u9664\u3055\u308C\u307E\u305B\u3093\n\n> \u6B74\u53F2\u7684\u7D4C\u7DEF: v3.58.0 \u4EE5\u524D\u306F\u9023\u756A\u751F\u6210\u304C\u7121\u304F\u3001\u65E5\u4ED8\u30A2\u30D7\u30EA\u3092\u81EA\u4F5C\u3059\u308B\u304B SQL \u306E\u5916\u3067\u57CB\u3081\u308B\u3057\u304B\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\n> \u6708\u6B21\u306A\u3089\u6B6F\u629C\u3051\u304C\u8D77\u304D\u306B\u304F\u3044\uFF08\u5B9F\u6E2C\u3067\u306F 13 \u304B\u6708\u3059\u3079\u3066\u306B\u884C\u304C\u3042\u3063\u305F\uFF09\u3068\u3044\u3046\u56DE\u907F\u3082\u3001\u4ECA\u306F\u4E0D\u8981\u3067\u3059\u3002\n\n### \u56FA\u5B9A\u6DF1\u3055\u306E\u968E\u5C64\u306F\u81EA\u5DF1 JOIN \u3067\u66F8\u304F\n\n\u968E\u5C64\u306E\u6700\u5927\u6DF1\u3055\u304C\u4ED5\u69D8\u3067\u56FA\u5B9A\u3055\u308C\u3066\u3044\u308B\u306A\u3089\u3001\u540C\u3058\u30A2\u30D7\u30EA\u3092\u6BB5\u6570\u5206\u3060\u3051\u81EA\u5DF1 JOIN \u3057\u307E\u3059\u3002\u6B21\u306F\u89AA\u304B\u3089\u6700\u59273\u6BB5\u5148\u307E\u3067\u3092\u6A2A\u6301\u3061\u3067\u8FD4\u3059\u5F62\u3067\u3059\u3002\u5404 `JOIN ... ON` \u306F kSQL \u304C\u5BFE\u5FDC\u3059\u308B\u7B49\u5024\u6761\u4EF61\u672C\u3060\u3051\u306B\u3057\u3001\u6DF1\u3055\u3092\u5897\u3084\u3059\u3068\u304D\u306F alias \u3068 JOIN \u30921\u6BB5\u305A\u3064\u8FFD\u52A0\u3057\u307E\u3059\u3002\n\n```sql\nSELECT root.\u89AA\u30B3\u30FC\u30C9 AS \u8D77\u70B9,\n root.\u5B50\u30B3\u30FC\u30C9 AS `1\u6BB5\u76EE`,\n level2.\u5B50\u30B3\u30FC\u30C9 AS `2\u6BB5\u76EE`,\n level3.\u5B50\u30B3\u30FC\u30C9 AS `3\u6BB5\u76EE`\nFROM APP100 AS root\nLEFT JOIN APP100 AS level2 ON root.\u5B50\u30B3\u30FC\u30C9 = level2.\u89AA\u30B3\u30FC\u30C9\nLEFT JOIN APP100 AS level3 ON level2.\u5B50\u30B3\u30FC\u30C9 = level3.\u89AA\u30B3\u30FC\u30C9\nWHERE root.\u89AA\u30B3\u30FC\u30C9 = 'ROOT'\nORDER BY `1\u6BB5\u76EE`, `2\u6BB5\u76EE`, `3\u6BB5\u76EE`\n```\n\n\u3053\u306E\u5F62\u306F\u6DF1\u3055\u3092\u56FA\u5B9A\u3067\u304D\u308B\u7D44\u7E54\u8868\u30FB\u5206\u985E\u8868\u306B\u5411\u304D\u307E\u3059\u3002\u6DF1\u3055\u304C\u30C7\u30FC\u30BF\u6B21\u7B2C\u3067\u5909\u308F\u308B\u5834\u5408\u3084\u5FAA\u74B0\u30C7\u30FC\u30BF\u3092\u691C\u51FA\u3057\u305F\u3044\u5834\u5408\u306F\u3001\u6B21\u306E `WITH RECURSIVE` \u3092\u4F7F\u3044\u307E\u3059\u3002\n\n### \u518D\u5E30 CTE \u306E\u57FA\u672C\u30EC\u30B7\u30D4\n\n\u518D\u5E30 CTE \u306F read-only \u3067\u3059\u3002seed \u3067\u8D77\u70B9\u306E\u8FBA\u3092\u9078\u3073\u3001\u518D\u5E30\u9805\u3067\u76F4\u524D\u306E frontier \u3068\u7269\u7406 source \u3092 `INNER JOIN` \u3057\u307E\u3059\u3002`CYCLE` \u306F\u73FE\u5728 path \u4E0A\u3067\u540C\u3058\u5B50\u30B3\u30FC\u30C9\u3078\u623B\u308B\u5FAA\u74B0\u884C\u3092 `Y` \u3068\u3057\u30661\u56DE\u3060\u3051\u6B8B\u3057\u3001\u305D\u306E\u5148\u306E\u5C55\u958B\u3092\u6B62\u3081\u307E\u3059\u3002\n\n```sql\nWITH RECURSIVE \u968E\u5C64\n (\u89AA\u30B3\u30FC\u30C9, \u5B50\u30B3\u30FC\u30C9, \u6DF1\u3055) AS (\n SELECT \u89AA\u30B3\u30FC\u30C9, \u5B50\u30B3\u30FC\u30C9, 1\n FROM APP100\n WHERE \u89AA\u30B3\u30FC\u30C9 = 'ROOT'\n UNION ALL\n SELECT source.\u89AA\u30B3\u30FC\u30C9, source.\u5B50\u30B3\u30FC\u30C9, parent.\u6DF1\u3055 + 1\n FROM APP100 AS source\n INNER JOIN \u968E\u5C64 AS parent ON source.\u89AA\u30B3\u30FC\u30C9 = parent.\u5B50\u30B3\u30FC\u30C9\n)\nCYCLE \u5B50\u30B3\u30FC\u30C9 SET is_cycle TO 'Y' DEFAULT 'N'\nSELECT \u89AA\u30B3\u30FC\u30C9, \u5B50\u30B3\u30FC\u30C9, \u6DF1\u3055, is_cycle\nFROM \u968E\u5C64\nORDER BY \u6DF1\u3055, \u89AA\u30B3\u30FC\u30C9, \u5B50\u30B3\u30FC\u30C9\n```\n\n\u540C\u3058\u30CE\u30FC\u30C9\u3078\u5225\u7D4C\u8DEF\u3067\u5230\u9054\u3057\u305F\u884C\u306F\u5225\u306E path occurrence \u3068\u3057\u3066\u6B8B\u308A\u307E\u3059\u3002`CYCLE` \u306F\u7D44\u307F\u5408\u308F\u305B\u7206\u767A\u306E\u4E0A\u9650\u3067\u306F\u306A\u3044\u305F\u3081\u3001\u6DF1\u3055\u30FB\u7D2F\u7A4D\u7D50\u679C\u884C\u30FB\u7D2F\u7A4D\u4E2D\u9593\u5C55\u958B\u306E\u4E09\u5883\u754C\u306F\u5E38\u306B\u6709\u52B9\u3067\u3059\u3002`path` \u81EA\u4F53\u306F\u51FA\u529B\u3067\u304D\u307E\u305B\u3093\u3002", uri: "ksql://recipes/r17" }, r18: { heading: "R18. Flow dialect 1 \u3067\u6708\u6B21\u540C\u671F\u30B8\u30E7\u30D6\u3092\u66F8\u304F\uFF08`-- @ksql` \u30D8\u30C3\u30C0\u30FB`ASSERT`/`EXIT` \u30B2\u30FC\u30C8\u30FB`KEY()`\uFF09", text: "## R18. Flow dialect 1 \u3067\u6708\u6B21\u540C\u671F\u30B8\u30E7\u30D6\u3092\u66F8\u304F\uFF08`-- @ksql` \u30D8\u30C3\u30C0\u30FB`ASSERT`/`EXIT` \u30B2\u30FC\u30C8\u30FB`KEY()`\uFF09\n\n> `-- @ksql dialect: 1` \u3092\u5BA3\u8A00\u3057\u305F opt-in \u306E\u62E1\u5F35\u69CB\u6587\uFF08\u2192 \u8A00\u8A9E\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9 \xA727\u30FBv3.69.0\uFF09\u3002\n> \u5BA3\u8A00\u306E\u306A\u3044\u65E2\u5B58\u30D0\u30C3\u30C1\u306E\u6319\u52D5\u306F\u4E00\u5207\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n\n**\u8A2D\u8A08\u539F\u5247\u3068\u306E\u5BFE\u5FDC**: \u5192\u982D\u306E\u539F\u5247 6\u300C\u6642\u523B\u306E\u56FA\u5B9A\u300D\u306F\u3001dialect 1 \u3067\u306F `@NOW()` / `@MONTH_START()` \u304C\n**\u30B9\u30AF\u30EA\u30D7\u30C8\u5168\u4F53\u3067\u5358\u4E00\u306E\u57FA\u6E96\u6642\u523B**\u304B\u3089\u5C0E\u51FA\u3055\u308C\u308B\u305F\u3081\u3001`SET @now = NOW()` \u3092\u66F8\u304B\u306A\u304F\u3066\u3082\u6E80\u305F\u3055\u308C\u307E\u3059\u3002\n\u300C\u7570\u5E38\u4E2D\u65AD\uFF08\u901A\u77E5\u5BFE\u8C61\uFF09\u300D\u3068\u300C\u5BFE\u8C61 0 \u4EF6\u306E\u6B63\u5E38\u30B9\u30AD\u30C3\u30D7\uFF08\u901A\u77E5\u4E0D\u8981\uFF09\u300D\u306F `ASSERT` \u3068 `EXIT SUCCESS IF` \u3067\n\u8A9E\u5F59\u3092\u5206\u3051\u307E\u3059 \u2014 \u6DF7\u540C\u3059\u308B\u3068\u6708\u521D\u306E\u305F\u3073\u306B\u8AA4\u30A2\u30E9\u30FC\u30C8\u304C\u51FA\u3066\u76E3\u8996\u304C\u5F62\u9AB8\u5316\u3057\u307E\u3059\u3002\n\n```sql\n-- @ksql name: monthly_sales_sync\n-- @ksql timeout: 600\n-- @ksql dialect: 1\n\n-- 1) \u696D\u52D9\u7570\u5E38\u30B2\u30FC\u30C8\uFF08\u4E0D\u6210\u7ACB\u306A\u3089 AssertError \u3067\u4E2D\u65AD\u30FB\u5F8C\u7D9A\u306F\u5B9F\u884C\u3057\u306A\u3044\uFF09\nASSERT (\n SELECT COUNT(*) FROM APP100\n WHERE \u53D7\u6CE8\u65E5 >= @MONTH_START() AND \u53D7\u6CE8\u65E5 < @NEXT_MONTH_START() AND \u91D1\u984D < 0\n) = 0, '\u3010\u7570\u5E38\u4E2D\u65AD\u3011\u30DE\u30A4\u30CA\u30B9\u306E\u58F2\u4E0A\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u3059';\n\n-- 2) \u96C6\u8A08\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u306F\u88F8\u540D\u3067\u66F8\u3051\u308B\u3002#\u4ED8\u304D\u306E\u5F93\u6765\u5F62\u3068\u540C\u3058\u3082\u306E\uFF09\nCREATE TEMP TABLE summary AS\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, COUNT(\u30EC\u30B3\u30FC\u30C9\u756A\u53F7) AS \u53D7\u6CE8\u4EF6\u6570, SUM(\u91D1\u984D) AS \u5F53\u6708\u58F2\u4E0A\u5408\u8A08\nFROM APP100\nWHERE \u53D7\u6CE8\u65E5 >= @MONTH_START() AND \u53D7\u6CE8\u65E5 < @NEXT_MONTH_START() AND \u30B9\u30C6\u30FC\u30BF\u30B9 = '\u53D7\u6CE8\u5B8C\u4E86'\nGROUP BY \u9867\u5BA2\u30B3\u30FC\u30C9;\n\n-- 3) \u5BFE\u8C61 0 \u4EF6\u306F\u300C\u6210\u529F\u300D\u3068\u3057\u3066\u7D42\u4E86\uFF08\u5F8C\u7D9A\u306F skippedReason: \"exit\" \u3067 skip\uFF09\nEXIT SUCCESS IF (SELECT COUNT(*) FROM summary) = 0, '\u5BFE\u8C61 0 \u4EF6\u306E\u305F\u3081\u30B9\u30AD\u30C3\u30D7';\n\n-- 4) \u51AA\u7B49\u306A\u66F8\u304D\u8FBC\u307F\uFF08\u30AD\u30FC\u306F\u300C\u5024\u306E\u91CD\u8907\u3092\u7981\u6B62\u3059\u308B\u300D\u8A2D\u5B9A\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u3042\u308B\u3053\u3068\u3002\n-- \u91CD\u8907\u7981\u6B62\u3067\u306A\u3044\u30FB\u8907\u5408\u30AD\u30FC\u30FB\u578B\u4E0D\u6B63\u306F\u5B9F\u884C\u524D\u306B\u30A8\u30E9\u30FC\u3067\u6B62\u307E\u308B\uFF09\nUPSERT INTO APP200 (\u9867\u5BA2\u30B3\u30FC\u30C9, \u5F53\u6708\u53D7\u6CE8\u4EF6\u6570, \u5F53\u6708\u58F2\u4E0A\u5B9F\u7E3E, \u6700\u7D42\u96C6\u8A08\u65E5\u6642)\nSELECT \u9867\u5BA2\u30B3\u30FC\u30C9, \u53D7\u6CE8\u4EF6\u6570, \u5F53\u6708\u58F2\u4E0A\u5408\u8A08, @NOW()\nFROM summary\nKEY (\u9867\u5BA2\u30B3\u30FC\u30C9);\n```\n\n- **\u30D0\u30C3\u30AF\u30D5\u30A3\u30EB**: \u516C\u5F0F API\uFF08`/flow`\uFF09\u306E `asOf` / `timezone` \u6CE8\u5165\u3067\u3001\u904E\u53BB\u65E5\u4ED8\u306E\u57FA\u6E96\u6642\u523B\u306E\u307E\u307E\n \u540C\u3058\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u518D\u5B9F\u884C\u3067\u304D\u307E\u3059\uFF08`@MONTH_START()` \u7B49\u304C\u6CE8\u5165\u5024\u304B\u3089\u5C0E\u51FA\u3055\u308C\u308B\uFF09\n- **\u65E5\u6642\u5883\u754C\u306F\u534A\u958B\u533A\u9593**\uFF08`>= \u6708\u521D AND < \u7FCC\u6708\u521D`\uFF09\u3067\u66F8\u304F \u2014 R7 \u4EE5\u964D\u306E\u5404\u30EC\u30B7\u30D4\u3068\u540C\u3058\u5B9A\u77F3\n- `@` \u306A\u3057\u306E `TODAY()` / `THIS_MONTH()` \u306F kintone \u30B5\u30FC\u30D0\u30FC\u8A55\u4FA1\u306E\u305F\u3081 as-of \u306E\u5BFE\u8C61\u5916\uFF08\u8B66\u544A\u304C\u51FA\u307E\u3059\uFF09", uri: "ksql://recipes/r18" } } } };
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
44
|
|
|
@@ -29765,7 +29765,7 @@ var import_docsResourceBuilder = __toESM(require_docsResourceBuilder());
|
|
|
29765
29765
|
|
|
29766
29766
|
// src/mcp/serverVersion.ts
|
|
29767
29767
|
init_define_KSQL_DOCS();
|
|
29768
|
-
var SERVER_VERSION = true ? "3.
|
|
29768
|
+
var SERVER_VERSION = true ? "3.79.0" : "0.0.0-dev";
|
|
29769
29769
|
|
|
29770
29770
|
// src/mcp/docsResources.ts
|
|
29771
29771
|
function loadFromRepoDocs() {
|
|
@@ -48721,6 +48721,15 @@ function resolveMaterializedColumnMeta(table, requested) {
|
|
|
48721
48721
|
var materializedMetaBySelectResult = /* @__PURE__ */ new WeakMap();
|
|
48722
48722
|
var materializedMetaByValidationResult = /* @__PURE__ */ new WeakMap();
|
|
48723
48723
|
var importSourceByDmlStatement = /* @__PURE__ */ new WeakMap();
|
|
48724
|
+
var sourceWarningsByDmlStatement = /* @__PURE__ */ new WeakMap();
|
|
48725
|
+
function rememberDmlSourceWarnings(statement, warnings) {
|
|
48726
|
+
if (!warnings?.length) return;
|
|
48727
|
+
sourceWarningsByDmlStatement.set(statement, [...new Set(warnings)]);
|
|
48728
|
+
}
|
|
48729
|
+
function outcomeWithResultWarnings(statement, result) {
|
|
48730
|
+
const warnings = sourceWarningsByDmlStatement.get(statement);
|
|
48731
|
+
return { result, ...warnings?.length ? { warnings } : {} };
|
|
48732
|
+
}
|
|
48724
48733
|
var statementEvaluationContextKey = /* @__PURE__ */ Symbol("statementEvaluationContext");
|
|
48725
48734
|
var importSourceMaterializedCallbackKey = /* @__PURE__ */ Symbol("importSourceMaterializedCallback");
|
|
48726
48735
|
var nativeUpsertExecutionKey = /* @__PURE__ */ Symbol("nativeUpsertExecution");
|
|
@@ -49511,13 +49520,17 @@ async function executeBatch(sql, client, options = {}) {
|
|
|
49511
49520
|
}
|
|
49512
49521
|
}
|
|
49513
49522
|
metrics.elapsedMs = Date.now() - startedAt;
|
|
49523
|
+
const warnings = [.../* @__PURE__ */ new Set([
|
|
49524
|
+
...dialect1Warnings,
|
|
49525
|
+
...results.flatMap((statement) => statement.warnings ?? [])
|
|
49526
|
+
])];
|
|
49514
49527
|
const batchResult = {
|
|
49515
49528
|
ok: results.every((r) => r.status === "success" || r.skippedReason === "exit"),
|
|
49516
49529
|
statementCount: statements.length,
|
|
49517
49530
|
statements: results,
|
|
49518
49531
|
analysis,
|
|
49519
49532
|
metrics,
|
|
49520
|
-
...
|
|
49533
|
+
...warnings.length > 0 ? { warnings } : {}
|
|
49521
49534
|
};
|
|
49522
49535
|
const observer = options[batchCompletionObserverKey];
|
|
49523
49536
|
if (observer) {
|
|
@@ -49628,7 +49641,7 @@ async function executeBatchStatement(context) {
|
|
|
49628
49641
|
}
|
|
49629
49642
|
await assertRelativeDateExecutionPlan(resolvedStmt, client, cacheContext);
|
|
49630
49643
|
if (resolvedStmt.type === "VALIDATE") {
|
|
49631
|
-
const
|
|
49644
|
+
const result2 = await executeExistingRecordValidationCore(
|
|
49632
49645
|
resolvedStmt,
|
|
49633
49646
|
client,
|
|
49634
49647
|
{ ...options, onLimitReached: "error" },
|
|
@@ -49638,19 +49651,20 @@ async function executeBatchStatement(context) {
|
|
|
49638
49651
|
appendValidationErrors(
|
|
49639
49652
|
tempTables,
|
|
49640
49653
|
resolvedStmt.errorTable,
|
|
49641
|
-
|
|
49642
|
-
|
|
49654
|
+
result2.columns,
|
|
49655
|
+
result2.rows,
|
|
49643
49656
|
options.tempTableMaxRows ?? TEMP_TABLE_MAX_ROWS,
|
|
49644
|
-
materializedMetaBySelectResult.get(
|
|
49657
|
+
materializedMetaBySelectResult.get(result2) ?? existingValidationColumnMeta(resolvedStmt.summary === true)
|
|
49645
49658
|
);
|
|
49646
49659
|
}
|
|
49647
|
-
return { result };
|
|
49660
|
+
return { result: result2 };
|
|
49648
49661
|
}
|
|
49649
49662
|
if (resolvedStmt.type === "IMPORT") {
|
|
49650
|
-
|
|
49663
|
+
const result2 = await executeImport(resolvedStmt, client, options, cacheContext, tempTables);
|
|
49664
|
+
return outcomeWithResultWarnings(resolvedStmt, result2);
|
|
49651
49665
|
}
|
|
49652
49666
|
if ("validateOnly" in resolvedStmt && resolvedStmt.validateOnly === true) {
|
|
49653
|
-
const
|
|
49667
|
+
const result2 = await executeDmlValidation(
|
|
49654
49668
|
resolvedStmt,
|
|
49655
49669
|
client,
|
|
49656
49670
|
{ ...options, onLimitReached: "error" },
|
|
@@ -49662,25 +49676,24 @@ async function executeBatchStatement(context) {
|
|
|
49662
49676
|
appendValidationErrors(
|
|
49663
49677
|
tempTables,
|
|
49664
49678
|
resolvedStmt.validationErrorTable,
|
|
49665
|
-
|
|
49666
|
-
|
|
49679
|
+
result2.columns,
|
|
49680
|
+
result2.errors,
|
|
49667
49681
|
options.tempTableMaxRows ?? TEMP_TABLE_MAX_ROWS,
|
|
49668
|
-
materializedMetaByValidationResult.get(
|
|
49682
|
+
materializedMetaByValidationResult.get(result2) ?? /* @__PURE__ */ new Map()
|
|
49669
49683
|
);
|
|
49670
49684
|
}
|
|
49671
|
-
return
|
|
49685
|
+
return outcomeWithResultWarnings(resolvedStmt, result2);
|
|
49672
49686
|
}
|
|
49673
49687
|
if ("onErrorSkip" in resolvedStmt && resolvedStmt.onErrorSkip === true) {
|
|
49674
|
-
|
|
49675
|
-
|
|
49676
|
-
|
|
49677
|
-
|
|
49678
|
-
|
|
49679
|
-
|
|
49680
|
-
|
|
49681
|
-
|
|
49682
|
-
|
|
49683
|
-
};
|
|
49688
|
+
const result2 = await executeOnErrorSkip(
|
|
49689
|
+
resolvedStmt,
|
|
49690
|
+
client,
|
|
49691
|
+
{ ...options, onLimitReached: "error" },
|
|
49692
|
+
cacheContext,
|
|
49693
|
+
tempTables,
|
|
49694
|
+
info.index + 1
|
|
49695
|
+
);
|
|
49696
|
+
return outcomeWithResultWarnings(resolvedStmt, result2);
|
|
49684
49697
|
}
|
|
49685
49698
|
if (resolvedStmt.type === "CREATE_TEMP_TABLE") {
|
|
49686
49699
|
const materializeOptions = {
|
|
@@ -49688,13 +49701,17 @@ async function executeBatchStatement(context) {
|
|
|
49688
49701
|
maxRecords: options.tempTableMaxRows ?? TEMP_TABLE_MAX_ROWS,
|
|
49689
49702
|
onLimitReached: "error"
|
|
49690
49703
|
};
|
|
49691
|
-
const
|
|
49704
|
+
const result2 = await runSelectLike(resolvedStmt.query, client, materializeOptions, cacheContext, tempTables);
|
|
49692
49705
|
tempTables.set(resolvedStmt.name, {
|
|
49693
|
-
rows:
|
|
49694
|
-
columns:
|
|
49695
|
-
columnMeta: materializedMetaBySelectResult.get(
|
|
49706
|
+
rows: result2.rows,
|
|
49707
|
+
columns: result2.columns,
|
|
49708
|
+
columnMeta: materializedMetaBySelectResult.get(result2)
|
|
49696
49709
|
});
|
|
49697
|
-
return {
|
|
49710
|
+
return {
|
|
49711
|
+
tempTable: resolvedStmt.name,
|
|
49712
|
+
rowCount: result2.rows.length,
|
|
49713
|
+
...result2.warnings?.length ? { warnings: [...result2.warnings] } : {}
|
|
49714
|
+
};
|
|
49698
49715
|
}
|
|
49699
49716
|
if (stmt.type === "DROP_TEMP_TABLE") {
|
|
49700
49717
|
tempTables.delete(stmt.name);
|
|
@@ -49710,12 +49727,12 @@ async function executeBatchStatement(context) {
|
|
|
49710
49727
|
}
|
|
49711
49728
|
}
|
|
49712
49729
|
if (resolvedStmt.type === "ASSERT") {
|
|
49713
|
-
const
|
|
49714
|
-
return
|
|
49730
|
+
const result2 = await executeAssert(resolvedStmt, client, options, cacheContext, tempTables);
|
|
49731
|
+
return result2.warning !== void 0 ? { result: result2 } : {};
|
|
49715
49732
|
}
|
|
49716
49733
|
if (resolvedStmt.type === "EXIT") {
|
|
49717
|
-
const
|
|
49718
|
-
return { result, ...
|
|
49734
|
+
const result2 = await executeExit(resolvedStmt, client, options, cacheContext, tempTables);
|
|
49735
|
+
return { result: result2, ...result2.exited ? { exitTriggered: true } : {} };
|
|
49719
49736
|
}
|
|
49720
49737
|
if (info.tempTablesReferenced.length > 0) {
|
|
49721
49738
|
if (resolvedStmt.type === "SELECT" || resolvedStmt.type === "UNION") {
|
|
@@ -49734,17 +49751,20 @@ async function executeBatchStatement(context) {
|
|
|
49734
49751
|
return { result: await executeWith(resolvedStmt, client, options, cacheContext, tempTables) };
|
|
49735
49752
|
}
|
|
49736
49753
|
if (resolvedStmt.type === "INSERT_SELECT") {
|
|
49737
|
-
|
|
49754
|
+
const result2 = await executeInsertSelect(resolvedStmt, client, options, cacheContext, tempTables);
|
|
49755
|
+
return outcomeWithResultWarnings(resolvedStmt, result2);
|
|
49738
49756
|
}
|
|
49739
49757
|
if (resolvedStmt.type === "UPSERT_SELECT") {
|
|
49740
|
-
|
|
49758
|
+
const result2 = await executeUpsertSelect(resolvedStmt, client, options, cacheContext, tempTables);
|
|
49759
|
+
return outcomeWithResultWarnings(resolvedStmt, result2);
|
|
49741
49760
|
}
|
|
49742
49761
|
if (resolvedStmt.type === "UPDATE" && resolvedStmt.from?.cteName != null) {
|
|
49743
49762
|
return { result: await executeUpdate(resolvedStmt, client, options, cacheContext, tempTables) };
|
|
49744
49763
|
}
|
|
49745
49764
|
throw new Error(`ArgumentError: temp table references in ${stmt.type} are not supported yet.`);
|
|
49746
49765
|
}
|
|
49747
|
-
|
|
49766
|
+
const result = await executeParsedStatement(resolvedStmt, client, options, cacheContext);
|
|
49767
|
+
return outcomeWithResultWarnings(resolvedStmt, result);
|
|
49748
49768
|
}
|
|
49749
49769
|
async function runSelectLike(query, client, options, cacheContext, tempTables) {
|
|
49750
49770
|
if (query.type === "WITH") {
|
|
@@ -50257,7 +50277,8 @@ async function buildWhereFieldSemanticsResolver(stmt, client, cacheContext, mate
|
|
|
50257
50277
|
return fromPhysical(stmt.from, field.field, true);
|
|
50258
50278
|
}
|
|
50259
50279
|
const matches = tables.flatMap((table) => {
|
|
50260
|
-
const
|
|
50280
|
+
const materialized = table.cteName !== null ? materializedTables?.get(table.cteName) : void 0;
|
|
50281
|
+
const semantics = table.cteName !== null ? resolveMaterializedColumn(materialized, field.field) !== void 0 ? resolveMaterializedColumnMeta(materialized, field.field)?.semantics ?? syntheticSemantics("string") : void 0 : fromPhysical(table, field.field, true);
|
|
50261
50282
|
return semantics ? [semantics] : [];
|
|
50262
50283
|
});
|
|
50263
50284
|
if (matches.length === 1) return matches[0];
|
|
@@ -51306,9 +51327,10 @@ function collectB86Subqueries(stmt) {
|
|
|
51306
51327
|
}
|
|
51307
51328
|
return queries;
|
|
51308
51329
|
}
|
|
51309
|
-
async function validateB86SelectFieldCodes(stmt, client, cteCache, cacheContext) {
|
|
51330
|
+
async function validateB86SelectFieldCodes(stmt, client, cteCache, cacheContext, cachedPhysicalFieldsOnly = false) {
|
|
51310
51331
|
const tables = [stmt.from, ...stmt.joins.map((join) => join.table)];
|
|
51311
51332
|
const materializedByTable = /* @__PURE__ */ new Map();
|
|
51333
|
+
const unavailableMaterializedTables = /* @__PURE__ */ new Set();
|
|
51312
51334
|
const effectiveAliases = /* @__PURE__ */ new Set();
|
|
51313
51335
|
for (const table of tables) {
|
|
51314
51336
|
const alias = effectiveTableAlias(table);
|
|
@@ -51322,6 +51344,10 @@ async function validateB86SelectFieldCodes(stmt, client, cteCache, cacheContext)
|
|
|
51322
51344
|
if (table.cteName === null || table.cteName === NO_FROM_CTE_NAME) continue;
|
|
51323
51345
|
const materialized = cteCache.get(table.cteName);
|
|
51324
51346
|
if (!materialized) {
|
|
51347
|
+
if (cachedPhysicalFieldsOnly) {
|
|
51348
|
+
unavailableMaterializedTables.add(table);
|
|
51349
|
+
continue;
|
|
51350
|
+
}
|
|
51325
51351
|
throw new Error(`ArgumentError: materialized source ${table.cteName} is not available.`);
|
|
51326
51352
|
}
|
|
51327
51353
|
if (materialized.rows.length > 0 && materialized.columns.length === 0) {
|
|
@@ -51338,6 +51364,16 @@ async function validateB86SelectFieldCodes(stmt, client, cteCache, cacheContext)
|
|
|
51338
51364
|
}
|
|
51339
51365
|
const schemas = /* @__PURE__ */ new Map();
|
|
51340
51366
|
await Promise.all(tables.map(async (table) => {
|
|
51367
|
+
if (unavailableMaterializedTables.has(table)) {
|
|
51368
|
+
schemas.set(table, {
|
|
51369
|
+
table,
|
|
51370
|
+
label: b86SourceLabel(table),
|
|
51371
|
+
validCodes: /* @__PURE__ */ new Set(),
|
|
51372
|
+
authoritative: false,
|
|
51373
|
+
schemaUnavailable: true
|
|
51374
|
+
});
|
|
51375
|
+
return;
|
|
51376
|
+
}
|
|
51341
51377
|
const materialized = materializedByTable.get(table);
|
|
51342
51378
|
if (materialized) {
|
|
51343
51379
|
schemas.set(table, {
|
|
@@ -51350,12 +51386,12 @@ async function validateB86SelectFieldCodes(stmt, client, cteCache, cacheContext)
|
|
|
51350
51386
|
return;
|
|
51351
51387
|
}
|
|
51352
51388
|
if (table.cteName === NO_FROM_CTE_NAME) return;
|
|
51353
|
-
const defs = await getFieldsCached(table.appId, client, cacheContext);
|
|
51389
|
+
const defs = cachedPhysicalFieldsOnly ? await getFieldsIfCached(table.appId, cacheContext) : await getFieldsCached(table.appId, client, cacheContext);
|
|
51354
51390
|
schemas.set(table, {
|
|
51355
51391
|
table,
|
|
51356
51392
|
label: b86SourceLabel(table),
|
|
51357
|
-
validCodes: new Set(defs.map((def) => def.code)),
|
|
51358
|
-
authoritative: defs.length > 0,
|
|
51393
|
+
validCodes: new Set((defs ?? []).map((def) => def.code)),
|
|
51394
|
+
authoritative: defs !== null && defs.length > 0,
|
|
51359
51395
|
schemaUnavailable: false
|
|
51360
51396
|
});
|
|
51361
51397
|
}));
|
|
@@ -55267,6 +55303,8 @@ async function executeImport(stmt, client, options, cacheContext, tempTables) {
|
|
|
55267
55303
|
importSourceByDmlStatement.set(generated, executionSource);
|
|
55268
55304
|
const withAudit = (result2) => {
|
|
55269
55305
|
if (executionSource.audit) Object.assign(result2, { importAudit: executionSource.audit });
|
|
55306
|
+
const warnings = sourceWarningsByDmlStatement.get(generated);
|
|
55307
|
+
if (warnings?.length) sourceWarningsByDmlStatement.set(stmt, warnings);
|
|
55270
55308
|
return result2;
|
|
55271
55309
|
};
|
|
55272
55310
|
if (generated.validateOnly) {
|
|
@@ -55556,6 +55594,7 @@ async function materializeDmlSource(stmt, client, options, cacheContext, tempTab
|
|
|
55556
55594
|
const imported = importSourceByDmlStatement.get(stmt);
|
|
55557
55595
|
if (!imported) {
|
|
55558
55596
|
const selected2 = tempTables && tempTables.size > 0 ? await executeQueryWithCte(stmt.select, client, options, tempTables, cacheContext, true) : await executeSelect(stmt.select, client, options, cacheContext, void 0, true);
|
|
55597
|
+
rememberDmlSourceWarnings(stmt, selected2.warnings);
|
|
55559
55598
|
return { rows: selected2.rows, columns: selected2.columns, columnMeta: materializedMetaBySelectResult.get(selected2) };
|
|
55560
55599
|
}
|
|
55561
55600
|
const payload = await loadImportSource(imported.handle, imported.cache);
|
|
@@ -55571,6 +55610,7 @@ async function materializeDmlSource(stmt, client, options, cacheContext, tempTab
|
|
|
55571
55610
|
const tables = new Map(tempTables ?? []);
|
|
55572
55611
|
tables.set(IMPORT_PROJECTION_SOURCE, raw);
|
|
55573
55612
|
const selected = await executeQueryWithCte(projection, client, { ...options, onLimitReached: "error" }, tables, cacheContext, true);
|
|
55613
|
+
rememberDmlSourceWarnings(stmt, selected.warnings);
|
|
55574
55614
|
return { rows: selected.rows, columns: selected.columns, columnMeta: materializedMetaBySelectResult.get(selected) };
|
|
55575
55615
|
}
|
|
55576
55616
|
var dmlSourceMaterializer = { materialize: materializeDmlSource };
|
|
@@ -57003,6 +57043,7 @@ async function buildExplainWhereAnalysis(query, client, cacheContext, maxRecords
|
|
|
57003
57043
|
const capabilities = /* @__PURE__ */ new Map();
|
|
57004
57044
|
const orderPlans = /* @__PURE__ */ new Map();
|
|
57005
57045
|
const plainGroupByPlans = /* @__PURE__ */ new Map();
|
|
57046
|
+
const explainSelectsForColumnCheck = [];
|
|
57006
57047
|
const seen = /* @__PURE__ */ new Set();
|
|
57007
57048
|
const sharedRelativeDatePlan = relativeDatePlan ?? await resolveRelativeDateExecutionPlan(query, tracedClient, cacheContext);
|
|
57008
57049
|
const relativeNodeFor = (source) => sharedRelativeDatePlan.nodes.find(
|
|
@@ -57136,6 +57177,13 @@ async function buildExplainWhereAnalysis(query, client, cacheContext, maxRecords
|
|
|
57136
57177
|
if (typed["type"] === "WITH") {
|
|
57137
57178
|
const withStatement = node;
|
|
57138
57179
|
for (const cte of withStatement.ctes) {
|
|
57180
|
+
if (cte.recursiveSpec) {
|
|
57181
|
+
const columns2 = recursiveOutputColumns(cte);
|
|
57182
|
+
if (cte.recursiveSpec.cycle) columns2.push(cte.recursiveSpec.cycle.markColumn);
|
|
57183
|
+
explainRelations.set(cte.name, { rows: [], columns: columns2 });
|
|
57184
|
+
await preflightExplainRelations(cte.query);
|
|
57185
|
+
continue;
|
|
57186
|
+
}
|
|
57139
57187
|
await preflightExplainRelations(cte.query);
|
|
57140
57188
|
if (cte.query.type === "GENERATE_SERIES") {
|
|
57141
57189
|
if (cte.query.args.some((arg) => arg.type === "VARIABLE")) {
|
|
@@ -57171,6 +57219,8 @@ async function buildExplainWhereAnalysis(query, client, cacheContext, maxRecords
|
|
|
57171
57219
|
if (typed["type"] === "SELECT") {
|
|
57172
57220
|
const select = node;
|
|
57173
57221
|
await bindProjectedNamesForSelectWithSchemas(select, explainRelations, tracedClient, cacheContext);
|
|
57222
|
+
await validateB86SelectFieldCodes(select, tracedClient, explainRelations, cacheContext, true);
|
|
57223
|
+
explainSelectsForColumnCheck.push(select);
|
|
57174
57224
|
analyzeStaticSelectRows(select);
|
|
57175
57225
|
for (const column of select.columns) {
|
|
57176
57226
|
if (column.type === "SCALAR_SUBQUERY_COL") await preflightExplainRelations(column.query);
|
|
@@ -57234,7 +57284,8 @@ async function buildExplainWhereAnalysis(query, client, cacheContext, maxRecords
|
|
|
57234
57284
|
const { resolver, rewrites } = await normalizeSelectChoiceEquality(
|
|
57235
57285
|
select,
|
|
57236
57286
|
tracedClient,
|
|
57237
|
-
cacheContext
|
|
57287
|
+
cacheContext,
|
|
57288
|
+
explainRelations
|
|
57238
57289
|
);
|
|
57239
57290
|
if (rewrites.length > 0) explainChoiceEqualityRewrites.set(select, rewrites);
|
|
57240
57291
|
const capability = classifyWhereCapability(select.where, resolver);
|
|
@@ -57432,6 +57483,9 @@ async function buildExplainWhereAnalysis(query, client, cacheContext, maxRecords
|
|
|
57432
57483
|
}));
|
|
57433
57484
|
}
|
|
57434
57485
|
}
|
|
57486
|
+
for (const select of explainSelectsForColumnCheck) {
|
|
57487
|
+
await validateB86SelectFieldCodes(select, tracedClient, explainRelations, cacheContext, true);
|
|
57488
|
+
}
|
|
57435
57489
|
return {
|
|
57436
57490
|
capabilities,
|
|
57437
57491
|
orderPlans,
|
|
@@ -59589,6 +59643,7 @@ function buildBatchEnvelope(batch, options = {}) {
|
|
|
59589
59643
|
if (s.status === "skipped" && s.skippedReason) entry.skippedReason = s.skippedReason;
|
|
59590
59644
|
if (s.tempTable !== void 0) entry.tempTable = s.tempTable;
|
|
59591
59645
|
if (s.rowCount !== void 0) entry.rowCount = s.rowCount;
|
|
59646
|
+
if (s.warnings?.length) entry.warnings = s.warnings;
|
|
59592
59647
|
if (s.status === "success" && s.result?.type === "SELECT") {
|
|
59593
59648
|
totalRows += s.result.rowCount;
|
|
59594
59649
|
if (maxTotalRecords !== void 0 && totalRows > maxTotalRecords) {
|
|
@@ -59645,8 +59700,9 @@ function buildBatchEnvelope(batch, options = {}) {
|
|
|
59645
59700
|
statementCount: batch.statementCount,
|
|
59646
59701
|
statements,
|
|
59647
59702
|
results,
|
|
59648
|
-
// バッチ全体の警告(仕様 §6.2
|
|
59649
|
-
|
|
59703
|
+
// バッチ全体の警告(仕様 §6.2)=dialect 1 の警告 + 結果セットを持たない文(CREATE TEMP TABLE・
|
|
59704
|
+
// SELECT-based DML)の実行時警告(B188・文順・重複なし)。SELECT の文ごとの警告は従来どおり results[].warnings
|
|
59705
|
+
warnings: batch.warnings ?? []
|
|
59650
59706
|
};
|
|
59651
59707
|
}
|
|
59652
59708
|
|